AutoHotKeyで、Everythingの検索結果からEverythingを呼び出してみた。

 EverythingSearchの検索結果で項目を選択してF4を押すと、選択項目のパスを新しいウィンドウ(仮名「結果ウィンドウ」)で検索するAHKスクリプト。Explorerなどでも便利なので、適当に#IfWinActiveをいじってやってみよう!(手抜き)
 「結果ウィンドウ」は、可能な限り再利用される。ただし「結果ウィンドウ」で実行した場合は、さらに新たなウィンドウが呼び出され、今後はそちらが再利用対象になる。

 Everythingでフォルダパスを検索(=フォルダを選択してF4)した場合、結果はそのフォルダ以下のファイル一覧。ファイルパスを検索(=ファイルを選択してF4)した場合、結果はそのファイルのみ。
 フォルダパスでフォルダの中身を検索したり、ファイルパスを削って「同じフォルダの別のファイル」や「別フォルダの同じ名前のファイル」を検索したり、あるいは「F4を二度押して(ファイルのみのウィンドウを残して)、一時的なファイル備忘録として使う」など、可能性は無限大だ!

  EverythingPath := "C:\Program Files (x86)\Everything\Everything.exe"  ; Appごとに似て非なるルーチンがたくさんあるので、AutoExecuteセクションで変数に格納してる。

;--------------------------------------------------------------------------------------
; Everything
;--------------------------------------------------------------------------------------
#IfWinActive ahk_class ahk_class EVERYTHING

$F4::
  Send, ^c
  sleep, 200
  SearchWord := Clipboard

;  if RegExMatch(SearchWord, "適当に整形すればいいと思うよ!",$)
;    SearchWord := $1

  WinGet, HwndA, ID, A
  if (WinExist("ahk_id " HwndEV " ahk_class EVERYTHING") && (HwndA != HwndEV)) {
    ControlSetText, Edit1, %SearchWord%
    WinActivate
  } else {
    Run, %EverythingPath% -search "%SearchWord%"
    Loop {
      WinGet, HwndEV, ID, %SearchWord% ahk_class EVERYTHING
      if (HwndEV && (HwndEV != HwndA))
        break
      Sleep, 200
    }
  }
  WinWaitActive, ahk_id %HwndEV%
  ControlSend, EVERYTHING_LISTVIEW1, ^{NumpadAdd}  ; カラム幅自動調整
return

 WinGet, OutputVar, MinMaxで、「結果ウィンドウ」を最大化してるウィンドウに固定しても便利。最大化したら他が見えない? AeroSnapや半画面化を使うんだ!

 気づいたこと。

  • WinExist関数の対象もLastFoundWindowになるぽ? 日本語リファレンスには記載ない。
  • ExcludeTitleって文字列以外(ahk_idとか)は使えないのかー。
  • Ctrl+NumpadAddはフォーカス箇所で動作が変わる。文字欄ならEverythingの「文字拡大」、SysListView32では標準の「カラム幅自動調整」。


[PR]
by lordnoesis | 2012-11-30 22:12 | テクノロジ | Trackback | Comments(0)
トラックバックURL : http://poimono.exblog.jp/tb/18939192
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

ブログトップ | ファンになる