Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как наити нужную программу???


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо