Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1096400524
Alex870
2004-09-28 23:42
2004.10.17
Курсор


14-1096223077
Gero
2004-09-26 22:24
2004.10.17
Не определяется память


14-1096039851
Andy BitOff
2004-09-24 19:30
2004.10.17
Errors Codes Convert


14-1096354059
Григорьев Антон
2004-09-28 10:47
2004.10.17
У кого Windows 98 и ME - помогите


9-1087222996
Uncle Archi
2004-06-14 18:23
2004.10.17
OpenGL





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