(AHK)(AutoHotkey)(以前作った ahkに対する ラッパーexeを もう一度作り直してみた)

 以前 ahkによる ファイルラウンチツールについて書きましたが
http://d.hatena.ne.jp/morakana/20080330/1206897117 < その時の記事はこちら
その時の ラッパーexe部分を もう一度改善して(したつもり 笑)みました

 基本的な概念は 以前の記事と一緒なので割愛します
ということで ソースはこちら < はしょりすぎだろ 笑)
	; コマンドライン引数がある分 ループして
	; ahkスクリプトに渡す コマンドライン文字列を生成する
	cmd := ""
	Loop
	{
		If ( %A_Index% == "" )
			Break
		cmd .= " " . """" . %A_Index% . """"
	}
	ScriptFileName := A_ScriptDir . "\" . E2F(A_ScriptName) . ".ahk"
	RunEx(ScriptFileName, cmd)
	ExitApp
FN2FL(FileName, BufferSize = 1000)
{
	VarSetCapacity(Buf, BufferSize, 0x00)
	DllCall("kernel32.dll\GetLongPathNameA", "Str", FileName, "Str", Buf, "UInt", BufferSize)
	DllCall("kernel32.dll\GetFullPathNameA", "Str", Buf, "UInt", BufferSize, "Str", Buf, "UInt", 0)
	Return Buf
}
E2F(Expression, BufferSize = 1000)
{
	VarSetCapacity(Buf, BufferSize, 0x00)
	DllCall("kernel32.dll\lstrcpyA", "Str", Buf, "Int", DllCall("shlwapi.dll\PathFindFileNameA", "Str", Expression) )
	DllCall("shlwapi.dll\PathRemoveExtensionA", "Str", Buf)
	Return Buf
}
E2D(Expression, BufferSize = 1000)
{
	VarSetCapacity(Buf, BufferSize, 0x00)
	Buf := Expression
	DllCall("shlwapi.dll\PathRemoveFileSpecA", "Str", Buf)
	Return Buf
}
RunEx(ExecuteFileName, Parameter, WorkDirectory = "", SW_xxxx = 1)
{
	If ( (ExecuteFileName := FN2FL(ExecuteFileName)) == "" )
		Return 0
	If ( WorkDirectory == "" )
		WorkDirectory := E2D(ExecuteFileName) . "\"
	Return DllCall("shell32.dll\ShellExecuteA", "UInt",  0
                                                  , "Str",   "open"
                                                  , "Str",   ExecuteFileName
                                                  , "Str",   Parameter
                                                  , "Str",   WorkDirectory
                                                  , "UInt",  SW_xxxx)
}
 exe化した物を同梱したのは ツール置き場 からどうぞ