home *** CD-ROM | disk | FTP | other *** search
- #include <objbase.h>
- #include <initguid.h>
- #include <stdio.h>
-
-
- DEFINE_GUID(CLSID_CLst41,0x9FBBEDE5L,0x1B40,0x11D0,0x88,0xE0,0x00,0xAA,0x00,0x4A,0x7C,0x7B);
-
-
- LPSTR BstrToSz(LPCOLESTR pszW)
- {
- ULONG cbAnsi, cCharacters;
- DWORD dwError;
- LPSTR lpString;
-
- if(pszW == NULL)
- return NULL;
-
- cCharacters = wcslen(pszW) + 1;
-
- cbAnsi = cCharacters * 2;
-
- lpString = (LPSTR) CoTaskMemAlloc(cbAnsi);
-
- if(NULL == lpString)
- return NULL;
-
- if(WideCharToMultiByte(CP_ACP, 0, pszW, cCharacters, lpString, cbAnsi, NULL, NULL) == 0)
- {
- dwError = GetLastError();
- CoTaskMemFree(lpString);
- lpString = NULL;
- }
-
- return lpString;
- }
-
- void main()
- {
-
- HRESULT hr;
- IDispatch *pIDispatch;
- DISPPARAMS dispparms = {NULL, NULL, 0,0};
- DISPID dispidGetMachineName;
- OLECHAR *pGetMachineName = L"GetMachineName";
- IUnknown *pIUnknown;
- VARIANT varResult;
-
-
-
- hr = OleInitialize(NULL);
-
- hr = CoCreateInstance(CLSID_CLst41, 0, CLSCTX_SERVER, IID_IUnknown, (void**)&pIUnknown);
-
- if(FAILED(hr))
- printf("the error is %x\n", hr);
-
- pIUnknown->QueryInterface(IID_IDispatch, (void**)&pIDispatch);
- pIUnknown->Release();
-
- pIDispatch->GetIDsOfNames(IID_NULL,
- &pGetMachineName,
- 1, LOCALE_SYSTEM_DEFAULT, &dispidGetMachineName);
- pIDispatch->Invoke(dispidGetMachineName, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispparms,
- &varResult, NULL, NULL);
-
- printf("The Computer Name is %s\n", BstrToSz(varResult.bstrVal));
-
-
- pIDispatch->Release();
- CoUninitialize();
- }