Текущий архив: 2009.05.10;
Скачать: CL | DM;
Вниз
Как спрятать вывод на консоль? Найти похожие ветки
← →
Zheksonz (2009-03-24 19:19) [0]Вечер добрый. Использую следующий код для запуска консольной программы и ожидания её завершения:
procedure StartDistr;
var si: STARTUPINFO;
pi: PROCESS_INFORMATION;
cmdline: string;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
cmdline := ExtractFilePath(ParamStr(0)) + "DNE.EXE";
Form2.Show;
Application.ProcessMessages;
if not CreateProcess( nil, { No module name (use command line). }
PChar(cmdline), { Command line. }
nil, { Process handle not inheritable. }
nil, { Thread handle not inheritable. }
False, { Set handle inheritance to FALSE. }
0, { No creation flags. }
nil, { Use parent"s environment block. }
nil, { Use parent"s starting directory. }
si, { Pointer to STARTUPINFO structure. }
pi ) { Pointer to PROCESS_INFORMATION structure. }
then
begin
ShowMessage( "CreateProcess failed." );
Exit;
end;
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;
как мне спрятать вывод на консоль и где можно почитать про параметры STARTUPINFO и PROCESS_INFORMATION.
← →
Palladin © (2009-03-24 19:24) [1]
> где можно почитать про параметры STARTUPINFO и PROCESS_INFORMATION.
Глупый вопрос. Тебе не кажется?
← →
Riply © (2009-03-24 19:25) [2]> где можно почитать про параметры STARTUPINFO и PROCESS_INFORMATION
В Help`е ?
← →
Немо © (2009-03-25 09:02) [3]у меня и так этот код не показывает консоль
← →
Zhekson (2009-03-25 09:48) [4]прошу прощения, поспешил с вопросом...
сейчас ситуация такая:
si.dwFlags := STARTF_USESHOWWINDOW
si.wShowWindow := SW_HIDE;
на моём рабочем и домашнем компе установка этих опций скрывает консоль, а вот на третьем компьютере, консоль не скрывается((( Удивительно то, что запускается одно и то же ДОСовское приложение и даже система стоит с одного DVD диска.
полез тогда в свойства CreateProcess, установил флаг CREATE_NO_WINDOW, что позволило убрать код:
si.dwFlags := STARTF_USESHOWWINDOW
si.wShowWindow := SW_HIDE;
и консоль скрывается, но, чисто теоретически, где вероятность что на третьем компе она опять не появится??? пока возможности испытать нет((
← →
Zhekson (2009-03-25 10:52) [5]с флагом
CREATE_NO_WINDOW
, на третьем компе, вообще перестало запускаться приложение, выдавая следующее сообщение:
"16-разрядная подсистема MS-DOS
не удалось провести инициализацию режима для видеоустройства"
итого имеем:si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
не срабатывает
аCREATE_NO_WINDOW
вообще не запускает приложение...
← →
Anatoly Podgoretsky © (2009-03-25 13:16) [6]> Riply (24.03.2009 19:25:02) [2]
Это слишком просто.
← →
Zhekson (2009-03-26 16:10) [7]Anatoly Podgoretsky © (25.03.09 13:16) [6]
это слишком просто для тех, кто сначала думает, а потом делает... ;)
В моем же случае просто необходимо сначала "шишек набить" (((
в общем флаг CREATE_NO_WINDOW сработал, при обязательном выключении полноэкранности запускаемого приложения.
← →
Anatoly Podgoretsky © (2009-03-26 16:45) [8]У тебя это великолепно выходит.
Страницы: 1 вся ветка
Текущий архив: 2009.05.10;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.008 c