ローカルの「プログラムファイル」ディレクトリパスを取得し、それに追加のパスを追加して、単純に実行しようとしています。うまく動かせない..
これは私の現在のコードです:
wchar_t* localAppData = 0;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, &localAppData);
wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";
CreateProcess(static_cast<void*>(localAppData));
私はSHGetFolderPathのためにこれを取得しています:
cannot convert parameter 5 from wchar_t ** to LPWSTR
また、ヘッダーに sstream を含めても、次のエラーが発生します。
'wstringstream' : undeclared identifier
注: XP と Vista/7 の両方で動作するために必要なため、SHGetFolderPath を使用しています。
編集:
上記のコードに間違いがあったためlocalAppData
、パス全体を実行するのではなく、'Program Files' ディレクトリへのパスを実行しようとしました。
しかし、関数で var のss
代わりにlocalAppData
varを使用しようとするとCreateProcess
、間違ったタイプの var を使用しているというエラーが表示されます (LPCWSTR を使用する必要があります)。
しかし、これを試してもうまくいきません..エラーはありませんが、アプリケーションは実行されていません.何が欠けていますか?
wchar_t localAppData[MAX_PATH];
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, localAppData);
std::wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";
LPCWSTR str = ss.str().c_str();
CreateProcess(str, NULL,NULL, NULL,FALSE,NULL,NULL,NULL,&sInfo,&pInfo);
return str;
何か案は?