利用熱鍵控制鼠標移動的一個程序

時間:2022-11-17 10:34:00

導語:利用熱鍵控制鼠標移動的一個程序一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

利用熱鍵控制鼠標移動的一個程序

本程序可以使用熱鍵來將鼠標移動到某一個指定的坐標。是一個定義熱鍵的示例程序

本程序的熱鍵為小鍵盤的5,在編輯框內可以指定坐標。

unitMainUnit;

interface

uses

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

StdCtrls,Mask;

type

TForm1=class(TForm)

btnSetHK:TButton;

btnExit:TButton;

GroupBox2:TGroupBox;

Label3:TLabel;

Label4:TLabel;

btnUnsetHK:TButton;

edYPos:TMaskEdit;

edXPos:TMaskEdit;

Memo:TMemo;

procedurebtnExitClick(Sender:TObject);

procedurebtnSetHKClick(Sender:TObject);

procedurebtnUnsetHKClick(Sender:TObject);

procedureOnHotKey(varMessage:TWMHOTKEY);messageWM_HOTKEY;

procedureFormDestroy(Sender:TObject);

public

{Publicdeclarations}

end;

var

Form1:TForm1;

const

idHotKey:WORD=0;

implementation

{$R*.DFM}

procedureTForm1.btnExitClick(Sender:TObject);

begin

Close;

end;

procedureTForm1.btnSetHKClick(Sender:TObject);

begin

ifidHotKey<>0thenExit;

idHotKey:=GlobalAddAtom(''''EmuMouse'''');//給熱鍵取得一個唯一的標識

RegisterHotKey(Handle,idHotKey,0,VK_NUMPAD5);//注冊熱鍵

end;

procedureTForm1.OnHotKey(varMessage:TWMHOTKEY);

var

Point:TPoint;

X,Y:Word;

begin

GetCursorPos(Point);//取回當前坐標

try

X:=StrToInt(edXPos.Text);

Y:=StrToInt(edYPos.Text);

except

ShowMessage(''''坐標輸入不正確.'''');

Exit;

end;

try

Mouse_Event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_LEFTDOWN,Point.X,Point.Y,0,GetMessageExtraInfo);

SetCursorPos(X,Y);

Mouse_Event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_LEFTUP,X,Y,0,GetMessageExtraInfo);

except

ShowMessage(''''Error'''');

end;

end;

procedureTForm1.btnUnsetHKClick(Sender:TObject);

begin

ifidHotKey=0thenExit;

UnRegisterHotKey(Handle,idHotKey);//注銷熱鍵

DeleteAtom(idHotKey);//注銷標識

idHotKey:=0;

end;

procedureTForm1.FormDestroy(Sender:TObject);

begin

btnUnsetHK.Click;

end;

end.

--------------------------------------------------------------------------------

這是dfm文件

objectForm1:TForm1

Left=296

Top=238

AutoSize=True

BorderStyle=bsDialog

BorderWidth=8

Caption=''''模擬鼠標拖動''''

ClientHeight=265

ClientWidth=211

Color=clBtnFace

Font.Charset=GB2312_CHARSET

Font.Color=clWindowText

Font.Height=-12

Font.Name=''''新宋體''''

Font.Style=[]

OldCreateOrder=False

OnDestroy=FormDestroy

PixelsPerInch=96

TextHeight=12

objectbtnSetHK:TButton

Left=136

Top=8

Width=75

Height=25

Caption=''''設置熱鍵(&H)''''

TabOrder=0

OnClick=btnSetHKClick

end

objectbtnExit:TButton

Left=136

Top=72

Width=75

Height=25

Caption=''''退出(&X)''''

TabOrder=2

OnClick=btnExitClick

end

objectGroupBox2:TGroupBox

Left=0

Top=0

Width=129

Height=97

Caption=''''目的坐標''''

TabOrder=3

objectLabel3:TLabel

Left=16

Top=29

Width=6

Height=12

Caption=''''X''''

end

objectLabel4:TLabel

Left=16

Top=61

Width=6

Height=12

Caption=''''Y''''

end

objectedXPos:TMaskEdit

Left=32

Top=24

Width=73

Height=20

EditMask=''''0000;1;_''''

MaxLength=4

TabOrder=0

Text=''''0000''''

end

objectedYPos:TMaskEdit

Left=32

Top=56

Width=73

Height=20

EditMask=''''0000;1;_''''

MaxLength=4

TabOrder=1

Text=''''0000''''

end

end

objectbtnUnsetHK:TButton

Left=136

Top=40

Width=75

Height=25

Caption=''''取消熱鍵(&U)''''

TabOrder=1

OnClick=btnUnsetHKClick

end

objectMemo:TMemo

Left=0

Top=104

Width=209

Height=161

TabOrder=4

end

end