![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| olyx |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 26.1.2007 Репутация: нет Всего: нет |
Доброго всем времени суток!
Столкнулся вот с такой непонятной проблемой: есть hklib.dll устанавливающая глобальный хук, есть приложение oometapanel.exe которое устанавливает хук через ДЛЛ. Но сам хук срабатывает только для oometapanel.exe (ставил брекпоинт на OOMaximizeHook), хотя создан по всем правилам глобального хука, и по идее должен ловить сообщения от всех приложений. Перерыл кучу информации, но в чём загвоздка не нашел. Привожу код: hklib.cpp - модуль ДЛЛки
hklib.h - заголовок ДЛЛки
metapanel.cpp - главный модуль приложения
Суть кода - при развертывании окна приложений OprnOffice.org менять их размер. |
||||||
|
|||||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
Может дело вот в этом?
Filter functions for systemwide hooks must be prepared to share any data they need across the different processes they are running from. A DLL is mapped into the address space of each of its client processes. Global variables within the DLL will be instance specific unless they are placed in a shared data section. For example, the HOOKSDLL.DLL library in the Hooks sample application needs to share two data items: The window handle to display messages. The height of the text lines in that window. To share this data, HOOKSDLL puts these data items in a shared data section. Here are the steps HOOKSDLL takes to share the data: Use pragmas to place the data in a named data segment. Note that the data must be initialized for this to work. // Shared DATA #pragma data_seg(".SHARDATA") static HWND hwndMain = NULL; // Main hwnd. We will get this from the app. static int nLineHeight = 0; // Height of lines in window. #pragma data_seg() Add a SECTIONS statement to the DLL's .DEF file: SECTIONS .SHARDATA Read Write Shared Create an .EXP file from the .DEF file: hooksdll.exp: hooksdll.obj hooksdll.def $(implib) -machine:$(CPU) \ -def:hooks.def \ hooksdll.obj \ -out:hooksdll.lib Link with the HOOKSDLL.EXP file: hooksdll.dll: hooksdll.obj hooksdll.def hooksdll.lib hooksdll.exp $(link) $(linkdebug) \ -base:0x1C000000 \ -dll \ -entry:LibMain$(DLLENTRY) \ -out:hooksdll.dll \ hooksdll.exp hooksdll.obj hooksdll.rbj \ $(guilibsdll) -------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
| olyx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 26.1.2007 Репутация: нет Всего: нет |
я уже разобрался в чём дело было
А то что сий процесс не отлавливался в дебагере - оно и понятно - ведь для других придожений подгружался свой инстанс библиотеки, на который дебагер небыл "натравлен". |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
не "только для какихто". словарик пользуй.
|
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |