Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Полностью согласен с vadimiron'ом
А теперь по делу (если уже,правда,не поздно).

megad
А почему бы тебе не использовать hook следующим образом:
Код: Выделить весь код
var
 SysHook : HHook;
 Wnd : HWND;

function MyHookProc(Code : Integer; wParam : WORD; lParam : LongInt) : LongInt; stdcall; // Основная функция обработки ловушки
begin
 CallNextHookEx(SysHook, Code, wParam, lParam); // Передаём сообщение другим ловушкам в системе
{ Начинаем поверку поступившего сообщения }
if Code = WM_CONTEXTMENU then
begin
 Wnd := TMsg(Pointer(lParam)^).hwnd;
{ Тут мы получаем идентификатор окна,сгенерировавшего сообщение - что тебе походу и надо,а дальше
       могут следовать определённые проверки,и в конце-концов мы должны быть в состоянии изменять окно... }
 SendMessage(Wnd, msg, wParam, lParam);
 InvalidateRect(Wnd, nil, True); // ну, и перерисовать окно
end;
end; // MyHookProc

begin
 { Устанавливаем ловушку }
 SysHook := SetWindowsHookEx(WH_GETMESSAGE, // ловим все сообщения
                                            @MyHookProc,      // указатель на нашу функцию-обработчик
                                            HInstance,           // Указатель на приложение
                                            0                        // Идентификатор потока (тут используется текущий)
                                            ); 
end;
...в общем я предложил,а ты сам смотри - подходит это тебе или нет.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 16:05, 17-08-2005 | #8