foobar2000.ahk

foobar2000の設定メモ


タイトルバー邪魔だなー消したいなーと思いつつも軽く調べた程度だと
そういったコンポーネントや方法がなかった…
と思ったらあった!普通にあった!
しかし正直よくわからないので起動時にAutohotkeyを使うことにした

#Persistent
#NoTrayIcon
#SingleInstance Force
#NoEnv
SetBatchLines, -1
ListLines, Off
SetWorkingDir, %A_ScriptDir%



Foobar2000("..\..\foobar2000\foobar2000.exe")


Foobar2000( FilePath){
	static foobar2000

	SplitPath, FilePath, FileName, WorkingDir
	Process, Exist, %FileName%
	If ErrorLevel
	 {	foobar2000 := ErrorLevel
		Menu, foobar, Add, &Default, CmdPatternB
		Menu, foobar, Add, &Shuffle (tracks), CmdPatternB
		Menu, foobar, Add, &Repeat (track), CmdPatternB
		Menu, foobar, Add
		Menu, foobar, Add, &Next, CmdPatternA
		Menu, foobar, Add, Pr&ev, CmdPatternA
		Menu, foobar, Add, &PlayPause, CmdPatternA
		Menu, foobar, Show
	} Else {
		Run, %FilePath% ,%WorkingDir%,, foobar2000
		WinWait, ahk_pid %foobar2000%
		WinGetPos,,, Width, Height, ahk_pid %foobar2000%
		WinSet, Style, -0xC40000, ahk_pid %foobar2000%
		WinSet, Region, R15-15 W%Width% H%Height% 0-0, ahk_pid %foobar2000%
		WinMinimize, ahk_pid %foobar2000%
		WinActivate, ahk_pid %foobar2000%
	} SetTimer, Foobar2000Region, 500
	Return
	
	CmdPatternA:
	Run, % FilePath A_Space """" "/" RegExReplace( A_ThisMenuItem, "&") """"
	Return

	CmdPatternB:
	Run, % FilePath A_Space """" "/command:" RegExReplace( A_ThisMenuItem, "&") """"
	Return
	
	CmdPatternC:
	Run,  % FilePath A_Space """" "/playing_command:" RegExReplace( A_ThisMenuItem, "&") """"
	Return

	Foobar2000Region:
	IfWinNotExist, ahk_pid %foobar2000%,,,, ExitApp
	WinGetPos,,, Width, Height, ahk_pid %foobar2000%
	WinSet, Region, R15-15 W%Width% H%Height% 0-0, ahk_pid %foobar2000%
	Return
}


スクリプトのワーキングディレクトリを指定してfoobar2000相対パスで指定できるようにする
相対パスを入力し
パスをファイル名とフォルダパスに分け
foobar2000.exeが起動していなければ、さきほど分けたフォルダパスをワーキングディレクトリとして指定しfoobar2000を起動
foobar2000の起動を待ち、ウインドウサイズを取得
タイトルバーを非表示、リサイズボーダーを消し
角に丸みを付けるよう表示領域を変更して、foobar2000を最小化した後にアクティブにする
最後の2プロセスは自分の環境だとfoobar2000のタイトルバーを非表示にする際に表示がおかしくなるため再描写させている
既にfoobar2000が起動されている場合はメニューを表示
最後にfoobar2000を終了するとこのスクリプトを終了させる、リサイズした際に表示領域を変更させるタイマーをセット