ปุ่มทางลัด Windows แบบกำหนดเองที่เชื่อถือได้ใช่ไหม


9

ฉันมีปุ่มทางลัด Windows สากลที่กำหนดให้กับอินสแตนซ์ cmd.exe ที่แตกต่างกันหลายรายการ ฉันทำสิ่งนี้ด้วยการสร้างทางลัดไปยัง cmd.exe บนเดสก์ท็อปของฉันและกำหนดคีย์ลัดที่ไม่ซ้ำกันให้กับแต่ละคน (เช่น CTRL + SHIFT + U) สิ่งพื้นฐานที่สวย ฉันใช้ Win2K8 (R1 และ R2)

มันใช้งานได้ดี ... เกือบตลอดเวลา แต่ด้วยความที่ไม่เป็นระเบียบบางครั้งก็ไม่เป็นเช่นนั้น หรือมันจะทำงานด้วยความล่าช้านาน (หลายวินาที) ไม่สำคัญว่าแอปใดที่โฟกัสในขณะนี้ (อาจเป็นหนึ่งในพร้อมท์คำสั่ง) ไม่สำคัญว่าฉันจะกำหนดปุ่มใด (ฉันได้ลองรูปแบบต่างๆของ WIN, CTRL และ SHIFT) ฉันสังเกตเห็นว่าสิ่งนี้มักจะมีความสัมพันธ์กับ explorer.exe ที่กำลังพยายามอย่างใดอย่างหนึ่ง (เช่นหน้าต่าง explorer ที่เปิดให้แชร์ไฟล์ที่ไม่พร้อมใช้งานหรือแอปไม่ตอบสนองหรืออะไรก็ตาม) กล่าวอีกนัยหนึ่งการจัดการคีย์ลัดนั้นไวต่อกิจกรรมของระบบที่ไม่เกี่ยวข้อง โปรดทราบว่าเมื่อใดก็ตามที่ฉันมีปัญหานี้ฉันสามารถประสบความสำเร็จ ALT + TAB ไปที่หน้าต่างที่ฉันต้องการไป แต่นั่นก็น่าเบื่อ

ฉันใช้ทางลัดไปยังหน้าต่างคำสั่งเหล่านี้หลายร้อยครั้งต่อวันดังนั้นแม้แต่อัตราความล้มเหลว 1% ก็น่ารำคาญจริงๆ

มีวิธีในการแก้ไขปัญหานี้หรือมียูทิลิตี้ของบุคคลที่สามออกมาบ้างที่จะรวมชุดคีย์แบบกำหนดเองที่เชื่อถือได้เพื่อนำมามุ่งเน้นไปที่แอพที่ฉันต้องการในทางที่เป็นอิสระจากกิจกรรมระบบอื่น ๆ

ภาคผนวก:

มีคุณสมบัติของทางลัด Windows ที่ฉันไม่ต้องการเสียหากสลับไปใช้เครื่องมือฮอตคีย์ของ บริษัท อื่น: ทางลัดของ Windows เป็น idempotent เมื่อคุณเปิดใช้งานทางลัดไปยังแอพบางตัวแล้วการกดปุ่มคำสั่งผสมทางลัดจะนำคุณไปสู่กระบวนการที่เปิดตัวไปแล้ว ไม่ เปิดตัวกระบวนการใหม่

คำตอบ:


7

ใช้ Autohotkey ภาษาสคริปต์นั้นไม่ได้มาตรฐานและสามารถเรียนรู้ได้ยาก แต่หากสิ่งที่คุณต้องการทำคือเปิดโปรแกรมได้อย่างน่าเชื่อถือ นอกจากนี้คุณยังสามารถกดปุ่มลัดบนปุ่ม Windows! ใช้สคริปต์ตัวอย่างต่อไปนี้และแก้ไขตามความต้องการของคุณ บรรทัดที่ขึ้นต้นด้วย ; มีความคิดเห็น)

;win + alt + e ... unload ipod
#!E::
   run d:\Downloads\Apps\deveject\eject ipod.bat
   return

;win + w ... launch winamp
#w::
    run c:\program files (x86)\winamp\winamp.exe
    return

;win + a ... launch AS400
#a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\1.ws
    return

;win + Shift a ... launch AS400 Printer
#+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\3.ws
    return

;win + ctrl + Shift a ... launch 2nd AS400 
#^+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\2.ws
    return

บันทึกสิ่งนี้เป็นไฟล์. ahk บนเดสก์ท็อปของคุณติดตั้ง AutoHotKey และเรียกใช้

ทุกครั้งที่คุณกดปุ่มใด ๆ ปุ่ม AutoHotkey จะสแกนสคริปต์ หากมันตรงกับชุดค่าผสมใด ๆ ที่นำหน้า a ::มันจะดำเนินการคำสั่งต่อไป หากคำสั่งส่งคืนสินค้าหายไป AHK จะทำการสแกนสคริปต์เพื่อหาคู่ที่ตรงกันหลังจากที่ดำเนินการคำสั่งของคุณ ชุดคีย์มีอธิบายไว้ด้านล่าง

# = Windows Key
+ = Shift
^ = Control
! = Alt

คุณสามารถใช้สิ่งเหล่านี้ร่วมกับตัวอักษรบนคีย์บอร์ดของคุณ ชุดค่าผสมหนึ่งที่ฉันพบว่ามีประโยชน์อย่างยิ่งมีดังต่อไปนี้

; ALT Backtick ... ctrl f4
!`::
    Loop, parse, RcvCtrlW, `,
    {
     IfWinActive %A_LoopField%
     {
        sendinput ^w
        Return
     }
    }
    sendinput ^{f4}
    return

; win Backtick ... alt f4
#`::
   sendinput !{f4}
   return   

นี่คือ Alt + `และ Win +` เมื่อสคริปต์นี้ทำงานและฉันกด alt + `สคริปต์จะส่ง ctrl + F4 Win +` จะกลายเป็น alt + F4

Autohotkey นั้นเป็นภาษาการเขียนโปรแกรมของตัวเอง ฉันได้ตั้งสคริปต์ที่จำลองระบบ "Rocker Gestures" ทั้งระบบ ฉันมี GMail เหมือนกับทางลัดสำหรับอีเมลของฉัน หากคุณใช้เวลาในการเรียนรู้กลอุบายของมันคุณสามารถรับถั่วได้ Lifehacker มีทั้งหมด สคริปต์ที่มีประโยชน์ สำหรับ Autohotkey มีความสุข!


3
อืม - คุณสมบัติที่สำคัญของปุ่มลัด Windows ที่ฉันใช้คือ idempotency ครั้งแรกที่ฉันกด CTRL + SHIFT + U เพื่อเรียกใช้พรอมต์ที่กำหนดมันจะเปิดตัว cmd.exe ครั้งต่อไปที่ฉันกดคอมโบนั้นถ้า cmd.exe นั้นยังคงทำงานอยู่มันจะนำไปไว้ด้านหน้าแทนที่จะเปิดอินสแตนซ์อื่น (ซึ่งเป็นสิ่งที่คำสั่ง Runhotkey ทำงาน) มีวิธีในการทำเช่นนั้นกับ AHK ได้อย่างง่ายดายหรือไม่?
Peter Baer

3

นี่คือวิธีที่ฉันใช้ AutoHotKey ในลักษณะที่ตรงกับคุณ idempotent ความต้องการ

ตัวอย่างเช่นฉันติดยาเสพติด Caps Lock + a ไปที่หน้าต่าง Firefox บน Stack Overflow Caps Lock + s สู่ Firefox ที่ Super User และ Caps Lock + d เพื่อพรอมต์คำสั่ง

StartOrToggleMinimize(TheWindowTitle,TheAppPath)
{  
   SetTitleMatchMode, 2
   DetectHiddenWindows, Off
   IfWinActive, %TheWindowTitle%
   {
      WinMinimize, %TheWindowTitle%
   }
   else
   { 
      IfWinExist, %TheWindowTitle%
      {
         WinGet, winid, ID, %TheWindowTitle%
         DllCall("SwitchToThisWindow", "UInt", winid, "UInt", 1)
      }
      else
      {
         run %TheAppPath%
      }
   }
   return
}

; the actual hotkeys:
CapsLock & a::StartOrToggleMinimize("Stack Overflow", "c:\program files\mozilla firefox\firefox.exe -new-window stackoverflow.com")
CapsLock & s::StartOrToggleMinimize("Super User", "c:\program files\mozilla firefox\firefox.exe -new-window superuser.com")
CapsLock & d::StartOrToggleMinimize("cmd", "cmd")

คุณสามารถ เปลี่ยนโหมดการจับคู่ชื่อ จะเข้มงวดเท่าที่คุณต้องการ ถ้าฉันมีฮ็อตคีย์อื่นที่ตรงกับ "Mozilla Firefox" (แทน "Super User" เป็นต้น) มันจะวนผ่านอินสแตนซ์ Firefox ของฉันทั้งหมดเนื่องจากแต่ละอันมีข้อความในหัวเรื่องหน้าต่างและฉันตั้งค่าให้ตรงกับข้อความ ที่ใดก็ได้ในชื่อ

สคริปต์นี้มีพื้นฐานมาจาก บทความนี้ที่ LifeHacker


สคริปต์นี้สามารถแก้ไขให้เป็น idempotent ได้อย่างไร โดยเฉพาะฉัน ต้องการ โปรแกรมหลายอินสแตนซ์ถ้าฉันกดปุ่มทางลัด (ฉันกำลังเรียกใช้ผงสำหรับอุดรูและต้องสามารถเชื่อมต่อกับเซิร์ฟเวอร์ 4+ ในเวลาใดก็ได้และไม่ต้องการเข้าถึงเมาส์)
Doktor J

หากมีข้อความเฉพาะที่ไม่ซ้ำกันในชื่อหน้าต่างสำหรับแต่ละอินสแตนซ์คุณสามารถกำหนดปุ่มลัดให้ตรงกับข้อความนั้นได้ ดู Caps+a และ Caps+s ด้านบนสำหรับ firefox สองอินสแตนซ์ที่ต่างกัน @DoktorJ
yhw42

แต่ถ้าฉันไม่ต้องการให้มันตรงกันล่ะ เมื่อฉันสลับระหว่างพวกเขาฉันเพิ่ง ALT + TAB ดังนั้นฉันไม่ต้องการทางลัดสำหรับแต่ละตัวอย่างของ PuTTY - ฉันแค่ต้องการทางลัดที่จะเปิด ใหม่ อินสแตนซ์ของ PuTTY ไม่ว่าจะมีหน้าต่าง PuTTY เปิดอยู่เท่าใด จะเรียก "เรียกใช้ c: \ tools \ putty \ putty.exe" โดยตรงจากฮอตคีย์ที่กำหนดให้ทำเช่นนี้หรือไม่
Doktor J

@DoktorJ: โอ้! ใช่. นั่นเป็นวิธีที่คุณจะทำ แม้ว่าฉันคิดว่าคุณสามารถกำหนดปุ่มลัดในคุณสมบัติทางลัดของ Windows ได้เช่นกัน ฉันสันนิษฐานว่าคุณตั้งใจจะมี Caps+1 ชี้ไปที่อินสแตนซ์เฉพาะของ PuTTY (ซึ่งดีกว่า AltTab ในความคิดของฉัน :) )
yhw42

3

อีกทางเลือกหนึ่งในการเปิดโปรแกรมของคุณอย่างรวดเร็วและอย่างสังหรณ์ใจ:

Launchy

Launchy เป็นยูทิลิตี้ฟรีของ windows และ linux ที่ออกแบบมาเพื่อช่วยให้คุณลืมเกี่ยวกับเมนูเริ่มต้นไอคอนบนเดสก์ท็อปและแม้แต่ตัวจัดการไฟล์ของคุณ

Launchy จัดทำดัชนีโปรแกรมในเมนูเริ่มต้นของคุณและสามารถเรียกใช้เอกสารไฟล์โครงการโฟลเดอร์และบุ๊คมาร์คของคุณได้ด้วยการกดปุ่มเพียงไม่กี่ครั้ง!

alt text


ดูเหมือนว่าการค้นหาเมนูเริ่ม Win7
Theo Belaire

@Tyr: มัน ฉันเริ่มใช้สิ่งนั้นใน Windows XP แต่ทำต่อไปใน Win7 ฉันไม่ได้ใช้การค้นหาเมนูเริ่มอย่างมาก แต่ความประทับใจของฉันคือ Launchy ยังเร็วกว่า ฉันอาจจะผิดที่แม้ว่า
Gauthier

2

น่าเสียดายที่ 6 ปีต่อมากับ Windows 10 มีปัญหาเดียวกันอยู่และด้วยการอัพเดท Windows 10 เมื่อเร็ว ๆ นี้ฉันพบว่าทางลัด / โปรแกรมบางโปรแกรมไม่มีอีกต่อไป idempotent ! โดยเฉพาะอย่างยิ่ง Putty ที่ฉันมีทางลัดหลายทางสำหรับเซสชันเดียวกัน

ดังนั้นฉันใช้ AutoHotKey และแก้ไขฟังก์ชั่นที่แชร์ในเธรดนี้ (อ้างอิงจาก บทความนี้ที่ LifeHacker ) เพื่อที่จะใช้ไฟล์ INI เพื่อติดตามแต่ละทางลัด นี่ไม่ได้ใช้ Windows Title ของแต่ละโปรแกรมที่สามารถเปลี่ยนแปลงใน Putty ได้หากคุณใช้หน้าจอหรือ SSH ไปยังเซิร์ฟเวอร์อื่นซึ่งเป็นคุณลักษณะที่ฉันต้องการเก็บไว้เอง!

รวมทั้งยังมีฟังก์ชั่น "DeleteINIEntry ()" ซึ่งคุณสามารถสร้างทางลัดเพื่อให้ลบรายการ UniqueName ออกจากไฟล์ INI หรือคุณสามารถแก้ไขและเปลี่ยนแปลงไฟล์ได้ด้วยตนเอง

INIFilePath := "C:\Temp\AHK.ini"

RunOrSwitchWin( UniqueName, AppPath )
{  
    global INIFilePath
    IniRead, TargetID, %INIFilePath%, windowids, %UniqueName%
    ActiveID := WinExist("A")

    ; cannot use '=' here as comparing an integar to string doesn't work well
    IfEqual TargetID, %ActiveID%
    {
        WinMinimize 
        return
    }

    WinGet, AllIDs, list

    Loop, %AllIDs%
    {
        this_id := AllIDs%A_Index%

        ifEqual TargetID, %this_id%
        {
            DllCall("SwitchToThisWindow", "UInt", this_id, "UInt", 1)
            return
        }
    }

    run, %AppPath%,,, CurrentPID
    WinWait ahk_pid %CurrentPID%
    IniWrite, % WinExist("A"), %INIFilePath%, windowids, %UniqueName%

   return
}

DeleteINIEntry()
{
    global INIFilePath
    InputBox, UniqueName, Delete INI Entry, Enter UniqueName

    If ErrorLevel = 0
        IniDelete, %INIFilePath%, windowids, %UniqueName%

    return
}

^!3::DeleteINIEntry()

; Putty shortcuts. 
; ^!1 is NOT idempotent and will run it over and over again.
^!1::run "C:\Program Files\PuTTY\putty.exe"
^!2::RunOrSwitchWin( "session1", "C:\Program Files\PuTTY\putty.exe -load session1" )

หากคุณไม่ต้องการให้หน้าต่างย่อขนาดเล็กสุดเพียงแค่แสดงความคิดเห็น (เพิ่มหน้า a) ไปยังบรรทัด WinMinimize และหน้าต่างจะเน้นที่หน้าต่างที่ใช้งานอยู่


1

มันไม่ได้เป็นกิจกรรมที่ไม่เกี่ยวข้อง explorer เป็นกระบวนการที่จัดการทางลัดเหล่านี้

มีสาธารณูปโภค (เช่น http://www.vsisystems.com/keyboardshortcuts.htm ) อ้างว่ามีฟังก์ชั่นนี้ แต่ฉันไม่รู้ว่าจะมีใครแก้ปัญหาความเร็วได้หรือไม่


1

หาก Explorer ไม่ว่างแสดงว่าไม่สามารถจัดการทางลัดได้ดังนั้นจึงจำเป็นต้องมีโปรแกรมอื่น

ตัวเรียกใช้ที่ง่ายและมีประสิทธิภาพคือ PS Hot Launch VVL :

นี่คือยูทิลิตี้ฟรีที่ช่วยให้คุณ   เพื่อกำหนดปุ่มลัดของคุณเองเพื่อให้   กดปุ่มเดียวสามารถเปิดตัว   แอพลิเคชันแทรกที่ใช้กันทั่วไป   ข้อความเปลี่ยนระดับเสียงของคุณหรือ   แค่เรื่องอื่น โปรแกรม   ต้องการ Win95 / 98 / ME หรือ WinNT / 2000 / XP   และเป็นนักแสดงที่ยอดเยี่ยมแม้กระทั่งใน   เครื่องช้า PS Hot Launch คือ   ทางเลือกที่สมบูรณ์แบบสำหรับเมนูเริ่ม   และแผงเปิดใช้งานด่วน

image

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.