这有可能吗?
我想在一个外部应用程序(如fire fox)中按住shift键,然后在再次按下它时释放它,我想让它像caps按钮一样工作。
为了让它更容易理解,可能像这样
按下shift = Keys.Shift.hold = true
和
再次按shift键Keys.shift.hold = false
发布于 2014-05-03 19:23:11
提前为伪代码道歉;我不知道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("+")
https://stackoverflow.com/questions/23448596
复制