我正在尝试编写代码来检查Capslock是否使用VB.net。我在网上找到了一些代码,但似乎有问题。这就是我迄今为止所尝试的。
If My.Computer.Keyboard.CapsLock = True Then
Dim intmessage As Long
intmessage = MsgBox("Would you like to exit the loop and close the application?", vbYesNo)
If intmessage = vbYes Then Application.Exit()
End If
If Control.IsKeyLocked(Keys.CapsLock) = True Then
Dim intmessage As Long
intmessage = MsgBox("Would you like to exit the loop and close the application?", vbYesNo)
If intmessage = vbYes Then Application.Exit()
End If
我有一长串的重复性任务,我想在我的电脑上运行。但我也希望有能力暂停这些任务与按下一个按钮。这个想法是,我将循环这些任务,定期检查Capslock,如果我想中断任务,我将使用它。随着循环的继续,如果我打开Capslock,我将可以选择暂停或退出循环。无论出于何种原因,这两次尝试都只是在应用程序启动时捕获Capslock的初始密钥状态。如果在我启动应用程序并开始循环时Capslock处于打开状态,则这些函数总是返回True。如果Capslock在我启动应用程序并开始循环时关闭,则这些始终返回False。这就像我需要刷新键盘控制或什么的。我需要的是开始时关闭Capslock,但在打开Capslock时要正确更新。
谢谢.
2条答案
按热度按时间p4rjhz4m1#
在窗体设计器的组件下添加计时器。将间隔设置为1000,并将enable设置为true。
然后添加此代码。
此代码强制CapsLock在再次提问前循环关闭/打开。注意MessageBox和DialogResult的使用。
编辑:
使用WndProc的另一种方法
然后在代码中周期性地调用this,
db2dz4w82#
我从来没有真正解决过这个问题。然而,我想出了一个变通办法,这是实际的我的情况。这可能不适用于所有人,但有几种方法可以使用类似的策略。
我经常使用MySQL。因此,我设置了一个表(tblStop),它只包含一行,在该行中,它在onoff列中包含1或0。现在,我设置了循环来检查并查看在每次迭代后哪个数字保存在那里。我让它在0时断裂,就像我打算让它在capslockon时断裂一样。
我创建了两个非常简单的应用程序,一个名为ON,另一个名为OFF。这些选项可适当地打开或关闭tblStop。然后我把它们钉在我的腰带上,这样我就可以很容易地把它们挂起来。