0

我有一个在 Windows mobile 6 上运行的小型 activex 控件。当我对应用程序名称L"\blah\blah.exe"进行硬编码时,我可以使用 api CreateProcessW

当我调用另一个返回包含我要传递给 CreateProcessW 的应用程序的 BSTR 的 API 时,它不起作用。我已经检查并填充了应用程序字符串,但我猜我在 BSTR 和 LPCWSTR (Wide cha error?) 之间遇到了转换问题。我试过用 OLE2CW 和 OLE2W 转换它。

我不是风险投资专家,我只需要让它工作,所以我的问题是。

  1. 当我通过 API 收到 BSTR 时,如何将其转换为能够将其传递给 CreateProcessW 中的 Application 参数?这是 Windows Mobile 6 (Wince 5.2)。一个代码片段会很棒。

没有任何转换的代码示例:

 BSTR app = NULL;

_host->GetAppString(_T("app"),&app);

     CreateProcessW(app,L"22222",0,0,0,0,0,0,0,&processInformation);

字符集是 Unicode。

谢谢

4

1 回答 1

0

According to this MSDN article (also this SO article), you can extract a wchar_t pointer by using the _bstr_t class, like

_bstr_t bsApp(app, true);
wchar_t *pApp = (wchar_t *)bsApp;
CreateProcessW(pApp, L"22222", 0, 0, 0, 0, 0, 0, 0, &processInformation);

EDIT: using CString

CStringW ss = app:
CreateProcessW(ss, L"22222", 0, 0, 0, 0, 0, 0, 0, &processInformation);
于 2013-07-29T09:05:51.093 回答