![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как наити нужную программу???
Johnson © (2003-11-10 18:45:00)
Помогите начинающему... Нужно чтобы моя программа работала только если запушена и в данный момент активна другая программ. Пытаюсь...
AppWnd:= GetForegroundWindow();
id:=FindWindow("OWL_Window","Имя программы");
if id=AppWnd then
begin
....
end;
Почему то не выходит... хотя программа запущена и активна.
Johnson™ (2003-11-11 17:59:00) [1]
Создаётся такое впечатление что
[code]
AppWnd:= GetForegroundWindow
id:=FindWindow("OWL_Window",Заголовок");
if (id=AppWnd)then
[/code]
[code]id[/code] и [code]AppWnd[/code] всегда неравны даже если одно приложение работает, а в этой последовательности случайно нет окон которые всегда считаются активными и находятся в фокусе???
Johnson (2003-11-11 16:55:00) [2]
Говорят ещё как то можно через GetWindowLong но уменя чего то не получается, в и-нете смотрел там уж больно синтаксис замудрённый. Подскажите если можете.
Игорь Шевченко (2003-11-11 10:50:00) [3]
Johnson (10.11.03 21:06)
> Может кто подскажет достойный сайт по WIN API
www.delphimaster.ru/cgi-bin/forum.pl?n=5
F1 (2003-11-11 10:45:00) [4]
А что если попробовать GetFocus, а потом дойти до верхнего Parent-a?
wnd:=GetFocus;
while GetParent(wnd)<>0 do wnd:=GetParent(wnd);
Может так прокатит...
Johnson (2003-11-10 21:06:00) [5]
Может кто подскажет достойный сайт по WIN API
Johnson (2003-11-10 19:25:00) [6]
FindWindow работает нормально а проверка
If (id<>0)and(not IsIconic(id)) Then
всё равно не дает требуемого результата.
DVM (2003-11-10 19:13:00) [7]
И еще проверь, а FindWindow вообще находит что?
DVM (2003-11-10 19:12:00) [8]
> любом случае даже если программа свёрнута
Проверка на "свернутость" (not IsIconic(hWnd)).
GetForegroundWindow не всегда возвращает то, что нужно, как и SetForeground* не всегда делает окно активным и не всегода выдвигает его на передний план.
Johnson (2003-11-10 19:07:00) [9]
Ну так она будет работать в любом случае даже если программа свёрнута. А надо чтоб работала только когда прилажение активно.
DVM (2003-11-10 19:03:00) [10]
а зачем тут GetForegroundWindow()?
не проще ли так:
if FindWindow("OWL_Window","Имя программы")<>0 then
begin
....
end;