首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Delphi中使用SendInput?

在Delphi中使用SendInput可以实现模拟键盘和鼠标事件,以下是一个简单的示例:

首先,需要在Delphi中引入Windows API函数SendInput:

代码语言:delphi
复制
uses
  Windows;

const
  SM_CXSCREEN = 0;
  SM_CYSCREEN = 1;

type
  TInput = record
    Type_: DWORD;
    case Integer of
      0: (mi: TMouseInput);
      1: (ki: TKeybdInput);
      2: (hi: THardwareInput);
  end;
  TInputs = array of TInput;

function SendInput(cInputs: UINT; pInputs: PInput; cbSize: Integer): UINT; stdcall; external 'user32.dll';

然后,可以使用以下代码模拟鼠标点击事件:

代码语言:delphi
复制
procedure ClickMouse(X, Y: Integer);
var
  Inputs: TInputs;
  Input: TInput;
begin
  SetLength(Inputs, 2);

  Input.Type_ := INPUT_MOUSE;
  Input.mi.dx := X;
  Input.mi.dy := Y;
  Input.mi.mouseData := 0;
  Input.mi.dwFlags := MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE;
  Inputs[0] := Input;

  Input.mi.dwFlags := MOUSEEVENTF_LEFTDOWN;
  Inputs[1] := Input;

  SendInput(2, Inputs[0], SizeOf(Input));

  Input.mi.dwFlags := MOUSEEVENTF_LEFTUP;
  Inputs[1] := Input;

  SendInput(2, Inputs[0], SizeOf(Input));
end;

以下是使用SendInput模拟键盘按键事件的示例代码:

代码语言:delphi
复制
procedure KeyPress(Key: Word);
var
  Inputs: TInputs;
  Input: TInput;
begin
  SetLength(Inputs, 2);

  Input.Type_ := INPUT_KEYBOARD;
  Input.ki.wVk := Key;
  Input.ki.wScan := MapVirtualKey(Key, 0);
  Input.ki.dwFlags := 0;
  Input.ki.time := 0;
  Input.ki.dwExtraInfo := 0;
  Inputs[0] := Input;

  Input.ki.dwFlags := KEYEVENTF_KEYUP;
  Inputs[1] := Input;

  SendInput(2, Inputs[0], SizeOf(Input));
end;

以上代码示例可以实现在Delphi中使用SendInput模拟鼠标点击和键盘按键事件。需要注意的是,在使用SendInput函数时,需要确保程序具有足够的权限,以便能够模拟输入事件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

34秒

PS使用教程:如何在Photoshop中合并可见图层?

3分54秒

PS使用教程:如何在Mac版Photoshop中制作烟花效果?

36秒

PS使用教程:如何在Mac版Photoshop中画出对称的图案?

1分6秒

PS使用教程:如何在Mac版Photoshop中制作“3D”立体文字?

4分36秒

04、mysql系列之查询窗口的使用

1分55秒

uos下升级hhdesk

2分7秒

基于深度强化学习的机械臂位置感知抓取任务

59秒

BOSHIDA DC电源模块在工业自动化中的应用

48秒

DC电源模块在传输过程中如何减少能量的损失

1分1秒

BOSHIDA 如何选择适合自己的DC电源模块?

58秒

DC电源模块的优势

53秒

DC电源模块如何选择定制代加工

领券