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

Вниз

как узнать завершение роботи программи ...   Найти похожие ветки 

 
IGoRka   (2003-08-08 17:58) [0]

подскажите пожалуйста
мне ето срочно надо ...
из моей программи запускается батник и мне надо знать когда он окончательно виполнится ... для виполнения дальнейших операций ...
помогите друзья пожалуйста
извените за ошибки в сообщении - я плохо владею русским ...


 
Е-Моё имя   (2003-08-08 18:03) [1]

точно не помню, но вроде CreateProcess+WaitForSingleObject


 
panov   (2003-08-08 18:13) [2]

А какое примерно содержимое .bat-файла?


 
Семен Сорокин   (2003-08-08 18:14) [3]

IGoRka (08.08.03 17:58)
как вариант если батник временный, то можно в конце его приписать его удаление, а в программе ждать:
if FileExists(MyBatFile) then
Application.ProcessMessages;


 
IGoRka   (2003-08-08 18:21) [4]

содержимое батника заключается в копировании файла с дискети на жосткий диск ...
а после того как ето виполняеся должна виполнятся операция с етим файлом что скопировался

Интересная идея в Семен Сорокин
мне идея нравится но есть наверное кокойто приличний способ оброботки етого ...

я когдато об етом читал но очень давно
помню бил пример когда программа запускала калькулятор
а когда я калькулятор закривал на программе что его запукала вискакивал месидж что калькулятор закрит

значит ето реально зделать ...


 
Семен Сорокин   (2003-08-08 18:33) [5]

IGoRka (08.08.03 18:21)
тогда лучше вариант через CreateProcess+WaitForSingleObject от Е-Моё имя © (08.08.03 18:03)


 
Семен Сорокин   (2003-08-08 18:39) [6]

procedure TForm1.Button1Click(Sender: TObject);
var
pi : TProcessInformation;
si : TStartupInfo;
begin
FillChar(si, SizeOf(TStartupInfo), 0);
si.cb := SizeOf(TStartupInfo);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
if CreateProcess(nil, "c:\copyfile.bat", nil, nil, false, 0, nil, nil, si, pi) then
try
WaitForSingleObject(pi.hProcess, INFINITE)
finally
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess)
end
end;


 
IGoRka   (2003-08-08 18:43) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline:string;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
cmdline:="cmd";
if not CreateProcess(
nil, // No module name (use command line).
PChar(cmdline), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi) // Pointer to PROCESS_INFORMATION structure.
then
begin
ShowMessage("CreateProcess failed.");
Exit;
( pi.hProcess, INFINITE) procedure TForm1.Button1Click(Sender: TObject);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline:string;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
cmdline:="cmd";
if not CreateProcess(
nil, // No module name (use command line).
PChar(cmdline), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi) // Pointer to PROCESS_INFORMATION structure.
then
begin
ShowMessage("CreateProcess failed.");
Exit;
end;
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
ShowMessage("Done !");
end;

один недостаток етой части программи в том:
1. что не дает запустить программу в фоновом режиме (невидемом режиме)
2. Форма подвисает ... (ждет завершение запущеной программи в зависшем режиме ...)

может кто знает как от етого избавится?


 
Семен Сорокин   (2003-08-08 18:46) [8]

IGoRka (08.08.03 18:43)
вытаскивать в отдельный поток (TThread)


 
IGoRka   (2003-08-08 18:46) [9]

прикол получился ... вместе написали ...


si.wShowWindow := SW_HIDE;
ето круто - форма спрятана
а как с тем что подвешена ...???


 
IGoRka   (2003-08-08 18:49) [10]

Большое спосибо Семен Сорокин
очень тебе благодарен за ответи ...

но я спотоками никогда не роботал ...
как ето реально сделать???


 
Семен Сорокин   (2003-08-08 18:52) [11]

Demos\Threads\thrddemo.dpr
там все достаточно просто.


 
IGoRka   (2003-08-08 18:54) [12]

спосибо - обезательно разберусь ...


 
panov   (2003-08-08 18:59) [13]

Только зачем в пакетном файле копировать файлы.
Возьми и скопируй средствами Delphi.


 
IGoRka   (2003-08-08 20:35) [14]

panov
кроме копирования там і розархирование есть ...


 
Андрей Сенченко   (2003-08-08 20:41) [15]

Опять же - уже описанным способом запускай архиватор с нужными параметрами ( unpack , directory etc ), дожидайся завершения его работы с помощью WaitForSingleObject и копируй файлы средствами Дельфи.
Или используй компоненты для работы с архивами - гдет здесь рядом есть топик на эту тему


 
IGoRka   (2003-08-08 20:48) [16]

ок
спосибо очень
ви все мне здорово помогли ...



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

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

Наверх





Память: 0.49 MB
Время: 0.008 c
14-68504
stone
2003-08-05 16:00
2003.08.21
Новые откровения Supreme 2


1-68329
ilka
2003-08-08 17:16
2003.08.21
проблема с dll в 7Delphi


14-68536
Затейник - некрофил
2003-08-06 09:36
2003.08.21
Есть ли на форуме неприкасаемые?


1-68370
XenonXX
2003-08-08 08:22
2003.08.21
Поиск, оптимизация.


1-68294
servs
2003-08-06 12:36
2003.08.21
THintWindow





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