【发布时间】:2013-07-29 07:19:14
【问题描述】:
我有一个在 Windows mobile 6 上运行的小型 activex 控件。当我对应用程序名称 L"\blah\blah.exe" 进行硬编码时,我可以使用 api CreateProcessW 。
当我调用另一个返回 BSTR 的 API 时,该 API 包含我要传递给 CreateProcessW 的应用程序,它不起作用。我已经检查并填充了应用程序字符串,但我猜我在 BSTR 和 LPCWSTR (Wide cha error?) 之间遇到了转换问题。我试过用 OLE2CW 和 OLE2W 转换它。
我不是 VC 专家,我只需要让它发挥作用,所以我的问题是。
- 当我通过 API 收到 BSTR 时,如何将其转换为能够将其传递给 CreateProcessW 中的 Application 参数?这是 Windows Mobile 6 (Wince 5.2)。一个 Code sn-p 会很棒。
没有任何转换的代码示例:
BSTR app = NULL;
_host->GetAppString(_T("app"),&app);
CreateProcessW(app,L"22222",0,0,0,0,0,0,0,&processInformation);
字符集是 Unicode。
谢谢
【问题讨论】:
-
无需转换 BSTR,它与 LPCWSTR 兼容。在您添加正确的错误处理以便您知道为什么它失败之前,这不会变得更好。
-
嗨,汉斯,我确实添加了错误处理,但没有将它添加到顶部。我得到的唯一错误是系统找不到指定的文件。我相信 BSTR 字符串与不是 32 位的 Windows CE 系统上的 LPCWSTR 不完全兼容。
-
“找不到文件”是一个非常常见的错误,我们不太可能帮助您找到文件。确保它是完整路径,例如 c:\foo\bar\baz.exe。您当然应该在您的问题中记录这一点。不,CE 是 32 位的。
-
您对 CE 的看法是正确的。没有文件路径 C:\。 CE 文件路径是 \\.我知道路径是正确的。我指定了它的硬编码。如果我的问题激怒了你并且我没有给你足够的信息,请忽略我的问题。我很抱歉。
标签: c++ visual-studio visual-c++ mfc visual-c++-2010