napisałem takie coś
procedure TForm1.Timer1Timer(Sender: TObject);
var p: TPoint;
Rozd : packed record
X, Y : Integer;
end;
odrzut: integer; // odrzucanie kursora
minodrzut: integer; // minimalna odleglosc kursora
begin
Rozd.X := GetSystemMetrics(SM_CXSCREEN); // pobranie rozdzielczosci w poziomie
Rozd.Y := GetSystemMetrics(SM_CYSCREEN); // pobranie rozdzielczosci w pionie
odrzut := 15;
minodrzut := 1; //min 1
GetCursorPos(p);
//wybijanie kursora przy krawędziach początek
if(p.X < minodrzut) then begin
SetCursorPos(odrzut,p.Y);
X:=odrzut;
end;
if(p.X > ((Rozd.X - minodrzut)-1)) then begin
SetCursorPos((Rozd.X - odrzut),p.Y);
X:=(Rozd.X - odrzut);
end;
GetCursorPos(p);
if(p.Y < minodrzut) then begin
SetCursorPos(p.X ,odrzut);
Y:=odrzut;
end;
if(p.Y > ((Rozd.Y - minodrzut)-1)) then begin
SetCursorPos(p.X ,(Rozd.Y - odrzut));
Y:=(Rozd.Y - odrzut);
end;
//wybijanie kursora przy krawędziach koniec
GetCursorPos(p);
if(X > p.X) then
SetCursorPos(X-(p.X-X) , p.Y)
else if(X < p.X) then
SetCursorPos(X+(X-p.x) , p.Y);
GetCursorPos(p);
if(Y > p.Y) then
SetCursorPos(p.X , Y-(p.Y-Y))
else if(Y < p.Y) then
SetCursorPos(p.X , Y+(Y-p.Y));
GetCursorPos(p);
X := p.X;
Y := p.Y;
end;
X i Y to integer, wsadziłem to do timera. Na win7 wszystko działa ale na XP nie, co jest nie tak?