人気ブログランキング | 話題のタグを見る

AutoHotKey_Lで、引数を動作中のソフトに渡すツール作った。ver.2.1.0

 S2WAは、あらかじめAppListを用意しておき、リスト内のソフトが起動済みならそのソフトに、そうでなければリストの一番上のソフトに、自身が受け取った引数を丸投げするツール。
 例えばいくつかのブラウザを使い分けている環境で、HTTPなどをS2WAに関連付けておけば、リンクを踏んだ時起動済みのブラウザで開かれるため、無駄にブラウザを起動せずに済む。

 ブラウザならBrokenURLが高機能。

 ver.2.1.0では、OperaNext15が妙なディレクトリ構成なので、それに対応すべくAppListで正規表現を使えるようにした。

; ////////////////////////////////////////////////////////////////////////////////
;
; S2WA.ahk ver.2.1.0
;
; ////////////////////////////////////////////////////////////////////////////////

FileEncoding, CP1200

IfNotExist, %A_ScriptDir%\AppList.txt
{
MsgBox, %A_ScriptDir%\AppList.txt が存在しません!
ExitApp
}

for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
if process.ExecutablePath
ProcessList .= process.ExecutablePath "`n"

TrgExe := ""
Loop, Read, %A_ScriptDir%\AppList.txt
{
if !A_LoopReadLine
continue

StringLeft, CharBuf, A_LoopReadLine, 1
if ("*" == CharBuf)
StringTrimLeft, SearchExe, A_LoopReadLine, 1
else {
StringReplace, SearchExe, A_LoopReadLine, \, \\, All
StringReplace, SearchExe, SearchExe, ., \., All
StringReplace, SearchExe, SearchExe, [, \[, All
StringReplace, SearchExe, SearchExe, ], \], All
StringReplace, SearchExe, SearchExe, +, \+, All
StringReplace, SearchExe, SearchExe, {, \{, All
StringReplace, SearchExe, SearchExe, }, \}, All
StringReplace, SearchExe, SearchExe, ^, \^, All
StringReplace, SearchExe, SearchExe, $, \$, All
StringReplace, SearchExe, SearchExe, (, \(, All
StringReplace, SearchExe, SearchExe, ), \), All
}

if RegExMatch(ProcessList, "im`n)^(" SearchExe ")$", $) {
MsgBox, %$1%
TrgExe := $1
break
}
}

If !TrgExe
FileReadLine, TrgExe, %A_ScriptDir%\AppList.txt, 1

Loop, %0%
{
CmdlineBuf := %A_Index%
Run, %TrgExe% "%CmdlineBuf%"
Sleep, 1000
}

 使用するには、スクリプトと同じディレクトリにAppList.txtを用意し、S2WAを呼び出すだけ。S2WAはAppListを上から順に起動済みプロセスと照合し、いずれもHitしなければ一番上のソフトを起動する。

 AppListの仕様は以下の通り。

  • 文字コードはUnicode(UTF-16LE)。
  • 1行につきひとつのフルパス。
  • 行が*から始まった場合、その行は正規表現とみなされる。

 ただし、1行目は正規表現であってはならない。OperaNext15を最優先にしたいなら、以下のように記述する。

R:\Opera Next\launcher.exe
*R:\\Opera Next\\.*\\opera\.exe

 WindowsVista以降、httpなどのプロトコルへの関連付けは面倒になっている。詳しくはver.2.0.0の記事参照。


by lordnoesis | 2013-06-20 17:57 | Trackback | Comments(0)
ブログトップ | ファンになる