delphi - 以编程方式模拟用户输入的简单方法是什么?

标签 delphi mouseevent keypress screensaver delphi-2006

由于错误情况,我弹出一个对话框。我希望对话框保持打开状态至少 30 秒,并在收到最后一次用户输入(鼠标或键盘)后关闭 30 秒。

我可以通过检查 GetLastInputInfo 返回的值并在超过 30 秒前关闭对话框来实现此目的,但如果在用户超过 30 秒没有使用鼠标或键盘时弹出对话框,则GetLastInputInfo 测试立即通过,并且对话框立即再次关闭。我可以使用另一个计时器来完成此操作,但我认为在对话框打开之前模拟鼠标移动一点或发出(无害的)按键会更简单。据推测,它还有一个优势,可以将系统踢出屏幕保护程序。

实现此目的最简单的 1 行 Delphi 代码片段是什么?

最佳答案

最简单的是使用 keybd_event函数(一行代码)

keybd_event(Ord('A'), 0, 0, 0);

您也可以使用SendInput函数,但需要多行:)

Var
  pInputs : TInput;
begin
    pInputs.Itype := INPUT_KEYBOARD;
    pInputs.ki.wVk := Ord('A');
    pInputs.ki.dwFlags := KEYEVENTF_KEYUP;
    SendInput(1, pInputs, SizeOf(pInputs));
end;

关于delphi - 以编程方式模拟用户输入的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723104/

相关文章:

delphi - 在此过程中,Delete 是否做了任何事情?

java - 调整窗口大小时组件移动到原始位置

wpf - 在WPF中处理MVVM中的鼠标事件

PowerShell:打开和关闭 "Num Lock"。

qt - 检测 QLineEdit 或 QPushButton 上的输入

delphi - 创建 TDictionary<TKey,TValue> 的反向键列表的简单方法?

sql - 解析 SQL 语句的库

java - 在 Java 中将 MouseEvent/MouseListener 链接到 ActionMap/InputMap 绑定(bind)

jquery - 使用 jQuery 按向上或向下键跳转到上一个或下一个元素

delphi - 更改来自 Delphi TWebBrowser 的 AJAX 调用的用户代理