Vb.net Net,保持按住shift键,并在完成某些功能后释放?

Vb.net Net,保持按住shift键,并在完成某些功能后释放?,vb.net,shift,Vb.net,Shift,可能吗 我希望在外部应用程序(如fire fox)中按住shift键 当我再次按下时松开它, 我希望它能像caps按钮一样工作 为了便于理解, 也许像 按下shift键 Keys.Shift.hold=true 及 再次按下shift键 Keys.shift.hold=false提前为伪代码道歉;我不知道VB.net。如果您对C++感到满意,您可以从我引用的代码中修改代码。 您可以使用。根据函数的描述,它 合成击键、鼠标移动和按钮单击 您需要确保您的目标程序的进程完整性低于您的程序-换句话说,如

可能吗

我希望在外部应用程序(如fire fox)中按住shift键 当我再次按下时松开它, 我希望它能像caps按钮一样工作

为了便于理解, 也许像

按下shift键 Keys.Shift.hold=true

再次按下shift键
Keys.shift.hold=false

提前为伪代码道歉;我不知道VB.net。如果您对C++感到满意,您可以从我引用的代码中修改代码。 您可以使用。根据函数的描述,它

合成击键、鼠标移动和按钮单击

您需要确保您的目标程序的进程完整性低于您的程序-换句话说,如果您的进程不是以管理员身份运行的,请不要尝试将事件提供给管理员级别的进程-但由于您提到Firefox,我不认为这对您是个问题

您将需要设置如下所示的:

wVk = VK_SHIFT
dwFlags = 0 (this will press a key. You'll want KEYEVENTF_KEYUP instead for releasing it.)
type = INPUT_KEYBOARD
ki = yourKeybdInputStruct
然后,像这样建立一个

wVk = VK_SHIFT
dwFlags = 0 (this will press a key. You'll want KEYEVENTF_KEYUP instead for releasing it.)
type = INPUT_KEYBOARD
ki = yourKeybdInputStruct
现在将整个
INPUT
结构传递给
SendInput

SendInput(1, &yourInputStruct, sizeof(yourInputStruct))

或者,您可以尝试使用VB.net。这门课有一些警告;最显著的是

如果您的应用程序打算与各种键盘一起在国际上使用,那么使用Send可能会产生不可预测的结果,应该避免使用

此外,官方文档中没有提到单独使用修改键(Shift、Ctrl、Alt),也不支持按您描述的方式按住键,只发送常规的击键(keydown-keyup)

但是,如果您愿意处理这些问题,这可能会奏效:

SendKeys.Send("+")

这是最简单的解释吗?我想哭XD@Kaozty据我所知,这是最简单的解决方案,可以完全满足您的需求。我已经添加了一种您可以尝试的替代方法,但此imho存在严重问题,我强烈建议您按照我最初的建议使用
SendInput
API。自.NET 3.0以来,
SendKeys
实际上使用
SendInput
。因此,适用于
SendKeys
的任何注意事项也适用于
SendInput
。仅仅为简单的用例调用
SendInput
所需的一切可能并不值得。是的,加号是换档键的特殊信号。