我需要以编程方式将一个字符输入到Delphi网格的单元格中(在其他应用程序中)。
要手动执行此操作,需要执行以下步骤:
1.按F3键。
1.按向右箭头键3次。
1.按空格键。
1.在键盘上输入字母‘E’。
1.按向右箭头键。
// 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);
但这并不管用。当我运行这段代码时,似乎什么都没有发生。
我应该如何修改这段代码,使其真正模拟用户输入?
2条答案
按热度按时间cgh8pdjw1#
每次按键都是先按下一次键,然后再按一次向上键。因此,每次按键都需要两次调用
keybd_event
。例如,要按F3:请注意,
KEYEVENTF_KEYDOWN
实际上不是由Windows头文件或Delphi转换定义的。将其定义为0
。不过,这会使代码更清楚地写出来。自然,您不会在代码中使用对
keybd_event
的成对调用。但是相反,您将把成对的调用 Package 到一个助手函数中。在某些情况下,您可能需要指定第二个参数,即扫描码。但这通常是不必要的。
eiee3dmh2#
使用Waldemar Derr先生的https://github.com/WladiD/SendInputHelper。
示例: