2

How to detect Num lock indicator is active in excel...

Or enable num lock indicator in status bar

4

3 に答える 3

2

ジョン、私が知る限り (間違っている可能性もあります)、Application.Statusbarあなたが望むように操作するオプションはありません。

あなたが望むものを達成できるAPIについても知りません。したがって、他の誰かが来てメソッドを投稿するまで(ある場合)、あなたの質問に対する答えは

「それはできません」

HTH

于 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 に答える