Otóż mam problem, bo nie posiadam myszki, a gram sobie w grę w której odsuwa się kamerę kółkiem i takie pytanie mam, jak zmanipulować kółko od myszki? Próbowałem kiedyś z tymi adresami klawiszy czy jak to się zwie i kicha.
0
0
W jakim języku chcesz to zrobić albo pokaż jak to robiłes z tymi "adresami", bo mi
się wydaje, że przez Mouse_Event powinno się udać zasymulować działanie myszy.
0
To tak : Delphi 7, te adresy to znaczy się ich symbol np #13 czyli chyba enter.
1
To masz przykład poniżej jak przechwycić ruchy myszką i wciskać klawisz F1 przy ruchu w góre. A na wielu stronach do wyszukania
w google między innymi na http://delphi.about.com/cs/adptips2002/a/bltip1102_3.htm masz przykłady jak obslużyć rolkę w ruchu
myszy, podejrzewam, że trzeba będzie w Mouse_Event zasymulować VK_UP oraz VK_DOWN, ale to już pokombinuj dalej samemu.
//...
var
Form1 : TForm1;
HHK : integer;
implementation
{$R *.dfm}
procedure SimulateKeyPress(Key : Cardinal; KeyUp : boolean);
var
Input : TagINPUT;
begin
Input.Itype := INPUT_KEYBOARD;
Input.ki.wVK := Key;
Input.ki.wScan := MapVirtualKey(Key, 0);
if Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_HOME,
VK_END, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE] then
begin
Input.ki.dwFlags := KEYEVENTF_EXTENDEDKEY;
end
else
begin
if KeyUp = False then
begin
Input.ki.dwFlags := 0;
end
else
begin
Input.ki.dwFlags := KEYEVENTF_KEYUP;
end;
end;
Input.ki.time := 0;
SendInput(1, Input, SizeOf(Input));
end;
function MouseLLProc(iCode : Integer; wParam : WPARAM; lParam : LPARAM) :
integer; stdcall;
type
TMsLLHookStruct = packed record
pt : TPoint;
mouseData : DWORD;
flags : DWORD;
time : DWORD;
dwExtraInfo : DWORD;
end;
PMsLLHookStruct = ^TMsLLHookStruct;
var
WheelDir : Word;
MS : PMsLLHookStruct;
begin
if (iCode = HC_ACTION) and (wParam = WM_MOUSEWHEEL) then
begin
with Form1 do
begin
MS := PMsLLHookStruct(lParam);
WheelDir := MS.mouseData shr 16;
Caption := IntToStr(WheelDir);
if WheelDir = 120 then
begin
Application.Title := 'w górę';
SimulateKeyPress(VK_F1, False);
SimulateKeyPress(VK_F1, True);
end
else
begin
Application.Title := 'w dół';
end;
end;
end;
Result := CallNextHookEx(HHK, iCode, wParam, lParam);
end;
procedure TForm1.FormCreate(Sender : TObject);
const
WH_MOUSE_LL = 14;
begin
HHK := SetWindowsHookEx(WH_MOUSE_LL, MouseLLProc, HInstance, 0);
end;
0
Ja sobie dałem to w timera i gra gitara XD
mouse_event(MOUSEEVENTF_WHEEL,0,0,10,0);
Dzięki wielkie