Показать сообщение отдельно
Старый 13.01.2005, 18:42   #6   
Registered User
 
Сообщений: 67
Регистрация: 08.07.2003
Возраст: 45

Fisher вне форума Не в сети
Цитата:
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);

}
}
  Ответить с цитированием