api reg get $RegKey $RegName
$RegKey/次のいずれか。
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_USERS HKEY_LOCAL_MACHINE
$RegName/レジストリ名。
MyReg\\Data1
戻り値/失敗(レジストリが作成されていない)した場合はNULL文字列。
成功した場合は値。
api reg set $RegKey $RegName $Data
$RegKey/次のいずれか。
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_USERS HKEY_LOCAL_MACHINE
$RegName/レジストリ名。
MyReg\\Data1
$Data/変更値
戻り値/失敗(レジストリが作成されていない)した場合はNULL文字列。
成功した場合は値。
api GetCurrentPath
戻り値/ワークフォルダ名
set path [api GetCurrentPath]
api Exec $ProgramName $Param1 .....
$ProgramName/Windowsアプリケーションプログラムファイル名
$Param1.../アーギュメント(なければ省略可)
戻り値/1 成功 0 失敗
api exec WinGeo.EXE
api Sleep $Time
$Time/スリープ時間(ms)
戻り値/なし
api sleep 200
api CopyFile $FileNameS $FileNameD $Flag
$FileNameS/元ファイル名
$FileNameD/コピー先ファイル名
$Flag/0:既に存在していても無条件に上書き
1:既に存在していたら確認を求める
戻り値/1:成功 0:失敗
api CopyFile A.DAT B.DAT 1
api ScanFile $Path $DirSwitch
$Path/検索するフォルダ名(区切りコードは\でも/でも可)
$DirSwitch/省略:ファイルのみが検索
dir:ディレクトリファイルのみが検索
戻り値/ファイルリスト
1階層下のサブディレクトリの中身をリスト
set dirs [api ScanFile /WinGeo 1]
foreach path $dirs {
puts $path
puts [api ScanFile $path 0]
}
api FreeSpace $Switch
$Switch/1:使用容量 0:空き容量
戻り値/バイト単位の容量(4GB未満)
puts "使用容量= [api FreeSpace 1]"
puts "空き容量= [api FreeSpace 0]"
api MkDir $Dir
$Dir/作成するフォルダ名
戻り値/1:成功 0:失敗
api MkDir \\MyDir\\Work
api ChMod $Mode $FileName
$Mode/-w:書き込み禁止 +w:書き込み可
$Filename/ファイル名
戻り値/1:成功 0:失敗
if {[file writable test.dat]} {
api ChMod -w test.dat
}
api GetEnv $VarName
$VerName/環境変数名
戻り値/値
puts [api GetEnv GEOCONCEPTPATH]
puts [api GetEnv TEMP]
api SetEnv $VarName $Val
$VerName/環境変数名
$Val/値
戻り値/1:成功 0:失敗
api SetEnv TCLPATH \\TclXgo
api Thread $TclScriptFileName
$TclScriptFileName/スレッドを作成して実行するTclソースファイル名
戻り値/1:成功 0:失敗
バックグラウンド処理を行います。
全く新しいTcl環境で実行されますので、グローバル変数、プロシージャなどは一切引き継げません。
ただし、起動した環境(メインスレッド)のグローバル変数の参照とセットができます。
つまり、メインスレッドとは、メインスレッド側のグローバル変数を介して通信します。
それぞれapi GetVarとapi SetVarで参照とセットを行います。

------------------------
メインスレッド
------------------------
global ExitThread
set ExitThread 0
api Thread daemon.tcl
------------------------
daemon.tcl
------------------------
while {1} {
set cmd [api GetVar ExitThread]
if {$cmd} {
api ExitThread
}
api sleep 2000
}
# End of File
api ExitThread
戻り値/常に1を返す
スレッドプロシージャ内で実行します。
スレッド(自分自身)を終了させます。api Thread参照
api GetVar varName
varName/メインスレッドのグローバル変数名
戻り値/グローバル変数の値。グローバル変数が無いときは空文字を返す。
スレッドプロシージャでしか使用できません。メインスレッドとの通信に用います。api Thread参照
api SetVar varName $val
varName/メインスレッドのグローバル変数名
$val/セットする値
戻り値/なし
スレッドプロシージャでしか使用できません。
メインスレッドとの通信に用います。api Thread参照
api SetTimer $interval $procName
$interval/タイムアップ時間をms単位で与えます
$procName/タイムアップした時に実行するプロシージャ名
戻り値/タイマイベントプロシージャID
タイマイベントプロシージャは最大10個まで作成できます。
タイマイベントプロシージャを削除するため戻り値を記憶して置く必要があります。
2秒間隔でメッセージを繰り返す
proc timeup {$time} {
gui msg タイムアップしました($time 秒)
}
set id [api SetTimer 2000 "timeup 2"]
api KillTimer $timerProcID
$timerProcID/api SetTimerの戻り値
api inp $portAddress
$portAddress I/Oポートアドレス(0x0000から0xFFFF)
戻り値/十進数値(符号なし1バイト値)
ポートアドレスを十進数以外で指定するときはexprで変換して下さい
set val [api inp [expr 0x61]]
api outp $portAddress $val
$portAddress I/Oポートアドレス(0x0000から0xFFFF)
$Val/値(符号なし1バイト値)
ポートアドレスを十進数以外で指定するときはexprで変換して下さい
api outp [expr 0x61] [expr 0x2f]
|