信頼できるカスタムWindowsショートカットキー?


9

複数の異なるcmd.exeインスタンスに割り当てられたグローバルWindowsショートカットキーがあります。これを行うには、デスクトップにcmd.exeへのショートカットを作成し、それぞれに一意のショートカットキーを割り当てます(たとえば、CTRL + SHIFT + U)。かなり基本的なもの。Win2K8(R1およびR2)を使用しています。

これは正常に動作します...ほとんどの場合。しかし、激怒する規則性があれば、そうでないこともあります。または、長い遅延(数秒)でも機能します。現在どのアプリにフォーカスがあるかは関係ありません(コマンドプロンプトの1つになることもあります)。割り当てるキーは関係ありません(WIN、CTRL、およびSHIFTのバリエーションをいくつか試しました)。これは、常にではありませんが、explorer.exeが何らかの形で苦労していることと関連していることに気付きました(たとえば、エクスプローラーウィンドウが開かれ、ファイル共有が利用できない、アプリが応答しないなど)。つまり、ショートカットキーの処理は、無関係なシステムアクティビティに非常に敏感であるように見えます。この問題が発生したときはいつでも、アクセスしたいウィンドウにいつでもALT + TABで問題なく移動できますが、これは面倒です。

私はこれらのコマンドウィンドウへのショートカットを1日に何百回も使用しているため、1%の失敗率でも本当に煩わしくなります。

これを修正する方法はありますか、またはカスタムキーの組み合わせを確実にインターセプトして、他のシステムアクティビティから独立した方法で、必要なアプリにフォーカスを当てるサードパーティユーティリティはありますか?

補遺:

サードパーティのホットキーツールに切り替えても失われたくないWindowsショートカットのプロパティがあります。Windowsショートカットはべき等です。 一部のアプリへのショートカットを起動したら、ショートカットキーのコンボをもう一度押すと、既に起動されているプロセスに移動します。新しいプロセス起動されませ

回答:


7

自動ホットキーを使用します。スクリプト言語は非標準であり、習得するのが難しい場合がありますが、プログラムを確実に起動することだけが目的であれば、そのスクリプト言語は簡単です。さらに、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がこのスクリプトをスキャンします。の前にあるキーの組み合わせのいずれかに一致する場合::は、次のコマンドを実行します。returnステートメントが欠落している場合、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ショートカットキーの重要な機能は、べき等です。最初にCTRL + SHIFT + Uを押して特定のプロンプトを表示すると、cmd.exeが起動します。次にそのコンボをヒットしたときに、そのcmd.exeがまだ実行されている場合は、別のインスタンスを起動するのではなく、単にそれを前面に表示します(これはAutohotkey runコマンドが行うことです)。AHKでそれを簡単に行う方法はありますか?
Peter Baer、

3

以下は、べき等の要件を満たす方法でAutoHotKeyを使用する方法です。

例として、私は夢中にしましたCaps Lock+ aスタックオーバーフロー上のFirefoxウィンドウに、Caps Lock+ sスーパーユーザでのFirefox、および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」に一致する別のホットキーがある場合、それぞれのFirefoxインスタンスが循環します。それぞれのウィンドウのタイトルにテキストがあり、そのテキストに一致するように設定されているためです。タイトルのどこにでも。

このスクリプトは、LifeHackerのこの記事に大きく基づいています。


このスクリプトをどうしてべき等でないように変更できますか?具体的には、私が欲しい、私はショートカットキーを押すと、プログラムの複数のインスタンスが(私はパテを実行すると、任意の時点で4+のサーバーに接続できるようにする必要性、およびマウスのために到達するためにしたくありませんよ)
Doktor J

各インスタンスのウィンドウタイトルに特定の一意のテキストがある場合は、そのテキストに一致するようにホットキーを割り当てることができます。参照Caps+aCaps+sのFirefox、@DoktorJの2つの異なるインスタンスについて上
yhw42

しかし、一致させたくない場合はどうなりますか?それらを切り替えるときは、ALT + TABだけなので、PuTTYの各インスタンスのショートカットは必要ありません- すでにPuTTYウィンドウがいくつあっても、常にPuTTYの新しいインスタンスを開くショートカットが必要です開いている。割り当てられたホットキーから直接「run c:\ tools \ putty \ putty.exe」を呼び出すだけですか?
Doktor J

@DoktorJ:ああ!はい。それがまさにあなたのやり方です。Windowsのショートカットのプロパティでもホットキーを割り当てることができると思います。Caps+1PuTTYの特定のインスタンスをポイントするつもりであると想定していました(私の意見ではAltTabよりも優れています:))。
yhw42

3

プログラムを迅速かつ直感的に起動するためのさらに別の方法:

Launchy

Launchyは、スタートメニュー、デスクトップ上のアイコン、さらにはファイルマネージャーを忘れるのに役立つように設計された無料のWindowsおよびLinuxユーティリティです。

Launchyは、スタートメニューのプログラムにインデックスを付け、わずか数回のキーストロークでドキュメント、プロジェクトファイル、フォルダー、ブックマークを起動できます。

代替テキスト


これは、Win7スタートメニューの検索に似ています。
Theo Belaire、2011

@Tyr:あります。私はWindows XPでそれを使い始めましたが、Win7でも使い続けています。スタートメニューの検索はあまり使っていませんが、Launchの方が高速だと思います。私はそれについて間違っているかもしれません。
Gauthier 2012年

2

残念ながら、6年後のWindows 10にも同じ問題があり、最近のWindows 10の更新では、一部のショートカット/プログラムがもはやべき等ではなくなっていることがわかりました !特に、同じセッションに複数のショートカットがあるPutty。

そこで、AutoHotKeyを使用して、このスレッドで共有されている関数を変更し(この記事はLifeHackerに基づいています)、INIファイルを使用して各ショートカットを追跡します。これは、各プログラムのWindowsタイトルを使用しません。画面または別のサーバーへのSSHを使用すると、Puttyで変更される可能性があるため、個人的に保持したい機能です。

また、INIファイルからUniqueNameエントリを削除するためのショートカットを作成できる関数「DeleteINIEntry()」も含まれています。または、ファイルを手動で編集して変更することもできます。

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" )

ウィンドウを最小化したくない場合は、WinMinimize行にコメントアウト(;を追加)するだけで、アクティブウィンドウに焦点が当てられたままになります。


1

これは無関係なアクティビティではなく、エクスプローラはこれらのショートカットを処理するプロセスです。

この機能を備えているとされるユーティリティ(例:http : //www.vsisystems.com/keyboardshortcuts.htm)がありますが、速度の問題を解決するユーティリティがあるかどうかはわかりません。


1

Explorerがビジー状態の場合、ショートカットを処理できないため、別のプログラムが必要です。

シンプルで効率的なランチャーはPS Hot Launch VVLです。

これは無料のユーティリティで、独自のホットキーを定義して、1回のキー操作でアプリケーションを起動したり、一般的に使用されるテキストを挿入したり、オーディオボリュームを変更したりできます。このプログラムはWin95 / 98 / MEまたはWinNT / 2000 / XPを必要とし、遅いマシンでも優れたパフォーマンスを発揮します。PS Hot Launchは、スタートメニューとクイック起動パネルの完全な代替手段です。

画像

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.