如何检测Num锁定指示器在Excel中是否有效...
或在状态栏中启用num lock指示符
答案 0 :(得分:2)
约翰,据我所知(我可能错了)但是Application.Statusbar
没有给你选择以你想要的方式与它互动。
我也不知道任何可以达到你想要的API。所以,直到其他人来并发布方法(如果有的话),你的问题的答案是
“它无法完成”
HTH
答案 1 :(得分:1)
您将问题标记为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);
答案 2 :(得分:0)
您可以看到num-lock是否处于活动状态,因为该指标只会显示它何时处于活动状态。如果您需要在VBA中执行此操作(解决方案取自here)。
'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