C ++中的CreateObject等效于什么? [英] what is equivalent of CreateObject in c++?
本文介绍了C ++中的CreateObject等效于什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,亲爱的
我想将以下代码从vb转换为c ++/mfc.
hello dears
i want convert this below code from vb to c++/mfc.
Set objNet = CreateObject("WScript.NetWork")
c = c & "UserName: " & objNet.UserName & vbCrLf
c = c & "ComputerName: " & objNet.ComputerName & vbCrLf
c = c & "DomainName: " & objNet.UserDomain & vbCrLf
我在c ++中使用以下代码.
但我不知道如何获取"UserName"或"ComputerName".
i use this below code in c++.
but i don''t know how to get "UserName" or "ComputerName".
CoInitializeEx(0, COINIT_MULTITHREADED);
CLSID clsid;
HRESULT hr = CLSIDFromProgID(L"WScript.NetWork", &clsid);
if(FAILED(hr))
{
printf("CLSIDFromProgID() failed");
return;
}
IDispatch *pWApp;
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL,IID_IUnknown, (void **)&pWApp);
if(FAILED(hr)) {
printf("CoCreateInstance() failed");
return;
}
DISPID dispID;
VARIANT pvResult;
LPOLESTR ptName=L"AddPrinterConnection";
unsigned int FAR* pctinfo;
pctinfo=new unsigned int FAR[1000];
/*
但是当我运行这两行代码时,程序有错误.
*/
/*
but when i run this two lines of code the program has error.
*/
pWApp->GetTypeInfoCount(pctinfo);
hr = pWApp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID);
推荐答案
尝试使用IID_IDispatch
代替IID_IUnknown
.这是带有GetTypeInfoCount
和GetIDsOfNames
的那个.
无论如何,我建议使用以下内容:
Instead ofIID_IUnknown
, tryIID_IDispatch
. This is the one withGetTypeInfoCount
andGetIDsOfNames
.
Anyway, I''d suggest using the following:
#import "C:\WINDOWS\system32\wshom.ocx" named_guids rename_namespace("ws")
您将在名称空间"ws"中获得一些智能指针.
希望这会有所帮助,
巴勃罗.
You''ll get some smart pointers in namespace "ws".
Hope this helps,
Pablo.
这篇关于C ++中的CreateObject等效于什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文