Re: Консольные приложения
От: konst  
Дата: 27.02.02 07:44
Оценка:
DOS-программку можно запускать не только шелл-экзэкьютом, но и при помощи CreateProcess, так получешь хэндлы её процесса и главного потока. Вот какой вариант могу предложить (эти цифры -200 с чем-то, не обращай на них внимания, просто так вот уж получилось :) ):
memset(&si, 0, sizeof(si));
si.cb = sizeof(STARTUPINFO);
if( fHideWnd )
{
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
}
if( !CreateProcess(NULL, (LPSTR)path, NULL,NULL,TRUE, CREATE_NO_WINDOW|NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi) )
return -201;
if( (ret=WaitForSingleObject(pi.hProcess, 1800000)) == WAIT_TIMEOUT ) return -202;
else if(ret != WAIT_OBJECT_0 ) ret = (DWORD)-202; else ret = 0;
if(!GetExitCodeProcess(pi.hProcess, &ret))
return -203;
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return ret;

тут есть только непонятная переменна "path", вот что это
для НТ: cmd /c <имя дос-программы и её параметры>
для 9Х: command.com /c <имя дос-программы и её параметры>
если это консольное приложение, то, конечно, никаких "cmd" не надо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.