Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

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

 
NewUser0   (2006-11-03 15:17) [0]

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

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


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

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


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

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

можно в WMZ :)


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


> NewUser0   (03.11.06 15:17)


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


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


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


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


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


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


 
newuser0   (2006-11-04 15:11) [6]

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


 
Chose ©   (2006-11-05 01:34) [7]

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

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


 
DVM ©   (2006-11-05 12:15) [8]


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1162649056
Mihalich
2006-11-04 17:04
2006.11.19
MS SQL server


6-1150433786
Lex_!
2006-06-16 08:56
2006.11.19
Sessions в ISAPI приложениях


2-1162433136
viper03
2006-11-02 05:05
2006.11.19
помогите с sql


15-1162296572
Skier
2006-10-31 15:09
2006.11.19
Билеты в театр...


2-1162315461
Ivolg
2006-10-31 20:24
2006.11.19
Пакеты