Форум: "Основная";
Текущий архив: 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