Witam!!
Na podstawie postu - Manipulacja kółkiem od myszki robię program, który ma odpowiednio reagować na dodatkowe klawisze myszy (4 i 5-ty przycisk, które są z boku). Według tego wykrywane są one pod numerem 523 wciśnięte i 524 puszczone. Problem polega na tym, że oba zwracają tą wartość i nie wiem jak je rozróżnić.
Proszę o pomoc.
Według tego wykrywane są one
Według czego?
No jak sobie wpiszę Form1.Label1.Caption:=floattostr(wparam); to mi wyświetla te wartości
A od kiedy typ WParam
jest zmiennoprzecinkowy?
A co do pytania, to nie mam takiej myszki. Ale kombinował bym z tym co zwracane jest w strukturze odczytywanej w Hooku. Trzeba by poczytać i potestować według http://msdn.microsoft.com/en-us/library/windows/desktop/ms644970(v=vs.85).aspx i pokrewne wpisy.
Wedle tego http://msdn.microsoft.com/en-us/library/windows/desktop/ms644986(v=vs.85).aspx faktycznie za kod klawisza odpowiada WParam
, ale jeśli sterownik myszki jest ok napisany, to z pewnością te klawisze muszą się dać jakoś rozróżnić. Więcej nie jestem bez myszki w stanie wymyśleć.
Poza tym kod do symulowania wciskania/puszczania klawiszy jest tam nie do końca elegancki i prawidlowy. Na przykład źle zasymuluje Control dla gier DirectX. Powinno to wyglądać tak:
procedure KeyDownUp(KeyToSend : Byte; KeyDown : boolean);
const
DownUp_Flags_Arr : array[boolean] of DWORD = (0, KEYEVENTF_KEYUP);
Extended_Flags_Arr : array[boolean] of DWORD = (0, KEYEVENTF_EXTENDEDKEY);
var
Input : TagINPUT;
KeyExtended : boolean;
begin
Input.Itype := INPUT_KEYBOARD;
Input.ki.wVK := KeyToSend;
Input.ki.wScan := MapVirtualKey(KeyToSend, 0);
KeyExtended := KeyToSend in [VK_CONTROL, VK_LCONTROL, VK_RCONTROL,
VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_HOME, VK_END, VK_PRIOR,
VK_NEXT, VK_INSERT, VK_DELETE, VK_MENU];
Input.ki.dwFlags := DownUp_Flags_Arr[not KeyDown] or Extended_Flags_Arr[KeyExtended];
Input.ki.time := 0;
SendInput(1, Input, SizeOf(Input));
end;
Dobra, mam. Podobnie jak w przypadku kółka pomogło
MS.mouseData shr 16
4-ty przicisk zwraca 1, a 5-ty 2 ;) Dzięki za pomoc!!
Spokojnie ;) Już miałem do czynienia z hookiem na klawiaturę, który był dobrze zrobiony i był bardzo podobny do tego Twojego na mysz ;) Trochę go przerobiłem dla siebie ;)