2

如何检测数字锁定指示器在excel中处于活动状态...

或在状态栏中启用数字锁定指示器

4

3 回答 3

2

约翰,据我所知(我可能是错的),但它Application.Statusbar并没有给你以你想要的方式与之交互的选项。

我也不知道有任何 API 可以实现您想要的。所以直到其他人来发布一个方法(如果有的话),你的问题的答案是

“做不到”

高温高压

于 2012-04-11T14:04:59.397 回答
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);
于 2012-04-11T10:27:40.000 回答
0

您可以只查看 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
于 2012-04-11T10:29:29.890 回答