2012-03-20 37 views
6

Tôi muốn bật và tắt phím "Num Lock" trên bàn phím. Tôi đã thử nhiều ví dụ trên web và ở đây, không thành công. Đây là điều gần nhất tôi đã có cho một giải pháp:PowerShell: Bật và tắt "Num Lock".

[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms") 
[System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}") 

Mã trên có vẻ như hoạt động và tôi nhìn thấy chỉ báo "Num Lock" trên đèn flash của tôi trong một giây nhưng không " gậy".

Trả lời

12

Tôi đã trải nghiệm cùng một nhấp nháy bật/tắt mà bạn đã thực hiện.

này hoạt động tốt đối với tôi mặc dù, cung cấp cho nó một thử:

$wsh = New-Object -ComObject WScript.Shell 
$wsh.SendKeys('{NUMLOCK}') 
+0

HOÀN THÀNH! Điều này làm việc hoàn hảo. – Vippy

+0

(điều này khiến tôi băn khoăn về những vấn đề của Powershell mà Andy chưa từng gặp!) – Sune

+0

Có vẻ như "Guru" sẽ là một lời nói dối cho Andy. PowerShell overlord? – Vippy

0
intTime=0 
strInputVal=InputBox("Enter the time","Enter Hours in Int") 
intTime=strInputVal * 60 * 60 

set WshShell = WScript.CreateObject("WScript.Shell") 
For i = 1 to intTime 
    WScript.Sleep 500 
    WshShell.SendKeys "{NUMLOCK}" 
    WScript.Sleep 500 
Next 
WScript.Quit 
Set WshShell = Nothing 
1

Đối với những gì nó có giá trị, từ quan điểm của bàn phím, hệ điều hành sẽ gửi một bộ và sau đó thiết lập lại của Phím chuyển đổi (caps, scroll lock, numlock) khi sử dụng [System.Windows.Forms.SendKeys] :: SendWait ("{CAPSLOCK}"), nhưng chỉ gửi một sự kiện duy nhất bằng WScript.Shell.