0

Windows モバイル 6 で実行されている小さな ActiveX コントロールがあります。アプリケーション名L"\blah\blah.exe"をハードコーディングすると、API CreateProcessWを使用できます。

CreateProcessW に渡したいアプリケーションを含む BSTR を返す別の API を呼び出すと、機能しません。確認したところ、アプリケーション文字列が入力されていますが、BSTR と LPCWSTR の間で変換の問題が発生していると推測されます (Wide cha error?) 。OLE2CWとOLE2Wで変換してみました。

私はVCの専門家ではなく、これを機能させるだけでよいので、質問があります。

  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

この MSDN の記事(また、この SO の記事) によると、次のようにクラス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);
于 2013-07-29T09:05:51.093 に答える