プログラムが存在しない場合は Autohotkey フォールバック

プログラムが存在しない場合は Autohotkey フォールバック

私はcygwinを使おうとしているシュWindows キー + R を押すとプログラムが開きます (これは他のキーの組み合わせにも簡単に適用できます)。ただし、すべてのコンピューターに cygwin がインストールされているわけではないことに気付きました。コンピューターに cygwin がインストールされていない場合は、Windows コマンド プロンプトを開くだけにしたいと思います。

#rこれを実現するために、(Win+R) マッピングを条件付きで設定するにはどうすればよいですか?

答え1

これはテストされていませんが、開始するには十分です:

#r::
Run sh
WinWait,sh,,1
if ErrorLevel
{
   ;it timed out waiting for sh (1 sec)
   Run cmd
}
return

cygwinコマンドを実行しようとしますshウィンウェイト関数は、それが作成されたかどうかを確認します (ウィンドウ タイトル「sh」を使用しますが、変更が必要になる場合があります)。作成されていない場合は、にフォールバックしますrun cmd

もう一つの選択肢として、の絶対パスが常に分かっている場合はsh.exeファイルが存在する方法。

#r::
if FileExist("c:\cygwin\sh.exe")
   Run sh
else
   Run cmd
return

答え2

@yhw42 の回答最初はそうでしたが、もっときれいな解決策を見つけました:

WinR := "sh"
RunWait, where sh
if ErrorLevel
    WinR := "cmd"

#r::Run %WinR%

これはWindowsWHEREコマンドを使用し、AutoHotkey 変数

関連情報