DP_*_*DP_ 7 delphi winapi delphi-2009
我需要以编程方式将一个字符输入Delphi网格的单元格(在其他应用程序中).
要手动执行此操作,需要执行以下步骤:
按右箭头键.
// 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);
Run Code Online (Sandbox Code Playgroud)但它不起作用.当我运行此代码时,似乎没有任何事情发生.
我应该如何修改此代码,以便它实际模拟用户输入?
Dav*_*nan 13
每按一次按键,然后是按键.所以keybd_event每按一次键需要两个电话.例如,要按F3:
keybd_event(VK_F3, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(VK_F3, 0, KEYEVENTF_KEYUP, 0);
Run Code Online (Sandbox Code Playgroud)
请注意,KEYEVENTF_KEYDOWNWindows头文件或Delphi转换实际上并未定义.定义它0.它使代码更清晰明确地写出来.
当然,您不会通过配对调用来丢弃您的代码keybd_event.但相反,你会将配对的调用包装成一个辅助函数.
在某些情况下,您可能需要指定第二个参数,即扫描代码.但通常没有必要.