Use CreateProcessW instead of CreateProcessA

pull/16/merge
Tatsuhiro Tsujikawa 2012-04-07 23:57:49 +09:00
parent 3f7561b80c
commit ef86d760cc
1 changed files with 16 additions and 12 deletions

View File

@ -1515,7 +1515,7 @@ void executeHook
} }
#else #else
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
STARTUPINFO si; STARTUPINFOW si;
memset(&si, 0, sizeof (si)); memset(&si, 0, sizeof (si));
si.cb = sizeof(STARTUPINFO); si.cb = sizeof(STARTUPINFO);
@ -1549,10 +1549,14 @@ void executeHook
if(batch) { if(batch) {
cmdline += "\""; cmdline += "\"";
} }
int cmdlineLen = utf8ToWChar(0, 0, cmdline.c_str());
assert(cmdlineLen > 0);
array_ptr<wchar_t> wcharCmdline(new wchar_t[cmdlineLen]);
cmdlineLen = utf8ToWChar(wcharCmdline, cmdlineLen, cmdline.c_str());
assert(cmdlineLen > 0);
A2_LOG_INFO(fmt("Executing user command: %s", cmdline.c_str())); A2_LOG_INFO(fmt("Executing user command: %s", cmdline.c_str()));
DWORD rc = CreateProcess( DWORD rc = CreateProcessW(batch ? utf8ToWChar(cmdexe).c_str() : NULL,
batch ? cmdexe.c_str() : NULL, wcharCmdline,
(LPSTR)cmdline.c_str(),
NULL, NULL,
NULL, NULL,
true, true,