|
Тема
|
Стартиране на външен файл
|
|
Автор | lvan (Нерегистриран) |
Публикувано | 21.10.02 09:37 |
|
Здравейте,
Имам един пробем и се надявам да получа помощ.
От мое приложение стартирам външен файл (bat-файл) чрез TFileRun.Execute.
Файлът се стартира. Проблемът е че моето приложение веднага след изпълнение на процедурата Execute предава управлението на следващия оператор (след TFileRun.Execute) - т.е. приложението продължава преди да е свършило изпълнението на BAT-файла. От това се получава конфликт със следващата ми процдура.
Засега съм решил проблема с изкуствено задържане на програмата със
Sleep за 5 сек, но това разбира се е несериозно!
И така въпроса:
Приложението ми е тип GUI. Как мога да проследя за завършването на изпълнението на стартиран от мен BAT-файл?
| |
Тема
|
Re: Стартиране на външен файл
[re: lvan]
|
|
Автор |
SDR (TaskMaster) |
Публикувано | 21.10.02 11:27 |
|
CreateProcess
The CreateProcess function creates a new process and its primary thread. The new process runs the specified executable file.
...
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
...
The process is assigned a process identifier. The identifier is valid until the process terminates. It can be used to identify the process, or specified in the OpenProcess function to open a handle to the process. The initial thread in the process is also assigned a thread identifier. The identifier is valid until the thread terminates and can be used to uniquely identify the thread within the system. These identifiers are returned in the PROCESS_INFORMATION structure
--------------------------
The WaitForSingleObject function returns when one of the following occurs:
The specified object is in the signaled state.
The time-out interval elapses.
To enter an alertable wait state, use the WaitForSingleObjectEx function. To wait for multiple objects, use the WaitForMultipleObjects.
DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);
...
The WaitForSingleObject function can wait for the following objects:
Change notification
Console input
Event
Job
Mutex
Process
Semaphore
Thread
Waitable timer
A Chestito! i priqtno kodirane
------------------------------
I got a COMPILER, and I'm not afraid to use it!
| |
Тема
|
Re: Стартиране на външен файл
[re: SDR]
|
|
Автор | lvan (Нерегистриран) |
Публикувано | 21.10.02 14:16 |
|
Благодаря ти!!!
Досега не се бях занимавал с Windows библиотеката, но явно ще се наложи.
| |
Тема
|
Re: Стартиране на външен файл
[re: lvan]
|
|
Автор |
PhantomAS (стар ерген®) |
Публикувано | 21.10.02 16:27 |
|
Отговора на въпроса си ще намериш във форума - но трябва да потърсиш малко назад!!! Имам предвид цялата реализация с изчакването - просто потърси CreateProcess из съдържанието на темите :-))
---
Е т'ва е живот!
| |
Тема
|
Re: Стартиране на външен файл
[re: lvan]
|
|
Автор |
iNT19 () |
Публикувано | 26.10.02 21:00 |
|
Здрасти, с FindWindow можеш да провериш дали BAT файла е стартиран
| |
|
|
|
|