如何检测数字锁定指示器在excel中处于活动状态...
或在状态栏中启用数字锁定指示器
约翰,据我所知(我可能是错的),但它Application.Statusbar
并没有给你以你想要的方式与之交互的选项。
我也不知道有任何 API 可以实现您想要的。所以直到其他人来发布一个方法(如果有的话),你的问题的答案是
“做不到”
高温高压
您将问题标记为 C#,所以我认为您正在开发 C# 应用程序。
在它里面你可以使用
if (Control.IsKeyLocked(Keys.NumLock))
检测 NumLock 是否打开。
要设置 Num-Lock 你可以使用
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
private void PressKb(Keys keyCode)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
和它
PressKb(Keys.NumLock);
您可以只查看 num-lock 是否处于活动状态,因为该指示器肯定只在它处于活动状态时才显示。如果您需要在 VBA 中执行此操作(从此处获取的解决方案)。
'put these declarations at the top of the module
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long)
As Integer
Private Const kNumlock = 144
以及您需要的地方:
Public Function NumLock() As Boolean
NumLock = KeyState(kNumlock)
End Function
Private Function KeyState(lKey As Long) As Boolean
KeyState = CBool(GetKeyState(lKey))
End Function