程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 利用熱鍵控制鼠標移動的一個程序

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

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

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

   

  unit MainUnit;

  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;
      procedure btnExitClick(Sender: TObject);
      procedure btnSetHKClick(Sender: TObject);
      procedure btnUnsetHKClick(Sender: TObject);
      procedure OnHotKey(var Message: TWMHOTKEY); message WM_HOTKEY;
      procedure FormDestroy(Sender: TObject);
    public
      { Public declarations }
    end;

  var
    Form1: TForm1;

  const
    idHotKey : Word = 0;

  implementation

  {$R *.DFM}

  procedure TForm1.btnExitClick(Sender: TObject);
  begin
   
    Close;
  end;

  procedure TForm1.btnSetHKClick(Sender: TObject);
  begin
    if idHotKey<>0 then Exit;
    idHotKey := GlobalAddAtom('EmuMouse'); //給熱鍵取得一個唯一的標識
    RegisterHotKey(Handle, idHotKey, 0, VK_NUMPAD5); //注冊熱鍵
  end;

  procedure TForm1.OnHotKey(var Message: 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;

  procedure TForm1.btnUnsetHKClick(Sender: TObject);
  begin
    if idHotKey = 0 then Exit;
    UnRegisterHotKey(Handle, idHotKey); //注銷熱鍵
    DeleteAtom(idHotKey); //注銷標識
    idHotKey := 0;
  end;

  procedure TForm1.FormDestroy(Sender: TObject);
  begin
    btnUnsetHK.Click;
  end;

  end.
  

  


  

  這是dfm文件

  object Form1: 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
    object btnSetHK: TButton
      Left = 136
      Top = 8
      Width = 75
      Height = 25
      Caption = '設置熱鍵(&H)'
      TabOrder = 0
      OnClick = btnSetHKClick
    end
    object btnExit: TButton
      Left = 136
      Top = 72
      Width = 75
      Height = 25
      Caption = '退出(&X)'
      TabOrder = 2
      OnClick = btnExitClick
    end
    object GroupBox2: TGroupBox
      Left = 0
      Top = 0
      Width = 129
      Height = 97
      Caption = '目的坐標'
      TabOrder = 3
      object Label3: TLabel
        Left = 16
        Top = 29
        Width = 6
        Height = 12
        Caption = 'X'
      end
      object Label4: TLabel
        Left = 16
        Top = 61
        Width = 6
        Height = 12
        Caption = 'Y'
      end
      object edXPos: TMaskEdit
        Left = 32
        Top = 24
        Width = 73
        Height = 20
        EditMask = '0000;1;_'
        MaxLength = 4
        TabOrder = 0
        Text = '0000'
      end
      object edYPos: TMaskEdit
        Left = 32
        Top = 56
        Width = 73
        Height = 20
        EditMask = '0000;1;_'
        MaxLength = 4
        TabOrder = 1
        Text = '0000'
      end
    end
    object btnUnsetHK: TButton
      Left = 136
      Top = 40
      Width = 75
      Height = 25
      Caption = '取消熱鍵(&U)'
      TabOrder = 1
      OnClick = btnUnsetHKClick
    end
    object Memo: TMemo
      Left = 0
      Top = 104
      Width = 209
      Height = 161
      TabOrder = 4
    end
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved