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

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

Список запушенных приложений


NewUser0 ©   (2006-11-03 15:17:00) 

Для того чтобы узнать список запушенных приложений, использую данный код:

var
Wnd : hWnd;
Buff : array [0..127] of Char;
begin
Wnd := GetWindow(Handle, GW_HWndFirst);
while Wnd <> 0 do begin
 if (Wnd <> Application.Handle) and
    IsWindowVisible(Wnd) and
    (GetWindow(Wnd, GW_Owner) = 0) and
    (GetWindowText(Wnd, Buff, SizeOf(Buff)) <> 0) and
    (UpperCase(StrPas(Buff)) <> UpperCase('Program Manager'))
 then begin
  GetWindowText(Wnd, Buff, SizeOf(Buff));
 end;
 Wnd := GetWindow(Wnd, GW_hWndNext);
end;

Так вот если запустить несколько программ все отлично работает, но если переключиться на какое либо окно то оно, к сожалению, в списке переходит на первую строку. Это доставляет проблему, т.к. если запустить два раза одно и то же приложение, к примеру, Calc и переключиться на одно из этих приложений, то список перепутается, и уже никак не получится завершить нужное пользователю приложение, т.к. неизвестно какой именно Calc нужно завершать (первый или второй), к тому же оба приложения имеют одинаковые заголовок и класс главного окна.
А теперь собственно вопрос по делу: Каким образом можно узнать какое приложение из этих двух пользователь хочет завершить?
Посоветуйте какой-нибудь другой алгоритм или выложите ссылку, на какой-нибудь пример Диспетчера задач, либо дайте другой совет.
Буду, благодарен за любую помощь.


DVM   (2006-11-05 12:15:00) [1]


> Посоветуйте какой-нибудь другой алгоритм или выложите ссылку,
>  на какой-нибудь пример Диспетчера задач, либо дайте другой
> совет

EnumWindows(). Пример использования есть на сайте Игоря Шевченко.

Получать список окон надо по таймеру.

Или поставить ловушку WH_SHELL тогда таймер не нужен.


Chose   (2006-11-05 01:34:00) [2]

> такое впечатление что вы никодга не исползовали чужой код
> или библиотеки, написанные не вами.

Использовали, но перед этим, хотя бы разбирались, что он делает :)


newuser0   (2006-11-04 15:11:00) [3]

Я бы попросил, не ругатся, етот ко я взял с справки кулиба.
и еше, такое впечатление что вы никодга не исползовали чужой код или библиотеки, написанные не вами.


Сергей М.   (2006-11-03 16:56:00) [4]


> Чапаев ©   (03.11.06 16:48) [4]


Вот и я думаю - где-то в какой-то помойке я это уже видел)


Чапаев   (2006-11-03 16:48:00) [5]


> Сергей М. ©   (03.11.06 15:44) [3]
Из JVCL, если мне не изменяет склероз.


Сергей М.   (2006-11-03 15:44:00) [6]


> NewUser0   (03.11.06 15:17)


Код этот ты спер у кого-то ? Спер. Причем бездумно)
Ну а раз думать не желаешь, то и помощь тебе - как мертвому припарка)


Орион   (2006-11-03 15:31:00) [7]

> Буду, благодарен за любую помощь.

можно в WMZ :)


Орион   (2006-11-03 15:28:00) [8]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1167


Наверх

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