高分求VB★发送模拟按键★的方法
■模拟一直按住一个键,Key_event和PostMessage函数我都用了,可以成功发送按键信息,但无法实现一直按住,比如执行一句KeyDown(只执行一次)后,会在记事本上输出一大串相同的对应字母,一直到执行KeyUp才停止,最好能发代码,要简易可行的。 ■必须要实现★一直按住★的效果,只按一下的方法不要费口舌讲了!! ■普通postmessage发送keydown的方法我会,但是并不是真的能模拟一直按住的效果,恳求指点!
实际的操作中,除了功能键能有一直按住效果外,其它字符键都不可以一直按住。 你打开记事本,一直按住A键,等出了一串A字符后不放开A键再按下B键,会出现什么效果?这时A字符当然不会再出现,而会一直出B字符。 那么,要解决你这个问题其实很简单,用timer控件+PostMessage就可以了,在timer中检测中止条件,符合时timer。
enabled =false。 你既然都会用PostMessage了,timer控件对你来说应该是小菜一碟,代码俺就不写了。 另外,我找了下我以前写的一个游戏的外挂代码,其中有模拟按键的: Private Sub timTK4ts_Timer() If MyHP 0 Then PostMessage GHwnd, WM_KEYDOWN, VK_4, MakeKeyLparam(VK_4, WM_KEYDOWN) '键4按下 PostMessage GHwnd, WM_KEYUP, VK_4, MakeKeyLparam(VK_4, WM_KEYUP) '键4放开 End If End Sub 看代码,不post弹开就表示该键是一直按下的,但还是那句老话,只对功能键有用。
。
试试下面的方法。 Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub KeyDown() // 例:空格键的处理 If GetAsyncKeyState(vbKeySpace) <> 0 Then // 处理部分 End If End Sub
答:详情>>