Delphi锁定鼠标 模拟左右键 静止一会自动隐藏鼠标


本文整理自网络,侵删。

 
unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ImgList, ComCtrls, ExtCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Timer1: TTimer;

    Button6: TButton;

    Label1: TLabel;

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    Button5: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure Button4Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var  pt: TPoint;

begin  

   //模拟左键单击

  If RadioButton1.Checked Then

   Begin

    pt:= Edit1.ClientToScreen( Point(4,4));   //鼠标定位

    SetCursorPos( pt.x, pt.y );

    mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );

    mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );

   end;

   //模拟右键单击

  If RadioButton2.Checked Then

   Begin

    pt:= Edit1.ClientToScreen(Point(4,4));       //鼠标定位

    SetCursorPos( pt.x, pt.y );

    mouse_event( MOUSEEVENTF_RightDOWN, 0, 0, 0, 0 );

    mouse_event( MOUSEEVENTF_RightUP, 0, 0, 0, 0 );

   end;

 end;

procedure TForm1.Button2Click(Sender: TObject);

var btn3Rect: TRect;

begin

 btn3Rect := Button3.BoundsRect;

 MapWindowPoints(handle,0, btn3Rect, 2);  // 坐标换算

 ClipCursor(@btn3Rect);                   // 限制鼠标移动区域

end;

procedure TForm1.Button3Click(Sender: TObject);

var btScreen: TRect;

begin

 btScreen := Rect(0, 0, Screen.Width, Screen.Height);

 ClipCursor(@btScreen);       //解琐,使鼠标在整个屏幕有效

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

  cursor:=crNone;   //2秒钟没有移动鼠标就在当前窗体隐藏鼠标

end;

 

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

if Timer1.Enabled=True  then //判断定时器是否打开

begin                        //如打开,则重新开始计时

 Timer1.Enabled:=False;

 Timer1.Enabled:=True;

 end;

 cursor:=crDefault;          //鼠标移动时,改变光标类型为缺省类型

end;

 

procedure TForm1.Button6Click(Sender: TObject);

var mouseinfo:string;

begin

    //检测是否安装了鼠标

 If (GetSystemMetrics(SM_MOUSEPRESENT)<>0) Then

     mouseinfo:='1.系统检测到鼠标;'

  Else  mouseinfo:='1.系统没有鼠标;';

   //检测鼠标是否支持滑动

 If (GetSystemMetrics(SM_MOUSEWHEELPRESENT)<> 0) Then

     mouseinfo:=mouseinfo+'2.系统支持滑动鼠标。'

  Else  mouseinfo:=mouseinfo+'2.系统不支持滑动鼠标。';

Label1.Caption:=mouseinfo;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

  SwapMouseButton(True);    //交换左右键

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

   SwapMouseButton(False); //复原左右键

end;

end.

相关阅读 >>

Delphi获取文件或文件夹属性和修改属性

Delphi richedit中插入带背景色文本的一种思路

Delphi 获取用户当前的windows临时文件夹

fmsoft_unigui个文件说明

Delphi 线程同步(线程安全)

Delphi 10.3.1新的变量的声明方法

Delphi 禁止截屏printscreen

Delphi里面控制edit只能输入数字

Delphi 获取带分隔符字符串中的字段值

win7下使用Delphi7的方法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...