AutoHotKey_Lで、関連付けを動作中のアプリケーションで開くツール作った。

 動作中のプロセスからリストにあるものを探し出して引数(コマンドラインオプション)を転送するS2WAを、改めてAHKで作り直してみた。
 これによってリストがUnicodeになり、また、250文字を超える引数に対応した。

; ////////////////////////////////////////////////////////////////////////////////
;
; S2WA.ahk ver.2.0.0
;
; ////////////////////////////////////////////////////////////////////////////////

  FileEncoding, CP1200

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

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

  TrgExe := ""
  Loop, Read, %A_ScriptDir%\AppList.txt
  {
    if ("" == A_LoopReadLine)
      continue
    StringLower, SearchExe, A_LoopReadLine
    Loop, Parse, ProcessList, `n, `r" "
    {
      StringLower, TipProcess, A_LoopField
      if (SearchExe == TipProcess) {
        TrgExe := TipProcess
        break
      }
    }
    if ("" != TrgExe)
      break
  }

  If ("" == TrgExe)
    FileReadLine, TrgExe, %A_ScriptDir%\AppList.txt, 1

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

 これをAhk2ExeでExe化し、関連付けすれば便利。例えば.htmlやHTTPに関連付け、リストにブラウザを列挙することで、起動済みのブラウザや、軽量なブラウザで開けるようになる。例えばっていうか、それしか思いつかないので、他に便利な使い道があったら教えてください(お。

 なお、Windows7でHTTPなどのプロトコルを関連付けするにはレジストリをいじる必要がある。

Windows Vista 既定のプログラム 関連付け レジストリ とかの話





 かつてコピペを駆使しててきとーにでっち上げたREGファイルを発掘したが……もし使うなら自己責任で。
 何か所かあるS2WA.exeのパス(例ではC:\MyTool\s2wa\browser\s2wa.exeになってるやつ)は、各自適当に書き換えること。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"S2WA"="SOFTWARE\\DLC\\S2WA\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\DLC\S2WA\Capabilities]
"ApplicationName"="S2WA"
"ApplicationDescription"="動作中のアプリケーションへ引数を中継するアプリケーション。"

[HKEY_LOCAL_MACHINE\SOFTWARE\DLC\S2WA\Capabilities\FileAssociations]
".htm"="S2WA.AssocFile.HTM"
".html"="S2WA.AssocFile.HTML"
".url"="S2WA.AssocFile.URL"

[HKEY_LOCAL_MACHINE\SOFTWARE\DLC\S2WA\Capabilities\Startmenu]
"StartmenuInternet"="S2WA.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\DLC\S2WA\Capabilities\URLAssociations]
"http"="S2WA.HTTP"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM]
@="HTML Document"
"FriendlyTypeName"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,\
  00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,69,00,65,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,39,00,31,00,32,00,00,00

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM\shell]
@="open"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM\shell\open\command]
@="\"C:\MyTool\s2wa\browser\s2wa.exe\" \"%1\""

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM\shell\open\ddeexec]

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM\shell\open\ddeexec\Application]
@="s2wa"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTM\shell\open\ddeexec\Topic]
@="system"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML]
@="HTML Document"
"FriendlyTypeName"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,\
  00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,69,00,65,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,39,00,31,00,32,00,00,00

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML\shell]
@="open"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML\shell\open\command]
@="\"C:\MyTool\s2wa\browser\s2wa.exe\" \"%1\""

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML\shell\open\ddeexec]

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML\shell\open\ddeexec\Application]
@="s2wa"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.HTML\shell\open\ddeexec\Topic]
@="system"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL]
"FriendlyTypeName"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,\
  00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,69,00,65,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,31,00,30,00,30,00,34,00,36,00,00,00
"EditFlags"=dword:00000002
"IsShortcut"=""
"NeverShowExt"=""

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL\shell]
@="open"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL\shell\open\command]
@="\"C:\MyTool\s2wa\browser\s2wa.exe\" \"%1\""

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL\shell\open\ddeexec]

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL\shell\open\ddeexec\Application]
@="s2wa"

[HKEY_CLASSES_ROOT\S2WA.AssocFile.URL\shell\open\ddeexec\Topic]
@="system"

[HKEY_CLASSES_ROOT\S2WA.HTTP]
@="URL:Hyper Text Transfer Protocol"
"FriendlyTypeName"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,\
  00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,69,00,65,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,39,00,30,00,33,00,00,00
"EditFlags"=dword:00000002
"URL Protocol"=""

[HKEY_CLASSES_ROOT\S2WA.HTTP\shell\open\command]
@="\"C:\MyTool\s2wa\browser\s2wa.exe\" \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\S2WA.exe]
@="S2WA"

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\S2WA.exe\DefaultIcon]
@="C:\MyTool\s2wa\browser\s2wa.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\S2WA.exe\shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\S2WA.exe\shell\Open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\S2WA.exe\shell\Open\command]
@="C:\MyTool\s2wa\browser\s2wa.exe"


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

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

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