Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.04.2014, 17:08
elite001 elite001 вне форума
Прохожий
 
Регистрация: 08.04.2014
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию SetWindowsHookEx

Ахой!
Дано:есть библиотека, которая устанавливает и сбрасывает hook при вызове функций из основной программы только SetHook и RemoveHook, нашел код на просторах, на данный момент нажимаешь среднюю кнопку мыши - на активном окне меняется Caption.

Нужно:Как запретить другим окнам в виндовсе взаимодействовать с этим "хуком" или как передать в хук хендл окна запустившего DLL даже если оно не активно? не пойму куда копать.. =(

Зачем: чтобы при свернутом окне в трей выполнялось "что-то" при нажатии комбинации клавиш.. (к примеру, возьмем пунтосвитчер)

Среда разработки: Lazarus
Ответить с цитированием
  #2  
Старый 08.04.2014, 17:34
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от elite001
...Как запретить другим окнам в виндовсе взаимодействовать с этим "хуком"...
Хоай, раньше на старых ОС достаточно было вернуть нулевой результат и вся цепочка останавливалась, но теперь, говорят, в связи с переделкой концепции построения "очереди" сделать это значительно труднее, а самое главное без смысла поскольку от этого могут пострадать в плане работоспособности полезные или нужные системные участники процесса

Цитата:
...как передать в хук хендл окна запустившего DLL даже если оно не активно?
При постановке ловушки и так передаётся, наверное имелось ввиду как получить, мессаги есть для этого.

Цитата:
...чтобы при свернутом окне в трей выполнялось "что-то" при нажатии комбинации клавиш...
Здесь пользуют "горячие клавиши" путём регистрации их в системе
Ответить с цитированием
  #3  
Старый 08.04.2014, 18:28
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так в hook procedure (MouseProc) передается хэндл окна. а владельца можно в SetHook передавать.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 09.04.2014, 17:26
elite001 elite001 вне форума
Прохожий
 
Регистрация: 08.04.2014
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
Хорошо

фух.. нашол.. spy++ полезная тулза =)

hwnd:=findwindow('имя класса',nil);
sendmessage(hwnd,WM_SETTEXT,0,integer(pchar('FormC aption')));

по данному принципу как оказалось и пунтосвитчер работает, только имя класса скрытого окна PuntoSwitcher31MainWindow, обрабатывающего скорее всего гетмессаги

спасибо)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025