调用CreateProcessW(Mobile MFC)时BSTR到LPCWSTR的转换

时间:2013-07-29 07:19:14

标签: c++ visual-studio visual-c++ mfc visual-c++-2010

我有一个在Windows Mobile 6上运行的小型activex控件。当我硬编码应用程序名称 L“\ blah \ blah.exe”时,我能够使用api CreateProcessW

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

我不是风险投资专家,我只需要这样做,所以我的问题是。

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

     BSTR app = NULL;
    
    _host->GetAppString(_T("app"),&app);
    
         CreateProcessW(app,L"22222",0,0,0,0,0,0,0,&processInformation);
    

    字符集是Unicode。

    由于

1 个答案:

答案 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);