Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.04;
Скачать: CL | DM;

Вниз

Как убить процесс сеанса дос.   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2002.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-8807
AlexHH
2002-01-15 17:31
2002.02.04
Существует ли аналог функции MEMCPY в Delphi?


3-8790
Ura
2001-12-28 11:02
2002.02.04
BDE


3-8745
sashak
2001-12-28 15:24
2002.02.04
Можно ли выполнить скрипт через ADO ?


3-8748
TAIS
2002-01-02 09:47
2002.02.04
триггер


3-8761
Paolo_lis
2002-01-04 16:35
2002.02.04
Компоненета с инкриментальным посиком