Форум: "WinAPI";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизКак убить процесс сеанса дос. Найти похожие ветки
← →
Chup (2001-12-03 16:16) [0]Я выполняю *.bat файл с помощью
procedure TForm1.Button1Click(Sender: TObject);
var si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline:string;
begin ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
cmdline:="wer.bat";
if not CreateProcess( nil,
PChar(cmdline),
nil,
nil,
False,
0,
nil,
nil,
si,
pi )
then
begin
ShowMessage( "CreateProcess failed." );
Exit;
end;
WaitforSingleObject(Pi.hProcess,INFINITE);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;
Остается черное окно , как его убить?
← →
Holms (2001-12-04 22:58) [1]Вообще никаких окон
String fScript = ExtractFilePath(ParamStr(0)) + "temp.sam";
Memo1->Lines->SaveToFile(fScript);
String filename = ExtractFilePath(ParamStr(0)) + "samx.exe";
String fArg = fScript;
SECURITY_ATTRIBUTES sa;
ZeroMemory(&sa, sizeof(sa));
sa.nLength = sizeof(sa);
sa.bInheritHandle = true;
HANDLE hRead, hWrite;
if(!CreatePipe(&hRead, &hWrite, &sa, 0)){
ShowMessage("Cannot create pipe");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.hStdOutput = hWrite;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USECOUNTCHARS | STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.dwXCountChars = si.dwYCountChars = 1;
filename += " temp.sam " + Edit1->Text;
CreateProcess(
NULL, // шыш ы?ср фЁєур яЁюуЁрььр
filename.c_str(),
NULL,
NULL,
TRUE,
0,
NULL,
NULL,
&si,
&pi);
CloseHandle(hWrite);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
String rez;
char temp[255];
DWORD dwBytesRead;
while(1){
memset(temp, 0, 255);
if(!ReadFile(hRead, temp, 255, &dwBytesRead, NULL) || !dwBytesRead)
break;
rez += temp;
}
// ShowMessage(rez);
Memo2->Lines->Add(rez);
← →
Mick (2001-12-05 16:14) [2]Если CmdLine будет такого вида:
"Command.com <имя_запускемого_дос_приложения>",
то окно закроется само
← →
NA (2001-12-06 00:04) [3]"Command.com <имя_запускемого_дос_приложения> /C" - ты хотел сказать, наверное?
P. S. А ввобще можно пойти маразматическим путем - убить окно, найдя его по заголовку :D
← →
Кто-то (2001-12-06 03:49) [4]Где-то читал, что если последней строчкой в bat-е поставить cls, то окно само закроется.
← →
Mick (2001-12-06 09:24) [5]to NA
Я хотел сказать:
"Command.com /C <имя_запускаемого_дос_приложения>"
← →
AlexKniga (2001-12-06 17:22) [6]CmdLine:="Start wer.bat"
← →
N_A (2001-12-08 23:09) [7]Кстати говоря, вся эта шняга зависит от того, как настроены конкретные command.pif и default.pif в конкретной системе.
Может статься, что останется висеть все то же черное окно с заголовком "(Сеанс завершён) - Сеанс MS-DOS", и никакой /C тут не поможет.
Кто-то: если поставить cls, то окно само очистится от изображения.
Mick: Точно. Мы оба хотели это сказать, но как-то забыли :)
← →
Кто-тто (2001-12-09 01:52) [8]2 бывший NA
Не пробовал bat через CreateProcess, но при запуске bat обычными средствами Windows, именно закрывается окно ДОСа, если поставить cls.
← →
Anatoly Podgoretsky (2001-12-09 16:15) [9]Этого не достаточно, надо что бы не только последней, но еще и не законченой
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c