AutoHotkey

目次


概要

  • スクリプティングによってホットキーにさまざまな機能を割り当てることができる便利なツール
    • アイドル時、ログオフ時などイベントドリブンの処理の設定も可能
    • GUIを持たせることも可能
    • スクリプトをexe形式に変換することも可能
    • USBメモリで使用できるzip版もある
  • 開発は Version 1.0.48 で終了、後継プロジェクトは AutoHotkey_L[作成]

URL

インストール

  • インストーラ版は、普通にインストールするだけ
  • zip版は、任意のフォルダに展開するだけ

設定

  • 【注】OnExitとRunWaitを使って、ログオフ時やシャットダウン時に何か処理を走らせようとしても、OSが「応答しなくなったアプリ」と判断して一定時間後に強制終了してしまうので、数秒以上かかるような処理だと意図通りにいかない
    #Persistent
    OnExit,WatchShutDown                ;終了時に実行されるサブルーチンを割り当て
    return                              ;スクリプト起動時の処理を終了
    
    WatchShutDown:                      ;終了時に実行されるサブルーチンラベル
    If(A_ExitReason=Logoff or A_ExitReason=Shutdown)
    {
        RunWait,<バックアップ実行プログラムなど>  ;プログラムを実行し、終了まで待機 --- してくれずに実行途中で強制終了される
    }
    ExitApp
    
  • 特定のアプリケーショングループのインスタンスが起動済みならそれらに順次フォーカスし、インスタンスがなければ新規にインスタンスを起動しフォーカスするための設定例
    ; ----------------------------------------------------------------------
    ; 共通サブルーチン:アプリ新規起動
    ; * 引数
    ;   - AppName :: アプリ名(メッセージ用)
    ;   - AppPath :: Run に渡すアプリのパス(*.exe、*.lnk、など)
    
    NewApp:
    if FileExist(AppPath)
        Run,%AppPath%
    else
        MsgBox,アプリ:%AppName% (パス: %AppPath%) が見つかりません
        AppName =
        AppPath =
    return
    
    ; ----------------------------------------------------------------------
    ; アプリケーショングループの設定
    ; (例:Mozilla Firefox の場合)
    
    SetTitleMatchMode,RegEx
    GroupAdd,FirefoxGroup,Mozilla Firefox$ ahk_class MozillaUIWindowClass
    
    ; ----------------------------------------------------------------------
    ; アプリケーショングループの順次フォーカスと新規起動
    ; (例:Mozilla Firefox の場合)
    
    ActivateFirefox:
    IfWinExist,ahk_group FirefoxGroup
        GroupActivate,FirefoxGroup
    else
        AppName = Mozilla Firefox
        AppPath = C:\MyShortcuts\MoziilaFirefox.lnk ; ショートカットのパスで可
        GoSub,NewApp
    return
    
    ; ----------------------------------------------------------------------
    ; ショートカットキーの割り当て
    ; (例:Mozilla Firefox の場合)
    
    ^!f::GoSub,ActivateFirefox
    
    
  • アクティブウィンドウのみを残して他の全ウィンドウを最小化する
    HideOthers()
    {
      WinGet,pid,PID,A  ; ID を取得して使うとTeraPadが最小化から復帰されないので PID を使う
      WinMinimizeAll
      Loop,20
      {
        WinGet,current_minmax,MinMax,ahk_pid %pid%
        If ( current_minmax = -1 ) ; minimizing done
          Break
        Sleep,100
      }
      WinRestore,ahk_pid %pid%
      WinActivate,ahk_pid %pid%
      Return
    }
    

タグ





最終更新:2012年11月23日 12:39