鼠标的操作

作者在 2010-01-25 17:37:41 发布以下内容
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.

编程点滴 | 阅读 1402 次
文章评论,共0条
游客请输入验证码
浏览2343964次