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

Вниз

Получить значения xPos & yPos из lParam...   Найти похожие ветки 

 
Camedia   (2003-08-30 00:58) [0]

С вашей пмощью установил хук. Суть в том, чтобы получать коордианты точки экрана при нажатии. Но что-то не получается никак. Вот код:

function HookProc(Code: Integer; wParam: Word; lParam: Longint): Longint;
begin
if (wParam=WM_LBUTTONDOWN) then
begin
result := CallNextHookEx(ourHook, Code, wParam, lParam);
UnHookWindowsHookEx(ourHook);
ShowMessage("??????????");
end
else
result:=CallNextHookEx(ourHook, Code, wParam, lParam);
end;

Нужно чтобы вместо знаков вопроса выдавались координаты мыши. И ещё, будет ли такой хук работать на всей области экрана или только в окне?


 
Camedia   (2003-08-30 19:29) [1]

Help, народ! LoWord и HiWord возвращают несоответсвующие действительности значения!


 
Camedia   (2003-08-30 21:13) [2]

М-да, в принципе, LoWord и HiWord не должны возвращать координат, т.к. я ставлю хук, использую WH_MOUSE, а значит lParam является указателем на TMouseHookStruct. Откопал в модуле Windows:

{ Structure used by WH_MOUSE }
PMouseHookStruct = ^TMouseHookStruct;
{$EXTERNALSYM tagMOUSEHOOKSTRUCT}
tagMOUSEHOOKSTRUCT = packed record
pt: TPoint;
hwnd: HWND;
wHitTestCode: UINT;
dwExtraInfo: DWORD;
end;
TMouseHookStruct = tagMOUSEHOOKSTRUCT;
{$EXTERNALSYM MOUSEHOOKSTRUCT}
MOUSEHOOKSTRUCT = tagMOUSEHOOKSTRUCT;

Но умственное развитие не позволяет этим воспользоваться. Ну помогите уж с этим хотя бы. Как вытащить эти координаты???


 
Camedia   (2003-08-30 21:46) [3]

К сожалению, н едождался от вас помощи, сам нашёл ответ:

function HookProc(Code: Integer; wParam: Word; lParam: Longint): Longint;
var msg : PMouseHookStruct;
begin
if Code < 0 then
begin
result := CallNextHookEx(OurHook, Code, wParam, lParam);
exit;
end;

msg := PMouseHookStruct(lParam);
if (wParam=WM_LBUTTONDOWN) then
begin
UnHookWindowsHookEx(ourHook);
ShowMessage(IntToStr(msg^.pt.x));
end;
result := CallNextHookEx(ourHook, Code, wParam, lParam);
end;

Но возникли проблемы - после того, как окошко появилось и я нажал ОК, форма становится неактивной - нужно на ней кщё раз щёлкнуть. Как этого избежать?


 
Song ©   (2003-08-31 10:07) [4]

Ты типа сам с собой разговариваешь? :)



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
1-8424
Алексей Петухов
2003-10-21 13:40
2003.11.03
DOS Кодировка


1-8438
undert
2003-10-14 22:55
2003.11.03
Rave PDF Render


14-8623
Думкин
2003-10-13 05:29
2003.11.03
С днем рождения! 13 октября.


7-8701
stLAM
2003-08-25 21:42
2003.11.03
Народ, как писать на десктопе


4-8716
OlegV
2003-08-29 14:41
2003.11.03
Как удалить файлы в корзину?