home *** CD-ROM | disk | FTP | other *** search
/ ActiveX Programming Unleashed CD / AXU.iso / source / chap04 / lst41use / lst41use.cpp next >
Encoding:
C/C++ Source or Header  |  1996-10-10  |  1.5 KB  |  71 lines

  1. #include <objbase.h>
  2. #include <initguid.h>
  3. #include <stdio.h>                
  4.  
  5.  
  6. DEFINE_GUID(CLSID_CLst41,0x9FBBEDE5L,0x1B40,0x11D0,0x88,0xE0,0x00,0xAA,0x00,0x4A,0x7C,0x7B);
  7.  
  8.  
  9. LPSTR BstrToSz(LPCOLESTR pszW)
  10. {
  11.     ULONG cbAnsi, cCharacters;
  12.     DWORD dwError;
  13.     LPSTR lpString;
  14.  
  15.     if(pszW == NULL)
  16.         return NULL;
  17.  
  18.     cCharacters = wcslen(pszW) + 1;
  19.  
  20.     cbAnsi = cCharacters * 2;
  21.  
  22.     lpString = (LPSTR) CoTaskMemAlloc(cbAnsi);
  23.  
  24.     if(NULL == lpString)
  25.         return NULL;
  26.  
  27.     if(WideCharToMultiByte(CP_ACP, 0, pszW, cCharacters, lpString, cbAnsi, NULL, NULL) == 0)
  28.     {
  29.         dwError = GetLastError();
  30.         CoTaskMemFree(lpString);
  31.         lpString = NULL;
  32.     }
  33.  
  34.     return lpString;
  35. }
  36.  
  37. void main()
  38. {
  39.  
  40.     HRESULT hr;
  41.     IDispatch *pIDispatch;
  42.     DISPPARAMS dispparms = {NULL, NULL, 0,0};
  43.     DISPID dispidGetMachineName;
  44.     OLECHAR *pGetMachineName = L"GetMachineName";
  45.     IUnknown *pIUnknown;
  46.     VARIANT varResult;
  47.  
  48.  
  49.  
  50.     hr = OleInitialize(NULL);
  51.  
  52.     hr = CoCreateInstance(CLSID_CLst41, 0, CLSCTX_SERVER, IID_IUnknown, (void**)&pIUnknown);
  53.  
  54.     if(FAILED(hr))
  55.         printf("the error is %x\n", hr); 
  56.  
  57.     pIUnknown->QueryInterface(IID_IDispatch, (void**)&pIDispatch);
  58.     pIUnknown->Release();
  59.  
  60.     pIDispatch->GetIDsOfNames(IID_NULL,
  61.                             &pGetMachineName,
  62.                             1, LOCALE_SYSTEM_DEFAULT, &dispidGetMachineName);
  63.     pIDispatch->Invoke(dispidGetMachineName, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispparms,
  64.                     &varResult, NULL, NULL);
  65.  
  66.     printf("The Computer Name is %s\n", BstrToSz(varResult.bstrVal));
  67.  
  68.  
  69.     pIDispatch->Release();
  70.     CoUninitialize();
  71. }