Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-9032
Непонятливый
2001-12-06 23:55
2002.02.04
помогите чайнику напечатать текст


7-9006
кто-то из толпы
2001-10-25 17:42
2002.02.04
ARJ


1-8833
Lizard
2002-01-20 15:04
2002.02.04
Как отключить таймер (Timer1) ?


14-8982
Ивашка
2001-11-23 11:58
2002.02.04
как защитить авторские права программы


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский