Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизКак можно узнать когда закончила запускаться внешняя программа? Найти похожие ветки
← →
nester (2004-09-10 10:52) [0]Добрый день.
Мне необходимо узнать момент когда закончила запускаться запущенная мною внешняя программа(например по ShellExecute).
Т.е. посмотрите например на Adobe Photoshop или Acrobat.
Пока они запускаются у них торчит сплэшскрин, причем довольно долго, и когда наконец запустилсяпоявляется основная форма для работы. Как отловить этот момент когда появилась основная форма?
← →
Digitman © (2004-09-10 10:58) [1]в цикле вызывай FindWindow()
← →
nester (2004-09-10 10:59) [2]Не, не могу, в том то весь и прикол, что я заранее не знаю что за прога которую нужно запустить
← →
Digitman © (2004-09-10 11:03) [3]
> заранее не знаю что за прога которую нужно запустить
не знаешь ? тогда откуда такая уверенность, что "прога" будет вообще иметь какие-либо формы ?
← →
nester (2004-09-10 11:17) [4]Знаю что проги предназначены для отображения/редактирования инфы. Я думаю что у них будут формы%)))
Собсна может я и не правильно выразился, мне нужен тот момент когда прога готова работе. Т.е. тот момент когда произошел
Application.Run говоря языком делфи
← →
Рамиль © (2004-09-10 11:19) [5]WaitForInputIdle ?
← →
nester (2004-09-10 11:24) [6]Хмм похоже на правду судя по названию, а мочно немного поподробнее?
P.S. У нас тут прям чат какойто
← →
Рамиль © (2004-09-10 11:34) [7]
var
Rlst: LongBool;
StartUpInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
Error: integer;
begin
FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
with StartUpInfo do
begin
cb := SizeOf(TStartUpInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := SW_SHOWNORMAL;
end;
Rlst := CreateProcess("C:\Windows\System32\notepad.exe", " c:\readme.txt", nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
if Rlst then
with ProcessInfo do begin
WaitForInputIdle(hProcess, INFINITE); // ждем завершения инициализации
CloseHandle(hThread); // закрываем дескриптор процесса
CloseHandle(hProcess); // закрываем дескриптор потока
end
else Error := GetLastError;
end;
← →
nester (2004-09-10 11:41) [8]Ж)))))))) Благодарствую Рамиль
← →
Digitman © (2004-09-10 11:48) [9]
> nester (10.09.04 11:24) [6]
> Хмм похоже на правду
эта ф-ция всего лишь проверяет факт создания целевым процессом очереди оконных сообщений, но никоим образом не отражает фак создания этим процессом "формы"
← →
nester (2004-09-10 16:29) [10]Хмм. Оно сработало так как надо мне, все замечательно, но вот проблемма частенько нужно еще чтобы не ехе-шник запускать, а .doc или .pdf или ... В общем как в ShellExecute(0, "open",PChar("gogogo.doc")...
А для CreateProcess нужен только исполнимый файл, где бы теперь еще узнать как можно по рассширению узнать ассоциированую программу?
← →
Polevi © (2004-09-12 19:28) [11]ShellExecuteEx
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c