Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Вниз

Закрытие ДОС-окна   Найти похожие ветки 

 
Елена   (2002-02-18 14:56) [0]

У меня такой вопрос.
Делаю WinExec("1.bat", SW_NORMAL), программа отрабатывает в ДОС-окне, но окно не закрывается ("Сеанс завершен").
Как мне программно закрыть это окно?
Феломена посоветовала:

var
info: TOSVersionInfo;
ClassName, Title: string;

info.dwOSVersionInfoSize:=SizeOf(info);
GetVersionEx(info);
if (info.dwPlatformId = VER_PLATFORM_WIN32_NT) then begin
ClassName:="ConsoleWindowClass";
Title:="Command Prompt";
end else begin
ClassName:="tty";
Title:="MS-DOS Prompt";
end;
SendMessage(FindWindow(PChar(ClassName), PChar(Title)), WM_CLOSE, 0, 0);

Этот код я вставила после WinExec("1.bat", SW_NORMAL), но видимо программа не дожидается, пока выполнится 1.bat.

Заранее благодарна.


 
reonid   (2002-02-18 15:13) [1]

Попробуй так

function ExecuteConsole(CmdLn: string): Boolean;
var
si: TStartupInfo;
pi: TProcessInformation;
// CmdLn: string;
begin
// CmdLn := "calc.exe";
FillChar(si, SizeOf(si), 0);
si.cb := SizeOf(si);

AllocConsole;
// Запускаем программу
if CreateProcess(nil,
PChar(CmdLn),
nil,
nil,
False,
CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS,
nil,
nil,
si,
pi)
then
begin
CloseHandle(pi.hThread);
// Ждем окончания работы запущенной программы
// if WaitForSingleObject(pi.hProcess, {INFINITE}6000{ms})= WAIT_OBJECT_0
// then
// Result := True// Программа отработала - читаем файл
// else
// Result := False;// (WAIT_TIMEOUT) - Программа не завершилась за 60 сек.
// Или ей требуется больше времени, или она зависла
Result := True;
CloseHandle(pi.hProcess);
end
else
Result := False; // программа не запустилась

FreeConsole;
end;


 
Елена   (2002-02-19 07:17) [2]

Спасибо!


 
Black King   (2002-02-19 09:50) [3]

Ja vsegda takim obrazom delaju :

WinExec("1.bat", 1)

i u menja rabotajet.


 
Елена   (2002-02-19 11:21) [4]

Black King, Вы хотите сказать, что окно само закрывается?


 
Ujin_m   (2002-02-19 12:41) [5]

Esche prosche dobavit exit v poslednuu stroku bat file ili sozdat svoi bat file (temp_123.bat naprimer) so strokami:

call 1.bat
exit


 
Ujin_m   (2002-02-19 12:43) [6]

Poniatno chto zapuskat nado novui bat file:

WinExec("temp_123.bat", SW_NORMAL);


 
Севостьянов Игорь   (2002-02-19 15:28) [7]

call 1.bat
exit


Этого вполне достаточно
Просто в свойствах доса не выстален флаг - закрывать окно при окончании работы


 
Sasha9   (2002-02-21 12:18) [8]

Можно добавить cls в конец .bat файла (очистка экрана) или
вместо winexec использовать shellexecute и в примере Феломены в sendmessage вместо findwindow использовать значение, возвращённое функцией shellexecute



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
14-19306
Delirium
2002-01-17 18:42
2002.03.07
Кто сколько часов в день работает?


3-19112
Vacheslav
2002-02-11 16:20
2002.03.07
КАК изменить имена колонок в таблице


4-19382
Slyer
2002-01-05 05:47
2002.03.07
Задержка при вводе...


1-19240
Lord Vader
2002-02-20 06:59
2002.03.07
СРОЧНО НУЖЕН ФИЛЬТР СТРОКИ ДЛЯ ДИПЛОМА!!!


3-19071
kserg@ukr.net
2002-02-08 13:35
2002.03.07
Как в DBGridEh програмно задать SortMarkedColumns ?





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