Jak przypisac do keybd_event i mouse_event uchwyt okna??

Odpowiedz Nowy wątek
2006-07-31 20:24
0

Potrzebuje żeby SetCursorPos, keybd_event i mouse_event były wykonywane w oknie na wierzchu, Niewiem jak przypisać do nich uchwyt tego okna.
Prosze o pomoc jak to zrobić!!!
Mój kod:
procedure TForm1.T1Timer(Sender: TObject);
var
i:integer;
begin
nr:='2';
for i:=1 to 3 do
begin
H := GetForegroundWindow; //H:THandle
keybd_event(ord(nr),0,0,0);
keybd_event(ord(nr),0,KEYEVENTF_KEYUP,0);
SetCursorPos(980, 20);
mouse_event(MOUSEEVENTF_RightDOWN, 0, 0, 0,0);
mouse_event(MOUSEEVENTF_RightUP, 0, 0, 0,0);
sleep(200);
SetCursorPos(980, 50);
mouse_event(MOUSEEVENTF_RightDOWN, 0, 0, 0,0);
mouse_event(MOUSEEVENTF_RightUP, 0, 0, 0,0);
sleep(200);
SetCursorPos(980, 80);
mouse_event(MOUSEEVENTF_RightDOWN, 0, 0, 0,0);
mouse_event(MOUSEEVENTF_RightUP, 0, 0, 0,0);
sleep(200);
SetCursorPos(980, 110);
mouse_event(MOUSEEVENTF_RightDOWN, 0, 0, 0,0);
mouse_event(MMOUSEEVENTF_RightUP, 0, 0, 0,0);
sleep(200);
SetCursorPos(980, 140);
mouse_event(MOUSEEVENTF_RightDOWN, 0, 0, 0,0);
mouse_event(MOUSEEVENTF_RightUP, 0, 0, 0,0);
sleep(200);
if nr='2' then nr:='3';
if nr='3' then nr:='1';
if nr='1' then nr:='2';
end;
end;


MSWDKG

Pozostało 580 znaków

2006-07-31 20:51
0

PostMessage(GetForegroundWindow, WM_KEYPRESSED, 0, VK_F1)
Wysłanie komunikatu do okna na wierzchu o naciśnięciu klawisza F1

podobnie z akcjami związanymi z przyciskami myszy, tylko pewnie komunikat inny, albo inny kod klawisza (F1: Virtual Key Codes)

http://4programmers.net/Forum/316687?f=2

Pozostało 580 znaków

2006-07-31 20:57
0

Tylko ja jeszcze zrobić zeby myszka si przesuwała w dane miejsce bo to terz nie dzial w tym oknie??


MSWDKG

Pozostało 580 znaków

2006-07-31 20:58
0

pewnie WM_MOUSEMOVE

Pozostało 580 znaków

2006-07-31 21:00
0

to też nie działa juz prubowałem


MSWDKG

Pozostało 580 znaków

2006-07-31 21:09
0

ale w lParam powininny być współrzędne X i Y (X - HiWord(lParam), Y - LoWord(lParam)) - definiowałeś je tak?

PostMessage(Handle, WM_MOUSEMOVE, 0, (X shl 16) or Y)

jeszcze można dać zamiast Handle HWND_BROADCAST - komunikat trafia do wszystkich aplikacji (jak dobrz pamiętam)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0