実施したいこと
コマンドラインでアプリにGUIDを渡して起動したい。
質問
起動パラメータとしてGUIDクラスを据えたExeを、呼び出し元でGUIDクラスを使ってコマンドラインを生成し、呼び出すことはできるのでしょうか。
試したこと
C++
1GUID guid = { 2 0x11223344, 0x5566, 0x7788, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x11 3}; 4wchar_t comandLine[500] = {}; 5swprintf_s(comandLine, L"\"%s\" \"%s\"", Exeパス, guid); 6STARTUPINFO si = {}; 7ZeroMemory(&si, sizeof(si)); 8si.cb = sizeof(si); 9PROCESS_INFORMATION pi = {}; 10CreateProcessW( NULL, comandLine, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi)
上記だと、swprintf_s関数で変換エラーがでます。
%sに限らず、基本的なフォーマット指定子(%d,%fなど)では一律同様のエラーとなってしまいます。
妥協点として考えている方法
呼び出し先のアプリの起動パラメータをGUID文字列変更。
呼び出し元(試したことに記載のコード)にGUIDの文字列変換を追加して、コマンドラインに反映。
C++
1GUID guid = { 2 0x11223344, 0x5566, 0x7788, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x11 3}; 4std::wstring oGuidString; 5RPC_WSTR waString; 6::UuidToString( pGuid, &waString ) 7wchar_t comandLine[500] = {}; 8swprintf_s(comandLine, L"\"%s\" \"%s\"", Exeパス, guid); 9STARTUPINFO si = {}; 10ZeroMemory(&si, sizeof(si)); 11si.cb = sizeof(si); 12PROCESS_INFORMATION pi = {}; 13CreateProcessW( NULL, comandLine, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi)
回答2件
あなたの回答
tips
プレビュー