我想寫一個腳本來定期切換大寫字母鎖定鍵,但我也希望能夠切換腳本,因爲它會導致一些問題與其他功能(如ALT加Tab鍵,並在任務欄上滾來滾去的窗口看到預覽)聽Powershell的按鍵,但不要等待
劇本我至今是
:outer while($true){
do{
echo "Toggle with F12";
$x = [System.Console]::ReadKey()
}while($x.Key -ne "F12")
while($true){
$wsh = New-Object -ComObject WScript.Shell
$wsh.SendKeys('{CAPSLOCK}')
sleep 0.3
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($wsh)
Remove-Variable wsh
if ($Host.UI.RawUI.KeyAvailable) {
$key = $Host.UI.RawUI.ReadKey()
if($key.Key -ne "F12"){
break outer
}
}
}
}
腳本等待用戶按F12後,然後一旦他們按下F12,我希望它開始切換大寫鎖定鍵0.3秒,直到用戶再次按下F12。理想情況下,我希望在後臺發生這種情況,但我不知道這是否可能。我不希望用戶必須打開控制檯窗口才能切換腳本。
這種方式現在運行,用戶按下F12後腳本將切換大寫鎖定一次,然後退出。如果我在Remove-Variable之後刪除了條件語句,那麼腳本將按我的意願運行,除了可以停止的唯一方式是如果控制檯窗口關閉。
你試過用if([Console] :: KeyAvailable) – 2014-10-27 19:07:09
@MickyB我只是試過一些東西,但腳本沒有終止。我很確定它與我的條件有關,它檢查按下了哪個鍵。 '如果([控制檯] :: KeyAvailable){$ 鍵= $ Host.UI.RawUI.ReadKey() 如果($鍵-eq 「F12」){ 破外 } }' 我將密鑰存儲在$ key中,然後嘗試查看$ key -eq「F12」,但這不起作用。 – Lighthat 2014-10-27 19:16:18