|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Узнать Handle запускаемого приложения
В программе используется несколько справок .chm
Я хочу узнать Handle окна справки, открываемой пользователем из моего приложения для того чтобы при повторном запросе пользователя, не открывать ещё одно окно, а показать уже открытое (естественно в том случае, если оно уже было открыто и не было после этого закрыто). Как я понял, надо: 1. С помощью ShellExecuteEx узнать дескриптор запущенного процесса. 2. Затем, при повторном запуске проверять, имеется ли процесс с запущенным ранее дескриптором. Может есть у кого-нибудь опыт решения подобной задачи? |
#2
|
|||
|
|||
Код:
procedure TForm1.Button1Click(Sender: TObject); var RunFileName: PChar; i: word; H: hWnd; begin H:= FindWindow(ИМЯ ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ , = CAPTION ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ); if H=0 then begin RunFileName:=PChar(ПОЛНЫЙ ПУТЬ К ФАЙЛУ, МОЖНО ЧЕРЕЗ OpenDialog); i:=WinExec(RunFileName,SW_RESTORE); Case i of 0: ShowMessage('Не хватает памяти или ресурсов'); ERROR_BAD_FORMAT: ShowMessage('Файл приложения не совместим с данной версией ОС либо поврежден'); ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND: ShowMessage('Файл приложения не найден'); end; // case Application.Minimize;// Свернёмся, если запустили удачно end else ShowMessage('Приложение уже запущено!'); end; |