Цитата:
CreateProcess(NULL,
(LPTSTR)&m_strFileName,//эта строка не работает
|
Не строка это вовсе. Никто не обещал, что внутренний буфер CString находится вначале. Здесь нужно было написать m_strFileName.GetBuffer() (возвращает неконстантную строку).
Цитата:
|
//"C:\\Program Files\\Cpuz\\cpuz.exe",//эта работает прекрасно
|
Это повезло, что работает. Вторым аргументом к этой функции должна быть неконстантная строка (CreateProcess ее модифицирует).
Цитата:
|
Да и заодно второй вопрос может кто делал так:этот проц не только запустить нужно но и проследить когда он скажет пока(WM_QUIT) все это время пока он работает нужно еще в проге действия некоторые производить.
|
Создаешь отдельную нить, в которой будешь запускать процесс:
//
DWORD dwThreadID;
HANDLE hThread = CreateThread(NULL, 0, proc_start_thread, (PVOID) &listenWndHandle, 0, &dwThreadId);
//
DWORD WINAPI proc_start_thread(LPVOID args)
{
HWND listenWnd = *((HWND*)args);
PROCESS_INFORMATION pi;
DWORD dwExitCode;
BOOL success = CreateProcess(..., &pi);
if (success) {
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &dwExitCode);
CloseHandle(pi.hProcess);
PostMessage(listenWnd, WM_MYAPP_PROC_FINISHED);
}
}