C ++中的CreateObject等效于什么? [英] what is equivalent of CreateObject in c++?

查看:150
本文介绍了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.这是带有GetTypeInfoCountGetIDsOfNames的那个.
无论如何,我建议使用以下内容:
Instead of IID_IUnknown, try IID_IDispatch. This is the one with GetTypeInfoCount and GetIDsOfNames.
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆