Vb.net Visual Basic向下键和向上键

Vb.net Visual Basic向下键和向上键,vb.net,Vb.net,好的,我正在写一个程序,它有一个设置为10毫秒的定时器,用来不断检查按钮的状态。当按钮按下时,我希望它按下我设置的键盘键,然后释放按钮,我希望设置键向上 我尝试了发送键。发送键,但由于程序是在定时器上运行的,它会继续对该键进行垃圾邮件发送。Iv还尝试使用keybd_事件(87,0,2,0)。在这一次,它按了W键,这是应该的,但只有一次,然后出现了这个错误 检测到PINVOKESSTACK不平衡 调用PInvoke函数'Mercury!Mercury.Player1::keybd_事件“使堆栈不平

好的,我正在写一个程序,它有一个设置为10毫秒的定时器,用来不断检查按钮的状态。当按钮按下时,我希望它按下我设置的键盘键,然后释放按钮,我希望设置键向上

我尝试了发送键。发送键,但由于程序是在定时器上运行的,它会继续对该键进行垃圾邮件发送。Iv还尝试使用
keybd_事件(87,0,2,0)
。在这一次,它按了W键,这是应该的,但只有一次,然后出现了这个错误

检测到PINVOKESSTACK不平衡

调用
PInvoke
函数
'Mercury!Mercury.Player1::keybd_事件“
使堆栈不平衡。这可能是因为托管
PInvoke
签名与非托管目标签名不匹配。检查
PInvoke
签名的调用约定和参数是否与目标非托管签名匹配

我不知道这意味着什么,但如果知道它有用的话,有人能解释一下吗?谢谢 那么,是的,在计时器内按下一个键是可能的吗


提前感谢任何能提供帮助的人。

根据回复将评论作为答案发布:

天哪,谢谢你!!将Long更改为Integer完全符合我的要求 受通缉的你不知道我寻找这个答案有多久了 哈哈。谢谢大家!


当API声明中的数据类型错误时,通常会发生PinVokesTack不平衡。最有可能的是,您选择了一个适用于VB6的API,但没有意识到这一点。通常,您需要将Long更改为整数。向我们展示您的API声明,我们可以帮助您更正它。

您正在尝试重新映射密钥吗?如果是这样的话,为什么不直接处理表单的KeyDown事件并让它在那里重新映射按键呢?不,当我点击表单上的一个按钮时,我试图模拟一个按键,而按键会集中在哪里?它会模拟什么按键?你能解释一下你的意思吗?谢谢你想把按键发送到哪里?文本框、不同的表单、不同的应用程序等?