TclAPI


  ■レジストリの値をよむ
  ■レジストリの値を変更する(ない場合は新規作成)
  ■ワークフォルダ名
  ■Windowsアプリケーションの起動
  ■スリープ
  ■ファイルコピー
  ■ファイル検索
  ■ディスク容量
  ■フォルダ作成
  ■ファイルアクセスモード変更
  ■環境変数の取得
  ■環境変数の設定
  ■スレッドプロシージャ作成
  ■スレッドプロシージャ終了
  ■メインスレッドのグローバル変数の値を参照する
  ■メインスレッドのグローバル変数の値をセットする
  ■タイマイベントプロシージャの作成
  ■タイマイベントプロシージャの削除
  ■ポート入力
  ■ポート出力
 


レジストリの値をよむ

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]


Windowsアプリケーションの起動

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:失敗
memoバックグラウンド処理を行います。
全く新しいTcl環境で実行されますので、グローバル変数、プロシージャなどは一切引き継げません。
ただし、起動した環境(メインスレッド)のグローバル変数の参照とセットができます。
つまり、メインスレッドとは、メインスレッド側のグローバル変数を介して通信します。
それぞれapi GetVarapi 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を返す
memoスレッドプロシージャ内で実行します。
スレッド(自分自身)を終了させます。api Thread参照


メインスレッドのグローバル変数の値を参照する

api  GetVar  varName

varName/メインスレッドのグローバル変数名
戻り値/グローバル変数の値。グローバル変数が無いときは空文字を返す。
memoスレッドプロシージャでしか使用できません。メインスレッドとの通信に用います。api Thread参照


メインスレッドのグローバル変数の値をセットする

api  SetVar  varName  $val

varName/メインスレッドのグローバル変数名
$val/セットする値
戻り値/なし
memoスレッドプロシージャでしか使用できません。
メインスレッドとの通信に用います。api Thread参照


タイマイベントプロシージャの作成

api  SetTimer  $interval  $procName

$interval/タイムアップ時間をms単位で与えます
$procName/タイムアップした時に実行するプロシージャ名
戻り値/タイマイベントプロシージャID
memoタイマイベントプロシージャは最大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]

 

(C)FreeSoftNet,Inc.