这可能吗?
我想在外部应用程序(例如火狐)中按下我的班次 当我再次按下时释放它, 我想让它像帽子按钮一样工作。
让它更容易理解, 也许像是
按下班次 Keys.Shift.hold = true
和
再次按下班次 Keys.shift.hold = false
答案 0 :(得分:1)
预先为伪代码道歉;我不知道VB.net。如果您对C ++感到满意,可以调整this question中的代码,我将其用作参考。
您可以使用SendInput Windows API。根据函数的描述,它
合成击键,鼠标移动和按钮点击。
您将需要确保您的目标程序的流程完整性低于您的目标程序 - 换句话说,如果您的流程未以管理员身份运行,请勿尝试向管理员提供事件级别的过程 - 但是既然你提到了Firefox,我不认为这对你来说是一个问题。
您需要设置KEYBDINPUT
structure,如下所示:
wVk = VK_SHIFT
dwFlags = 0 (this will press a key. You'll want KEYEVENTF_KEYUP instead for releasing it.)
然后,设置INPUT
structure,如下所示:
type = INPUT_KEYBOARD
ki = yourKeybdInputStruct
现在将整个INPUT
结构传递给SendInput
:
SendInput(1, &yourInputStruct, sizeof(yourInputStruct))
或者,您可以尝试使用VB.net SendKeys
class。这堂课有一些警告;最值得注意的是,
如果您的应用程序适用于各种键盘的国际使用,则使用Send可能会产生不可预测的结果,应该避免使用。
此外,官方文档没有提及单独使用修改键(Shift,Ctrl,Alt),也不支持按照您描述的方式按住键,只需发送常规按键(keydown-keyup) )。
但是,如果您愿意处理这些问题,可能会有效:
SendKeys.Send("+")