![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте! Все таки решился использовать dll для хука, только пожалуйста помогите разобраться коде данной функции, не могу его переделать чтоб хук реагировал только при отпускании (KeyUP) клавиши:
Код:
function KeyHookFunc(Code, VirtualKey, KeyStroke: integer): LRESULT; stdcall;
var
msgl: PEVENTMSG;
begin
Result:=0;
if Code=HC_NOREMOVE then Exit;
Result:=CallNextHookEx(hK,Code,VirtualKey,KeyStroke);
if Code<0 then Exit;
if (Code=HC_ACTION) then
begin
msgl := Pointer(KeyStroke); // Без этих двух строчек функция работает
if msgl.message = WM_KEYUP then // идеальною, но надо чтоб хук реагировал только
begin // на отпускание клавиш. П О М О Г И Т Е !
if((KeyStroke and (1 shl 30))<>0) then
if not IsWindow(hA) then
begin
hM:=OpenFileMapping(FILE_MAP_WRITE,False,'MyHookMap');
Hr:=MapViewOfFile(hM,FILE_MAP_WRITE,0,0,0);
if Hr<>nil then
hA:=Hr.AppHnd;
end;
if ((KeyStroke and (1 shl 30))<>0) then
begin
SendMessage(hA, WM_USER+2008, VirtualKey , KeyStroke {GetFocus});
end;
end;
end;
end; |
|
#2
|
||||
|
||||
|
Код:
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
);Цитата:
|
|
#3
|
|||
|
|||
|
NumLock, спасибо конечно за быстрый ответ, но я уже читал про это... вот только как мне в данной функции реагировать только на отпускание клавиши? Можно примерчик?...
|
|
#4
|
||||
|
||||
|
Код:
if (KeyStroke and $80000000 <> 0) then |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
centuriy (11.02.2013)
| ||
|
#5
|
|||
|
|||
|
NumLock, Спасибо! вместо условия
Код:
if ((KeyStroke and (1 shl 30))<>0) then Код:
if (KeyStroke and $80000000 <> 0) then ps. я так понял условие Код:
if ((KeyStroke and (1 shl 30))<>0) then |
|
#6
|
||||
|
||||
|
ты не тот бит проверял, на 1 ошибся:
1 shl 30 = $40000000, а надо $80000000 в маске |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
centuriy (11.02.2013)
| ||