我需要以编程方式将一个字符输入到Delphi网格(在其他应用程序中)的单元格中。在Delphi中使用WinAPI模拟键盘输入
为了手动做到这一点,需要以下步骤:
- 按F3键。
- 按向右箭头键3次。
- 按空格按钮。
- 在键盘上键入字母'E'。
按右箭头键。
// Press F3 button keybd_event(VK_F3, 0, 0, 0); // Press right arrow key 3 times keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); // Press the space button keybd_event(VK_SPACE, 0, 0, 0); // Type letter E keybd_event(Ord('E'), 0, 0, 0); // Move to the right keybd_event(VK_RIGHT, 0, 0, 0);
但它不工作。当我运行这个代码时,似乎没有任何事情发生。
我应该如何修改这段代码才能真正模拟用户输入?
前段时间我做了一些关于['虚拟键盘'](http://stackoverflow.com/a/12565963/960757)(还有很多其他的)。但是对于你的问题,如果你的目标是'TStringGrid',我认为你不能做任何事情而不是关注它并模拟你的击键(如果我记得没错,'TStringGrid'不响应任何类型的消息能够设置单元格的文本)。 – TLama
在这个特定的应用程序中,只能通过键盘将值输入到网格中。我已经使用AutoHotKey和MS UI Automation完成了这一工作,但现在需要在Delphi中重写此代码。 –
我不能依赖被聚焦的网格,因为目标系统上有一个程序,它每200毫秒激活一次。 –