2012-03-20 11 views
6

मैं कीबोर्ड पर "न्यू लॉक" कुंजी को चालू और बंद करने में सक्षम होना चाहता हूं। मैंने बिना किसी सफलता के वेब और यहां कई उदाहरणों की कोशिश की है। यह निकटतम बात मैं एक समाधान करने के लिए मिल गया है है:पावरशेल: "न्यू लॉक" को चालू और बंद टॉगल करें।

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

है जैसे कि यह काम हो सकता है और मैं एक पल के लिए अपने कीबोर्ड फ्लैश पर "Num लॉक" संकेतक दिखाई उपरोक्त कोड दिखता है, लेकिन यह नहीं है " छड़ी "।

उत्तर

12

मैंने आपके द्वारा किए गए झटके पर/बंद अनुभव किया।

यह हालांकि मेरे लिए ठीक काम करता है, इसे आजमाइए:

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

परफेक्ट! यह पूरी तरह से काम किया। – Vippy

+0

(इससे मुझे आश्चर्य होता है कि पावरहेल की समस्याएं एंडी से मुलाकात नहीं हुई हैं!) – Sune

+0

ऐसा लगता है कि "गुरु" एंडी के लिए एक अल्पसंख्यक होगा। पावरशेल ओवरलैर्ड? – 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

क्या इसके लायक है, कीबोर्ड के नजरिए से के लिए, ओएस एक सेट और उसके बाद की एक रीसेट भेजता है [System.Windows.Forms.SendKeys] :: SendWait ("{CAPSLOCK}") का उपयोग करते समय टॉगल कुंजी (कैप्स, स्क्रॉल लॉक, नंबल) :: लेकिन WScript.Shell का उपयोग करके केवल एक ही ईवेंट भेजता है।