PDA

View Full Version : سوال: جلوگيری از screen saver با شبیه سازی حرکت ماوس



mbshareat
چهارشنبه 19 خرداد 1395, 20:47 عصر
سلام
من برای محافظ صفحه نمایش تعیین کردم که هر 2 دقیقه که ماوس و صفحه کلید بی استفاده بود، مانیتور رو خاموش کنه.
برای این کار یه hotkey تعریف کردم که تعیین می کنه یه تایمر فعال و غیر فعال بشه و در تایمر هم ماوس رو چپ و راست ببرم.اما نمی دونم چرا ماوس گاهی بالا میره و گاهی چپ و گاهی هر دو!
این هم کدش:

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
Procedure WMHotkey( Var msg: TWMHotkey ) ;message WM_HOTKEY;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotkey( Handle, 1) ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotkey (Handle, 1, MOD_Alt, Ord('Z'));
end;
procedure MouseMoveTo(X,Y:Integer);
begin
X := Round(X * (65535 / Screen.Width)) ;
Y := Round(Y * (65535 / Screen.Height)) ;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, X, Y, 0, 0) ;
end;
Procedure TForm1.WMHotkey( Var msg: TWMHotkey ) ;
Begin
If msg.hotkey = 1 Then
Begin
if Timer1.Enabled then
Timer1.Enabled:=False
Else
Timer1.Enabled:=true;
End;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Odd(Mouse.CursorPos.X) then
MouseMoveTo(Mouse.CursorPos.X-1,Mouse.CursorPos.Y)
else
MouseMoveTo(Mouse.CursorPos.X+1,Mouse.CursorPos.Y) ;
Caption:=IntToStr(Mouse.CursorPos.X);
end;


end.

من فقط میخوام ماوس در جا یک پیکسل چپ و راست بشه!