Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<Windows.h>
- #include<stdio.h>
- #include<conio.h>
- #import "klasanet.tlb" no_namespace
- DEFINE_GUID(IID_IKlasa, 0x4d764d3c, 0x1139, 0x4743, 0xb5, 0x9e, 0xde, 0x29, 0xad, 0x49, 0xd5, 0xdf);
- DEFINE_GUID(CLSID_Klasa, 0xab128831, 0x9f76, 0x46b6, 0x99, 0x33, 0xd3, 0xe6, 0xf3, 0x54, 0x8d, 0x8a);
- int main() {
- bool flag = 0;
- if (flag) {
- HRESULT rc;
- OLECHAR filename[MAX_PATH];
- ITypeLib *tl;
- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
- // rejestracja
- mbstowcs(filename, "klasanet.tlb", sizeof(filename));
- rc = LoadTypeLibEx(filename, REGKIND_REGISTER, &tl);
- if (rc == S_OK) {
- return 0;
- }
- }
- printf("starting\n");
- IKlasaN *k;
- HRESULT rv;
- CoInitializeEx(NULL, COINIT_MULTITHREADED);
- //w przypadku serwera w dll-ce (inproc)
- rv = CoCreateInstance(__uuidof(KlasaN), NULL, CLSCTX_ALL, __uuidof(IKlasaN), (void **)&k);
- //w przypadku surrogate i serwera w exeku:
- //rv = CoCreateInstance(CLSID_Klasa, NULL, CLSCTX_LOCAL_SERVER, IID_IKlasa, (void **)&k);
- //printf("res = %08X (%s)\n", rv, rv == S_OK ? "OK" : "bad");
- //if(rv != S_OK) {
- // printf("error creating instance gle=%08X %d\n", GetLastError(), GetLastError());
- // CoUninitialize();
- // return 0;
- // };
- // udało się stworzyć klasę
- long val;
- k->Push(1);
- k->Push(2);
- // tylko dla inproc-a
- printf("%d\n", k->Pop(&val));
- printf("%d\n", k->Pop(&val));
- //k->Pop(&val); printf("%d\n", val);
- //k->Pop(&val); printf("%d\n", val);
- //k->PopEx(&val); printf("%d\n", val);
- //rv = k->PopEx(&val); printf("%d\n", val);
- //printf("%08X (%s)\n", rv, rv == E_FAIL ? "E_FAIL" : "other");
- // po użyciu trzeba zwolnić
- k->Release();
- printf("done\n");
- CoUninitialize();
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement