その他

Last-modified: 2013-11-04 (月) 15:12:30

目次

 

その他

$console([str...])

【概要】

コンソールに文字を出力する

【引数】

str - 出力する内容

【戻り値】

なし

【使用例】

$console(%_id%,%mainid%,test)

$msgbox(msg,title,button)

【概要】

メッセージボックスを表示する

【引数】

msg - メッセージ
title - タイトル
button - 表示させるボタン(win32apiのMessageBox参照)

【戻り値】

MessageBoxの戻り値(win32apiのMessageBox参照)

【補足】

デバッグ以外での使用は非推奨

【使用例】

$msgbox(メッセージ,デバッグ,0)

$sleep(msec)

【概要】

指定時間、処理を待機させる

【引数】

msec - 1/1000秒

【戻り値】

なし

【補足】

デバッグ以外での使用は非推奨

【使用例】

$sleep(1000)

$random(n)

【概要】

擬似乱数を取得する

【引数】

n - 乱数の数

【戻り値】

数値

【使用例】

$random(10)

$tasktray(flag)

【概要】

タスクトレイの表示状態を変更する

【引数】

flag - 表示状態

【戻り値】

なし

【使用例】

$tasktray(true)
$tasktray(false)

$trayicon(file)

【概要】

タスクトレイのアイコンを変更する

【引数】

file - アイコンファイル名

【戻り値】

なし

【使用例】

$trayicon(c:\tray.ico)

$traytip(tip)

【概要】

タスクトレイのツールチップを変更する

【引数】

tip - ツールチップメッセージ

【戻り値】

なし

【使用例】

$traytip('foobar2000')

$trayballoon(title,info[,options...])

【概要】

タスクトレイにバルーンヘルプを表示する

【引数】

title - タイトル
info - 表示メッセージ
options - オプション
icon:icon = アイコン
none なし(デフォルト)
info 情報アイコン
warning 警告アイコン
error エラーアイコン
sound:flag 表示する時の音(デフォルト:true)

【戻り値】

なし

【使用例】

$trayballoon('foobar2000','test',icon:info,sound:false)

$execute(cmd[,param][,show])

【概要】

外部アプリケーションを実行する

【引数】

cmd - 実行するファイルまたはURLまたはフォルダ
※先頭に/でfoobar2000のProfileパスと置き換わる
param - 実行するファイルに送るパラメータ
show - 表示方法
hide = 非表示
normal = 通常表示
maximize = 最大化表示
minimize = 最小化表示
※ファイルによっては無効

【戻り値】

数値

【使用例】

$execute('http://foobar2000.xrea.jp/index.php')

$execute(c:\windows\notepad.exe,,minimize)

$execute(c:\)

$execute('c:\program files\foobar2000\foobar2000.exe','/play',normal)

$calc(expr)

【概要】

計算式を評価する

【引数】

expr - 計算式
使用できる演算子

* 加算

** 減算

* 乗算
/ 除算
% 余り ('%')
{} カッコ

比較演算子(trueの場合1,falseの場合0)

< 小なり

> 大なり
= 等しい
! 等しくない

【戻り値】

数値

【使用例】

$calc({1+2}*3) → 9
$calc(10'%'3) → 1
$calc(1.5/2) → 0.75
$ifequal($calc(1>2),1,a,b) と $if($greater(1,2),a,b) は等価

$urlencode(str[,charcode])

【概要】

文字列をURLエンコードする

【引数】

str - 文字列
charcode - 文字コードを指定する
utf8,sjis,eucが指定可能(省略時はsjis)

【戻り値】

URLエンコード済み文字列

【使用例】

$hash(enc,$urlencode(%album%,sjis))

$getimageinfo(file,mode)

【概要】

画像の情報を取得する
対応している形式はBMP/GIF/PNG/JPEG形式

【引数】

file - ファイル名
mode - モード
width = 幅を取得する
height = 高さを取得する
type = ファイルの種類(BMP/GIF/PNG/JPEG)

【戻り値】

数値または文字列

【使用例】

$hash(w,$getimageinfo(c:\test.jpg,width))

$hash([name][,val)

【概要】

連想配列を操作する(初期化/値設定/値取得)

【引数】

key - キー
value - 値

【戻り値】

文字列

【使用例】

$hash()

$hash(ringo,リンゴ)

$hash(ringo) → リンゴ
%ringo% → リンゴ

$hash(ringo,)

$hash_save(filename,key[,key...])

【概要】

連想配列をファイルに保存する

【引数】

filename - ファイル名
key - キー

【戻り値】

なし

【使用例】

$hash_save(/hash.data,foo,bar)

$hash_load(filename)

【概要】

連想配列をファイルから読み込む

【引数】

filename - ファイル名

【戻り値】

なし

【使用例】

$hash_load(/hash.data)

$errorlevel(level)

【概要】

TFのエラー出力レベルを変更する

【引数】

level - エラーレベル
off,low,middle(デフォルト),high,debug
※debugにすると関数コール時に関数名が表示されるようになる

【戻り値】

なし

【補足】

エラー内容は全てコンソールに出力される

【使用例】

$errorlevel(debug)

$settimer(timerid,msec)

【概要】

タイマーを設定する

【引数】

timerid - タイマーID
msec - タイマーが実行されるまでの間隔(1/1000秒単位)

【戻り値】

なし

【補足】

msecに0を指定すると解除する
この関数でタイマーを設定すると指定間隔ごとにOn TimerのTFが実行される
On Timerイベントでは%_timerid%変数を利用して発生したタイマーを識別することができる

【使用例】

(1)
$settimer(TEST1,1000)
$settimer(TEST1,0)

(2)
$settimer(TEST1,1000) //毎秒
$settimer(TEST2,5000) //5秒毎

$console(%_timerid%)

$textfile(file[,options...])

【概要】
テキストファイルを読み込む

【引数】
file - ファイル名
options - オプション
charcode:sjis|utf8 = 文字コード(デフォルト:utf8)
crlf:flag = 行末にCR+LFを付加する(デフォルト:true)
from:num = 開始行番号を指定する(デフォルト:0)
to:num = 終了行番号を指定する(デフォルト:0)
tf:'tf' = 行毎にTFを適用してその結果を出力する(デフォルト:'')
使用可能なプライベート変数
%_line% 現在の処理行
escape:flag = TFのエスケープ文字変換を行う(デフォルト:false)
output:mode = 出力モード
read = 読み込んだ内容(デフォルト)
count = 行数

【戻り値】

文字列または数値

【使用例】

$textfile($replace(%path%,%filename_ext%,)info.txt,charcode:sjis,crlf:true)

$textfile(info.txt,charcode:sjis,from:2,to:3)

$textfile(info.txt,charcode:sjis,from:2)

$textfile(info.txt,charcode:sjis,to:2)

$textfile(info.txt,charcode:sjis,output:count)

$textfile(info,charcode:sjis,crlf:true,tf:'%_line%',escape:false)

$textwrite(file,str[,options...])

【概要】

テキストファイルに書き込む

【引数】

file - ファイル名
str - 書き込む文字列
options - オプション
charcode:sjis|utf8 = 文字コード(デフォルト:utf8)
mode:mode = 書き込みモード
write 新規または上書きモード(デフォルト)
add 新規または追加モード

【戻り値】

なし

【使用例】

$textwrite(c:\test.txt,abc$crlf()def$crlf(),charcode:sjis)
$textwrite(c:\test.txt,abc$crlf()def$crlf(),charcode:sjis,mode:add)

$regexp(source,pattern[,replace])

【概要】

正規表現で検索し見つかったテキストを置換または評価する
アルファベットの大文字小文字は区別する

【引数】

source - ソース文字列
pattern - 比較パターン
replace - 置換文字列(省略時は評価)

【戻り値】

文字列、評価の場合は1(評価戻り値=TRUE)または1以外(評価戻り値=FALSE)

【補足】

この関数はfoo_etcからの移植です
この場を借りてお礼申し上げます

正規表現の構文は下記URL参照
http://msdn.microsoft.com/ja-jp/library/cc427970.aspx

【使用例】

$if($regexp(%title%,'[a-zA-Z+]'),TRUE,FALSE)

$regexp(%title%,The\s*,)

$regexpi(source,pattern[,replace])

【概要】

正規表現で検索し見つかったテキストを置換または評価する
アルファベットの大文字小文字は区別しない

【引数】

source - ソース文字列
pattern - 比較パターン
replace - 置換文字列(省略時は評価)

【戻り値】

文字列、評価の場合は1(評価戻り値=TRUE)または1以外(評価戻り値=FALSE)

【補足】

この関数はfoo_etcからの移植です
この場を借りてお礼申し上げます

正規表現の構文は下記URL参照
http://msdn.microsoft.com/ja-jp/library/cc427970.aspx

【使用例】

$if($regexpi(%title%,'[a-z+]'),TRUE,FALSE)

$regexpi(%title%,The\s*,)

$files(cmd[,path...])

【概要】

ファイルを検索する

【引数】

cmd - コマンド
n = 数値を指定した場合は、n番目(0が先頭)に見つかったファイルを取得する
count = 総ファイル数を取得する
size = 総ファイルサイズを取得する
path名 = ファイルの存在確認をする
path - 検索するパス(ワイルドカードで指定)

【戻り値】

文字列または数値

【使用例】

$if($files(c:\temp\test.txt),有,無)

$files(0,c:\temp\*.jpg,c:\temp\*.png)

$files(count,c:\temp\*.txt)

$files(count,c:\temp\*.txt)

$files(cmd,path,file[,file...])

【概要】

指定フォルダ配下のファイルを回帰的に検索する

【引数】

cmd - コマンド
n = 数値を指定した場合は、n番目(0が先頭)に見つかったファイルを取得する
count = 総ファイル数を取得する
size = 総ファイルサイズを取得する
path - 検索するパス
file - 検索するファイル(ワイルドカードで指定)

【戻り値】

文字列または数値

【補足】

$files関数との違いは指定フォルダ配下を回帰的に検索する点
例えばパスに c:\temp を指定した場合、その配下にあるフォルダ内も全て検索する

【使用例】

$files_ex(0,/images,*.jpg)
$files_ex(3,c:\temp,*.jpg,*.png,*.bmp)
$files_ex(count,/images,*.jpg)
$files_ex(size,c:\temp,*)

$albumart(file,type)

【概要】

アルバムアートのファイル名情報を生成する

【引数】

file - 入力ファイル
type - タイプ
cover_front = フロントカバー画像
cover_back = バックカバー画像
disc = ディスク画像
icon = アイコン画像

【補足】

この関数単体では機能しない
主に$gp_imageと併用して使用する

【使用例】

$gp_image(%mainid%,$albumart(%path%,cover_front),0,0,500,500,keepaspect:true)

$albumart_find(file[,options...])

【概要】

展開可能なアルバムアートのタイプを調べる

【引数】

file - 入力ファイル
options - オプション
cover_front:flag = フロントカバー画像(デフォルト:true)
cover_back:flag = バックカバー画像(デフォルト:true)
disc:flag = ディスク画像(デフォルト:true)
icon:flag = アイコン画像(デフォルト:true)
once = 上記を順に調べていき最初に見つかったタイプを返す

【戻り値】

展開可能なタイプ
※複数ある場合は|で区切って出力
評価戻り値=1つでも展開可能な場合TRUE、1つも展開できない場合FALSE

【使用例】

$albumart_find(%path%,once)
$if(%_flag%,$hash(_AA,$albumart(%path%,%_result%)),$hash(_AA,/NoAlbumArt.jpg))

$albumart_extract(file,output[,options...])

【概要】

アルバムアートをファイルに展開する

【引数】

file - 入力ファイル
output - 出力ファイルパス
options - オプション
cover_front:flag = フロントカバー画像(デフォルト:true)
cover_back:flag = バックカバー画像(デフォルト:true)
disc:flag = ディスク画像(デフォルト:true)
icon:flag = アイコン画像(デフォルト:true)
once = 上記を順に調べていき最初に見つかった画像のみ展開する

【戻り値】

展開できたファイル名(フルパス)
※複数ある場合は|で区切って出力

評価戻り値=1つでも展開できた場合TRUE、1つも展開できなかった場合FALSE

【使用例】

$albumart_extract(c:\temp\a.mp3,c:\temp\output\foo)

c:\temp\output\foo_cover_front
c:\temp\output\foo_cover_back
c:\temp\output\foo_disc
c:\temp\output\foo_icon

$albumart_extract(c:\temp\a.mp3,c:\temp\output\imagefile,once)

c:\temp\output\imagefile

$albumart_extract(c:\temp\a.mp3,c:\temp\output\foo,cover_front:false,cover_back:false,disc:true,icon:false)

c:\temp\output\foo_disc

$hash(IMGOBJ,)
$hash(IMGOUT,c:\temp\output\imagefile)

$ifequal($len(%IMGOBJ%,0,,$removeobject(%IMGOBJ%)$hash(IMGOBJ,)))

$if($albumart_extract(%path%,%IMGOUT%,once),
$hash(IMGOBJ,$gp_image(%mainid%,%IMGOUT%,0,0,500,500,cache:false))

)

$updatewindow(%mainid%)

※FuncUI内で使うのであれば上記例よりも$gp_image+$albumart関数の方が効率的に処理できる

$lenb(str)

【概要】

文字列のSJISでのバイト数を取得する

【引数】

str - 文字列

【戻り値】

バイト数

【使用例】

$lenb(ふーばー2000) → 12

$hms(sec)

【概要】

秒数を[h:]mm:ss形式に変換する

【引数】

sec - 秒数

【戻り値】

[h:]mm:ss形式

【補足】

$cwb_hmsと違い秒数が2^31-1(2147483647、596523:14:07)を超える場合でも正常に認識できる
(long long intの範囲まで可能)

【使用例】

$hms(90.81) → 01:30
$hms(3750) → 1:02:30

$wdhms(sec)

【概要】

秒数を?wk ?d h:mm:ss形式に変換する

【引数】

sec - 秒数

【戻り値】

?wk ?d h:mm:ss形式

【使用例】

$wdhms(788699) → 1wk 2d 3:04:59

$base([x,y])

【概要】

クライアント座標の基点を設定する

【引数】

x - x座標
y - y座標

【戻り値】

なし

【補足】

有効スコープは同一イベント内のみ
例えばLoadイベントで$base(10,10)としてもOpenイベントでは無効

$button関数など関数の引数でイベントを書く場合は、
その関数を実行した時点のbase値が継承される
例えば
$base(100,100)
$button(%_id%,test,0,0,50,20,'$gp_text(%_id%,foo,50,50)$updatewindow(%_id%)')
とした場合、x=150,y=150の座標にfooの文字が描画される

●よくある間違い

%_mouse_x%および%_mouse_y%にはbase値は適用されないので、
$map関数で使う場合は%_mouse_x%-%_base_x%のようにする

●イベントに対するbase値なのでそのイベントから他のウィンドウのオブジェクトを操作するとbase値が適用される

例えば
$base(100,100)
$gp_text(TEST,foo,0,0)

【使用例】

$base(10,10)
$gp_text(%_id%,foo,0,0)
$base()

$for(var,start,end,step,'tf'[,options...])

【概要】

forループ制御を行う

【引数】

var - ローカル変数名('tf'内でのみ有効)
start - 開始値(浮動小数点)
end - 終了値(浮動小数点)
step - 増減値(浮動小数点)
'tf' - TF
options - オプション
escape:flag = エスケープ文字変換を行う(デフォルト:false)
macro:flag = マクロモードで実行する(デフォルト:false)

【戻り値】

なし

【補足】

BASICのforループとほぼ同等の機能
無限ループ防止のためstep=0またはstart>endかつstep>0またはstart<endかつstep<0の場合は何もしない

マクロモードとは
例えば
$for(i,0,3,1,'$console(%i%)',macro:true)

$console(0)$console(1)$console(2)$console(3)
に展開してから実行するモード
若干処理速度がアップする

【使用例】

$for(i,0,5,1,'$console(%i%)')
→ 0,1,2,3,4,5

$for(i,5,0,-1,'$console(%i%)')
→ 5,4,3,2,1,0

$for(i,0.0,0.9,0.3,'$console(%i%)')
→ 0,0.3,0.6,0.9

$for(i,0,0,1,'$console(%i%)')
→ 0

$ifgreater(%pl_count%,0,
$for(i,0,$calc(%pl_count%-1),1,'$console(%i%-$pl_getname(%i%))')
,
$console('no playlist')
)

$break()

【概要】

同一スコープの以降の処理をブレークする

【引数】

なし

【戻り値】

なし

【補足】

$for,$textfile関数のTFで使った場合はループをブレークする

$for,$textfile関数のTF以外の場所で$break()を実行した場合、
FuncUIの関数はbreakされるがfoobar2000標準関数は処理されるので注意

【使用例】

(1)
$for(i,0,5,1,'$ifequal(%i%,3,$break(),)$console(%i%)')
$break()
$console(この処理は実行されない)

→ 0,1,2

(2)
$console(処理される)
$break()
$console(処理されない)
$puts(aaa,処理される) ← foobar2000標準関数は処理される
$get(aaa) ← foobar2000標準関数は処理される

$cmd(cmd[,options...])

【概要】

コンソールアプリケーションを実行する

【引数】

cmd - コマンドライン
options - オプション
stdin:'in' = STDIN
stderr:var = STDERRを格納する変数名
charcode:sjis|utf8 = 文字コード(デフォルト:utf8)

【戻り値】

コンソールアプリケーションのSTDOUT

【使用例】

$hash(STDOUT,$cmd('perl.exe',stdin:'print "foobar2000\n";',stderr:STDERR,charcode:utf8))
$msgbox(%STDOUT%,Test,0)
$msgbox(%STDERR%,Test,0)

$clock()

【概要】

foobar2000を起動してからの時間(秒数)を返す

【引数】

なし

【戻り値】

秒数(浮動小数点)

【使用例】

$hash(START,$clock())
~処理~
$console($calc($clock()-%START%)秒かかりました)

$pstrsplit(text,w,index[,options...])

【概要】

文字列を指定幅(ピクセル)単位で区切る

【引数】

text - 文字列
w - 幅
index - 取得するindex番号(0が先頭,-1を指定すると分割数が返る)
options - オプション
font-name:name = フォント名
font-size:size = フォントサイズ(pt)
font-style:style = スタイル
i = イタリック
b = ボールド
u = アンダーライン
s = 打ち消し線
※複数指定する場合は bi のように指定する

【補足】

glowやshadowの考慮はしない
$textまたは$drawtextで描画したサイズと同じ
$gp_textで描画するサイズとは異なる

【使用例】

$pstrsplit(foooooooobar2000,50,-1)
$console(%_result%)

$pstrsplit(foooooooobar2000,50,2)
$console(%_result%)

$hash(FNAME,arial)
$hash(FSIZE,20)
$hash(FSTYLE,bi)
$hash(TEXT,foooooooobar2000)
$hash(WIDTH,50)
$hash(COUNT,$pstrsplit(%TEXT%,%WIDTH%,-1,font-name:%FNAME%,font-size:%FSIZE%,font-style:%FSTYLE%))

$for(i,0,$calc(%COUNT%-1),1,'
$pstrsplit(%TEXT%,%WIDTH%,%i%,font-name:%FNAME%,font-size:%FSIZE%,font-style:%FSTYLE%)
$text(%_id%,%_result%,100,$calc(100+%i%*30),font-name:%FNAME%,font-size:%FSIZE%,font-style:%FSTYLE%)
')

$wstrsplit(text,byte,index)

【概要】

文字列を指定バイト数で区切る(2バイト文字対応)

【引数】

text - 文字列
byte - バイト数
index - 取得するindex番号(0が先頭,-1を指定すると分割数が返る)

【使用例】

$wstrsplit(foobar2000,3,2)
$console(%_result%)