Главная страница
    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.006 c
3-8762
Олег Лаукарт
2002-01-04 14:50
2002.02.04
указание значения-даты в запросе


1-8922
Delphimun
2002-01-16 16:39
2002.02.04
Как изменить содержимое файла txt на своей web странице?


1-8868
SlavaNew
2002-01-14 12:50
2002.02.04
Как передать иконку?


1-8870
NY152
2002-01-15 09:59
2002.02.04
Подскажите, где поставить проверку...


1-8865
ctapik-net
2002-01-21 15:40
2002.02.04
Создание электронного письма через ShellExecute





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский