Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизCreateProcess в Win2k Найти похожие ветки
← →
Onyx (2004-02-05 09:01) [0]Почему CreateProcess не хочет перенаправлять вывод в файл при запуске консольного приложения? И хочу заметить, что в Win98 все нормально, а в Win2k никак не хочет.
var
si : STARTUPINFO;
pi : PROCESS_INFORMATION;
HFile : Cardinal;
ComLine : string;
begin
ComLine:="tasm32.exe /ml 1.asm";
HFile:= FileCreate("ASMP.tmp");
ZeroMemory(@si,sizeof(si));
si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow:=SW_HIDE;
si.hStdInput:= GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput:= HFile; //вывод направляем в файл
si.hStdError:= GetStdHandle(STD_ERROR_HANDLE);
si.cb:=SizeOf(si);
if CreateProcess(nil, PChar(ComLine), nil, nil, false, 0,
nil,nil, si, pi) then
begin
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
FileClose( HFile );
end;
end;
Вот ёще вариант:begin
ComLine:="tasm32.exe /ml 1.asm";
HFile:= FileCreate("ASMP.tmp");
SetStdHandle(STD_OUTPUT_HANDLE, HFile);
ZeroMemory(@si,sizeof(si));
si.dwFlags:=STARTF_USESHOWWINDOW;
si.wShowWindow:=SW_HIDE;
si.cb:=SizeOf(si);
if CreateProcess(nil, PChar(ComLine), nil, nil, true, 0,
nil,nil, si, pi) then
//запуск процесса с наследованием описателей
begin
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
FileClose( HFile );
end;
end;
И оба эти варианта не хотят работать под Win2k.
← →
AKul © (2004-02-05 09:50) [1]
> Onyx (05.02.04 09:01)
Ну это же NT.
Все исправления относятся к 1 варианту.
1. Необходимо разрешить наследование Handle"а файла, например, так (SA: SECURITY_ATTRIBUTES):
SA.nLength:=sizeof(SA);
SA.lpSecurityDescriptor:=nil;
SA.bInheritHandle:=true;
HFile:=CreateFile("SomeFile.tmp",GENERIC_READ or GENERIC_WRITE,0,
@SA,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
2. Разрешить дочернему процессу наследовать Handle"ы родительского:
if CreateProcess(nil, PChar(ComLine), nil, nil, true, 0,
nil,nil, si, pi) then
← →
Onyx (2004-02-05 10:29) [2]Попробуем...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.043 c