2012-03-20 9 views
6

Vorrei poter attivare e disattivare il tasto "Bloc Num" sulla tastiera. Ho provato più esempi sul web e qui, senza successo. Questa è la cosa più vicina che ho avuto modo di una soluzione:PowerShell: attiva/disattiva "Num Lock".

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

Il codice di cui sopra sembra che potrebbe funzionare e vedo l'indicatore "Num Lock" sul mio flash della tastiera per un secondo, ma non è così " bastone".

risposta

12

Ho sperimentato lo stesso flicker on/off che hai fatto.

Questo funziona bene per me, però, fare un tentativo:

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

PERFETTO! Questo ha funzionato perfettamente. – Vippy

+0

(questo mi fa chiedere quali problemi di PowerShell non siano stati raggiunti da Andy!) – Sune

+0

Sembra che "Guru" sia un eufemismo per 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

Per quello che vale, dal punto di vista della tastiera, il sistema operativo invia un set e poi un reset del tasto di commutazione (tappi, blocco scorrimento, numlock) quando si utilizza [System.Windows.Forms.SendKeys] :: SendWait ("{CAPSLOCK}"), ma invia solo un singolo evento utilizzando WScript.Shell.