VFP调用API模拟键盘的问题

Ranger_Ghost 2010-08-03 10:56:02
想用VFP调用API模拟键盘把VFP写的程序里的数据写到其它程序的界面控件里,于是写了个测试表单如下:
先用RegisterHotKey注册热键Ctrl+Alt+V,并绑定表单事件HkTest中,然后在HkTest中写入如下代码:

#DEFINE VK_CONTROL 0x11
#DEFINE KEYEVENTF_KEYUP 0x02
#DEFINE KEYEVENTF_KEYDOWN 0x00

CLEAR TYPEAHEAD

_cliptext = This.Label1.Caption
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( Asc('V'), 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( Asc('V'), 0, KEYEVENTF_KEYUP, 0 )
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 )
keybd_event( 13, 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( 13, 0, KEYEVENTF_KEYUP, 0 )

_cliptext = This.Label2.Caption
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( Asc('V'), 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( Asc('V'), 0, KEYEVENTF_KEYUP, 0 )
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 )
keybd_event( 13, 0, KEYEVENTF_KEYDOWN, 0 )
keybd_event( 13, 0, KEYEVENTF_KEYUP, 0 )

测试愿意是把表单的Label1和Label2的Caption写到其它程序界面的控件里(这两个Label的Caption分别是“Label1”和“Label2”,我测试时是用Win自带的记事本来试的,先运行上面的表单,然后切换到记事本里,按下Ctrl+Alt+V,结果记事本里出现了:

Label2
Label2
Label2
Label1
Label2
Label2
Label1
Label2

Label2
Label1
Label1
Label2
Label1
Label2
Label2
Label2
Label2
Label2
Label2

Label2
Label2
Label1
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2
Label2

这样一大串的东西,而且每次按下Ctrl+Alt+V出现的具体文本会不同,但大致都是如此形式,请问各位大大问题出在哪了?
...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ranger_Ghost 2010-08-08
  • 打赏
  • 举报
回复
已解决,通过加入API函数Sleep,或者换用PostMessage
Ranger_Ghost 2010-08-04
  • 打赏
  • 举报
回复
应该不是这个原因,因为几乎每次按下热键都是类似这样的结果,我觉得还是键盘缓冲的问题,但就是不清楚具体所在和解决方法
十豆三 2010-08-04
  • 打赏
  • 举报
回复
应该是你按下再松开Ctrl+Alt+V时,虽然感觉只按了一下,但程序触发了多次。

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧