我有一个在Windows Mobile 6上运行的小型activex控件。当我硬编码应用程序名称 L“\ blah \ blah.exe”时,我能够使用api CreateProcessW
当我调用另一个返回BSTR的API时,该BSTR包含我想传递给CreateProcessW的应用程序,它不起作用。我已检查并填充了应用程序字符串,但我猜测我在BSTR和LPCWSTR之间存在转换问题(宽cha错误?)。我试过用OLE2CW和OLE2W转换它。
我不是风险投资专家,我只需要这样做,所以我的问题是。
没有任何转换的代码示例:
BSTR app = NULL;
_host->GetAppString(_T("app"),&app);
CreateProcessW(app,L"22222",0,0,0,0,0,0,0,&processInformation);
字符集是Unicode。
由于
答案 0 :(得分:0)
根据this MSDN article(也是this SO article),您可以使用wchar_t
类提取_bstr_t
指针,例如
_bstr_t bsApp(app, true);
wchar_t *pApp = (wchar_t *)bsApp;
CreateProcessW(pApp, L"22222", 0, 0, 0, 0, 0, 0, 0, &processInformation);
编辑:使用CString
CStringW ss = app:
CreateProcessW(ss, L"22222", 0, 0, 0, 0, 0, 0, 0, &processInformation);