求vb之PostMessage 的函数

来源:百度知道 编辑:UC知道 时间:2024/06/02 03:44:09
我现在需要模拟键盘动作,要求,我一调用一个函数,该函数能通过PostMessage或者其他的可以给后台无焦点的窗口传值的api来自动模拟按键数字键1一下,F1一下,还有tab键一下。
要求对方一定经过自己的测试并且确认生效。
一旦通过我的认可,我愿意再追加分数,能追加一百分决不追加50分,坚决追加最大积分,绝不小气。
postMessage 66048, WM_KEYDOWN, VK_A, 0&
postMessage 66048, WM_UP, VK_A, 0&
我用这个,向句柄66048的后台窗口发信息失败。另外我想延迟几秒后再按键,用什么方法可以实现?
你们知道什么更好的方法可以向后台窗口传送模拟键盘信息?
VK_A这样的常数我都已经定义好了,只是我要实现向后台的窗口传送操作信息,一楼的朋友虽然能够实现其操作,但是不能实现向后台发送数据,你们谁能解决这一问题立刻给分!sleep不行,声明了sleep的api后也不能正常使用,老是报错。

要延迟几秒发送按键信息,可以用sleep函数。
使用前先声明API函数。
Private declare sub sleep lib"kernel32"(byval dwmilliseconds as long)

在发送键码前,调用一下Sleep:
Sleep(3000) '延迟3秒

还可以使用keybd_event来发送键码,放入1个按钮且运行前打开一个记事本看效果。

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const VK_1 = &H31
Private Const VK_F1 = &H70
Private Const VK_TAB = &H9

Private Const KEYEVENTF_KEYUP = &H2
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
AppActivate ("无标题 - 记事本") '激活记事本窗口

Sleep (3000) '延迟3秒后按键

keybd_event VK_1, 0, 0, 0 '按下数字1
Sleep (300)

keybd_event VK_F1, 0, 0, 0 '按下F1
Sleep (300)

keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
Sleep (300)

keybd_e