2012-04-11 73 views
2

如何檢測Num Lock指示燈是Excel活躍的Num Lock指示燈...激活狀態欄中

或啓用狀態欄Num Lock指示燈

+1

我知道......如果它解決我的疑問..我肯定會接受.. – John 2012-04-11 10:35:28

+1

+1好問題:)讓我感到莫名其妙的:) – 2012-04-11 14:05:58

+1

不知道爲什麼這是封閉的;這當然與編程有關,因爲正確的答案會顯示它是否在編程上可行。 – 2012-04-12 15:12:58

回答

2

約翰,據我所知(我可能是錯的),但Application.Statusbar不給你與它交互的方式的選擇你要的那個。

我不知道任何API可以達到你想要的。所以,到時候別人來和帖子的方法(如果有的話),回答你的問題是

「這不能做」

HTH

+0

我也試過了,但沒有找到任何解決辦法。 感謝所有回覆的人...... – John 2012-04-12 10:10:08

+1

@John:...等於「接受這個答案」。 – 2012-04-12 15:13:26

1

您標記爲C#你的問題,所以我認爲你正在開發一個C#應用程序。
內,你可以使用

if (Control.IsKeyLocked(Keys.NumLock)) 

來檢測,如果數字鎖定或沒有。

設置民鎖,你可以使用

[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); 
+0

Thaks爲您的答覆.... 我想啓用excel狀態欄的numlock指標 – John 2012-04-11 10:31:08

+0

@John:看看我編輯的答案。不客氣:) – Marco 2012-04-11 10:31:23

+1

@John:excel狀態欄上的numlock指示燈亮起,如果在您的系統中NUMLOCK處於打開狀態;所以如果你模擬按下該鍵,指示燈也會亮起來! – Marco 2012-04-11 10:37:25

0

你可以進去看看NUM鎖是活動的,這是肯定的時,它的活躍反正指標只能說明。如果您需要在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