Copyright: ToolMan Ver. 1.80 by M.Maedera


＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

   ツールマンエディター Ｖｅｒ． １．８０

   << Console Editor "ToolMan" >>

＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

このたびは ツールマンエディター Ver. 1.80 を

ご利用いただきまして、誠にありがとうごさいます。

目次

 1.概要

 2.ファイル内容

 3.使用法

 4.重要なコマンド

 5.コマンドリファレンス

 6.スクリプトリファレンス

 7.APIリファレンス

 8.改訂履歴

 9.著作権等

-----------------------------------------------------------------------


1.概要

  ツールマンエディターは Windows 95, Window NT 3.5 上で

  動作する 32 ビットの軽快なエディタです。

  ( 1). 編集サイズはメモリの許す限り無制限に取れます。

  ( 2). プロポーショナルフォントを指定できるので、

        和文に限らず、欧文の編集作業が快適になります。

  ( 3). SJIS, EUC, JIS, UNICODE, バイナリで編集が可能です。

  ( 4). DBCSに対する細かい設定ができるので、

        環境を工夫すれば中国語、韓国語が編集できます。

  ( 5). 内部処理に UNICODE を選択できるので、

        多国語文字の混在が可能です。Windows95上でも可能です。

        ISO-2022に準じた形式で入出力可能です。

  ( 6). 起動時スクリプトファイルで秀丸やMIFES,VZ 風の環境に化けます。

  ( 7). 通信機能をもち、簡単なパソコン通信ができます。

  ( 8). HTML作成支援機能を持ちホームページが手軽に作れます。

        UTF8形式で先進的なホームページが作成できます。

  ( 9). csh ライクなマクロ言語でテキスト処理が可能です。

  (10). メニューバー、アクセラレーターキー、ツールバー、

        ファンクションキー、ポップアップメニュー、

        ２ストロークキーをゼロから設計できます。

  (11). 起動時に SDI, MDI の切り替えができ、

        MDIモード時には壁紙で環境を向上できます。

  (12). コンソールウィンドウを持ち、

        そのままキャラクター系のコマンドを実行でき、

        その出力結果を編集することができます。

        サブディレクトリ以下も検索する Grep コマンドも装備しています。

  (13). 標準入出力インターフェースをもち、他のプログラムと

        テキストデーターの入出力が可能です。

  (14). GUIソフトでありながら、command.com や cmd.exe の

        リダイレクトに対応しています。

  利用できるコマンドは以下のとおりです。

    [Win32コンソールコマンド] (入力に制限あり)

    [DOSコマンド] (入力に制限あり、出力の乱れあり)

    [ComWin対応コマンド]

-----------------------------------------------------------------------


2.ファイル内容

  ( 1) comwcmd.dll  汎用コマンドを格納するDLL

  ( 2) comwedt.dll  編集処理を行うDLL

  ( 3) comwin.dll   ComWin(16bit)アプリ実行用DLL

  ( 4) comwin32.dll 仮想コンソールメインシステム

  ( 5) comwld.exe   DOSアプリローダー

  ( 6) comwld.pif   DOSアプリローダー用PIF

  ( 7) comwtrm.dll  通信機能を提供するDLL

  ( 8) cwgrep.dll   文字列検索用DLL

  ( 9) readme.txt   簡単な紹介文

  (10) tmfmt*.txt   多言語情報を含むファイルフォーマット

  (11) tm_*.cws     環境設定スクリプト例

  (12) toolman.bmp  ツールバー用ビットマップ

  (13) toolman.cws  環境設定スクリプト

  (14) toolman.exe  ツールマンエディター端末

  (15) toolman.hlp  オンラインヘルプ

  (16) vcomwd.386   仮想入出力ドライバ

-----------------------------------------------------------------------

  ( 1) comwcmd.dll

  汎用的なディレクトリ・ファイル操作系のコマンドが格納されています。

-----------------------------------------------------------------------

  ( 2) comwedt.dll

  編集処理を行うDLLです。

-----------------------------------------------------------------------

  ( 3) comwin.dll

  ComWin(16bit)用に対応したソフトを動かすための DLL です。

  ComWin(16bit)本体のファイルに上書きしないよう注意してください。

-----------------------------------------------------------------------

  ( 4) comwin32.dll

  ツールマンのコンソール部を制御する仮想コンソールシステムです。

  ツールマン提供コマンド、ComWin32対応コマンド、DOSコマンド等の

  出力をツールマンのエディット領域にリダイレクトします。

  ComWin32 Ver. 3.3X と互換性があります。

-----------------------------------------------------------------------

  ( 5) comwld.exe

  DOSアプリを起動するためのローダーです。

-----------------------------------------------------------------------

  ( 6) comwld.pif

  DOSアプリを起動するためのローダーの設定を行う

  定義ファイルです。

-----------------------------------------------------------------------

  ( 7) comwtrm.dll

  通信機能を提供するDLLです。

　term コマンドを提供し実行することで

  簡単なパソコン通信が可能です。

-----------------------------------------------------------------------

  ( 8) cwgrep.dll

  検索機能を提供するDLLです。

  コマンドラインから次ぎの形式で利用可能です。

  comwin dll cwgrep grep [-n][-g{e|j}] string [filename]

  string 検索対象文字列

  filename 検索対象ファイル名

  comwin dll cwgrep grep -n 行番号追加

  comwin dll cwgrep grep -g{e|j} ダイアログ表示 (e=英語, j=日本語)

-----------------------------------------------------------------------

  ( 9) readme.txt

  簡単な紹介文です。

-----------------------------------------------------------------------

  (10) tmfmt*.txt

  ツールマンで扱う多言語編集用のファイル形式の仕様書です。

    tmfmt1.txt ESC:(Unicode Extension) の仕様書です。

    tmfmt2.txt ISO-2022-ESC B の仕様書です。

-----------------------------------------------------------------------

  (11) tm_*.cws

  以下のスクリプトを起動時に設定することで

  さまざまな環境が構築可能です。

    tm_eng.cws 英語環境

    tm_hm.cws 秀丸風編集環境

    tm_light.cws 基本機能

    tm_mi.cws MIFES風編集環境

    tm_np.cws メモ帳風編集環境

    tm_vz.cws VZ風編集環境

-----------------------------------------------------------------------

  (12) toolman.bmp

  ツールバー用のビットマップです。

  16色16*16 ピクセルのビットマップが連なった構造になっています。

  このビットマップデーターを編集することでツールバーの

  イメージを変更することが可能です。

-----------------------------------------------------------------------

  (13) toolman.cws

  ツールマンの環境設定ファイルです。起動時に最初に読み込まれます。

  メニューバー、アクセラレーターキー、ツールバー、

  ファンクションキー等はこのファイルで登録します。

-----------------------------------------------------------------------

  (14) toolman.exe

  ツールマンの端末です。キー入力を受け付け、編集、起動、

  ファイル操作作業を行います。

-----------------------------------------------------------------------

  (15) toolman.hlp

  オンラインヘルプです。

-----------------------------------------------------------------------

  (16) vcomwd.386

  DOS の出力を ToolMan にリダイレクトするための

  仮想デバイスドライバです。

  mode dos 2 のときに利用してください。

  ウィンドウズディレクトリの system.ini

  [386Enh] に device=vcomwd.386 を記述してください。

-----------------------------------------------------------------------


 3.使用法

  (1) ウィンドウ

  (2) キーボード

  (3) 起動時引数

-----------------------------------------------------------------------

  (1) ウィンドウ

  ツールマンエディターは 2 つの編集可能なウィンドウを所有します。

  上部のウィンドウは通常の編集ウィンドウ、

  (エディットウィンドウ)

  下部のウィンドウはコマンド実行機能をもったウィンドウです。

  (コンソールウィンドウ)

  下部のウィンドウの最終位置で改行を行った場合、

  最終行をコマンドとみなし、実行します。

  また、edit コマンドを利用することにより

  コンソールウィンドウからエディットウィンドウに

  文字列をリダイレクトすることも可能になります。

-----------------------------------------------------------------------

  (2) キーボード

  次の操作はデフォルトの状態で使用できます。

  →              左に移動

  ←              右に移動

  ↓              下に移動

  ↑              上に移動

  [Shift]         選択

  [Home]          右端に移動

  [End]           左端に移動

  [PageUp]        １頁上に移動

  [PageDown]      １頁下に移動

  [Break]         ストップ

  [RButtonDown]   ポップアップメニュー呼び出し

  コンソールウィンドウのみ次の操作を行えます。

  [Shift] +↓     過去のコマンド履歴呼び出し(正順)

  [Shift] +↑     過去のコマンド履歴呼び出し(逆順)

  [Tab]           ファイル名補完(正順)

  [Shift] + [Tab] ファイル名補完(逆順)

-----------------------------------------------------------------------

  (3) 起動時引数

  ToolMan は次の引数を指定できます。

  toolman [/f [macro.cws]] [/e:nnnn] [filename] [/c command]

  toolman /f

    強制的に起動時スクリプト選択画面を表示します。

  toolman /f macro.cws

    起動時スクリプトファイルを指定します。

  toolman /e:nnnn

    スクリプトファイル内で使用するシステム環境変数のサイズを指定します。

  toolman filename

    編集するファイル名を指定します。

  toolman /c command

    起動時に実行するコマンドラインを指定します。

-----------------------------------------------------------------------


 4.重要なコマンド

  ここのあげるコマンドは特に重要なコマンドです。

  また、次章のコマンドリファレンスと同名コマンドがある場合は

  こちらの記述が優先されます。

  ( 1) accelkey (アクセラレーターキーの操作)

  ( 2) console (コンソールウィンドウの操作)

  ( 3) edit (エディットウィンドウの操作)

  ( 4) functionkey (ファンクションキーの操作)

  ( 5) grep (文字列の検索)

  ( 6) html (HTML作成支援)

  ( 7) menubar (メニューバーの操作)

  ( 8) mode (各種属性の操作)

  ( 9) strokekey (２ストロークキーの操作)

  (10) toolbar (ツールバーの操作)

  (11) window (メインウィンドウの操作)

-----------------------------------------------------------------------

  ( 1) accelkey (アクセラレーターキーの操作)

    accelkey [arg1 [arg2 [...]]]]

    accelkey

      |---append hAccel fVirt cmd key\n"

      |---create -&hAccel\n"

      |---destroy hAccel\n"

      |---get hwnd -&hAccel\n"

      +---set hwnd hAccel\n"

    accelkey append hAccel fVirt cmd key

      アクセラレーターキーを追加します。

      hAccel : アクセラレーターキーのハンドル

               16進 意味

      fVirt : 0x10 FALT ([Alt] が押されている状態)

              0x08 FCONTROL ([Ctrl] が押されている状態)

              0x02 FNOINVERT (メニューを反転させない)

              0x04 FSHIFT ([Shift] が押されている状態)

              0x01 FVIRTKEY (仮想キーコードの状態)

      cmd : 反応時のスクリプトプロシジャー

      key : 仮想キーコードまたはASCIIコード

    accelkey create -&hAccel

      アクセラレーターキーのハンドルを作成します。

      hAccel : ハンドルを代入するためのシステム環境変数

    accelkey destroy hAccel

      アクセラレーターキーのハンドルを削除します。

      hAccel : アクセラレーターキーのハンドル

    accelkey get hwnd -&hAccel

      アクセラレーターキーのハンドルを取得します。

      hwnd : メインウィンドウのハンドル

      hAccel : ハンドルを代入するためのシステム環境変数

    accelkey set hwnd hAccel

      アクセラレーターキーのハンドルを設定します。

      hwnd : メインウィンドウのハンドル

      hAccel : アクセラレーターキーのハンドル

-----------------------------------------------------------------------

  ( 2) console (コンソールウィンドウの操作)

    次項の edit コマンドに準じます。

-----------------------------------------------------------------------

  ( 3) edit (エディットウィンドウの操作)

    edit [-f[n]] [arg1 [arg2 [...]]]

    edit

      |---backspace

      |---close

      |---cursor

      |     |---down [n]

      |     |     +---page

      |     |---end

      |     |---get -&cols -&lines

      |     |     +---max -&cols -&line

      |     |---getfix -&cols -&lines

      |     |---home

      |     |---left [n]

      |     |     +---word

      |     |---right [n]

      |     |     +---word

      |     |---set cols lines

      |     |---setfix cols lines

      |     +---up [n]

      |           +---page

      |---delete

      |---echo

      |---find

      |     |---left

      |     |---right

      |     +---string searchstring

      |---in

      |---jump

      |---logfile get n -&env

      |---mode

      |     |---{edit|view} [-&isview]

      |     |---{indent|noindent} [-&isindent]

      |     |---{insert|overwrite} [-&isoverwrite]

      |     |---{line|noline} [-&isline]

      |     +---{ruler|noruler} [-&isruler]

      |---new

      |---open [filename]

      |---out [all|sel]

      |---print

      |---record

      |     |---clear

      |     |---play

      |     +---{start|end}

      |---save

      |---saveas [filename]

      |---scrollbar

      |     |---horz [show|hide]

      |     +---vert [show|hide]

      |---select [-&isselected]

      |     |---clear

      |     |---copy

      |     |---cut

      |     |---delete

      |     |---paste

      |     +---{start|end}

      |---size

      +---undo

    -f オプション

      操作対象をフォーカスのあるウィンドウにする。

    -fn オプション

      操作対応を n で指定したエディットウィンドウにする。

    edit backspace

      カーソル位置の直前の文字を消す。

    edit close

      現在編集中のファイルを閉じます。

    edit cursor down [n|page]

      カーソル位置を下方向に移動します。

      n : 行数、省略時は 1

      page : １頁分

    edit cursor end

      カーソル位置を行末に移動します。

    edit cursor get -&cols -&lines

      カーソル位置を取得します。

      cols 桁を取得するための環境変数

      lines 行を取得するための環境変数

    edit cursor get max -&cols -&line

      最終カーソル位置を取得します。

      cols 桁を取得するための環境変数

      lines 行を取得するための環境変数

    edit cursor getfix -&cols -&lines

      カーソル位置を取得します。

      cols 桁を取得するための環境変数

      lines 行を取得するための環境変数

      これは固定ピットフォントを指定した環境用のものです。

      したがって漢字は2文字分とカウントされます。

    edit cursor home

      カーソル位置を行頭に移動します。

    edit cursor left [n|word]

      カーソル位置を左方向に移動します。

      n : 桁数 省略時は 1

      word : １単語分

    edit cursor right [n|word]

      カーソル位置を右方向に移動します。

      n : 桁数 省略時は 1

      word : １単語分

    edit cursor set cols lines

      カーソル位置を指定の位置に設定します。

      cols : 桁数

      lines : 行数

    edit cursor setfix cols lines

      カーソル位置を指定の位置に設定します。

      cols : 桁数

      lines : 行数

      これは固定ピットフォントを指定した環境用のものです。

      したがって漢字は2文字分とカウントされます。

    edit cursor up [n|page]

      カーソル位置を上方向に移動します。

      n : 行数、省略時は 1

      page : １頁分

    edit delete

      カーソル位置の文字を削除します。

    edit echo

      コマンド出力をエディットウィンドウにします。

      console echo で元に戻ります。

    edit find

      文字列検索ダイアログを表示し検索します。

    edit find left

      文字列検索ダイアログで指定された条件を用い、

      ファイルに先頭に向かって検索します。

    edit find right

      文字列検索ダイアログで指定された条件を用い、

      ファイルに末尾に向かって検索します。

    edit find string searchstring

      searchstring で指定された文字列を

      検索バッファに格納します。

    edit in

      コマンドの出力をエディットウィンドウに

      リダイレクトします。

      ex : dir | edit in

    edit jump

      ジャンプ行指定のダイアログを表示します。

    edit logfile get n -&env

      ファイル名の履歴を取得します。

      n : 番号

      env : 履歴を受け取る環境変数

    edit mode {edit|view} [-&isview]

      エディットウィンドウの編集許可・禁止属性を設定します。

      isview 情報を取得します。

    edit mode {indent|noindent} [-&isindent]

      改行時の自動インデント機能の有効・無効を設定します。

      isindent 情報を取得します。

    edit mode {insert|overwrite} [-&isoverwrite]

      文字入力属性を「挿入」「上書き」に切り替えます。

      isvoerwrite 情報を取得します。

    edit mode {line|noline} [-&isline]

      行番号の表示・非表示を設定します。

      isline 情報を取得します。

    edit mode {ruler|noruler} [-&isruler]

      ルーラーの表示・非表示を設定します。

      isruler 情報を取得します。

    edit open [filename]

      ファイルオープンダイアログを表示します。

      filename : 初期ファイル名を指定します。

    edit out all

      編集ファイル内容すべてをコンソールウィンドウに出力します。

    edit out [sel]

      選択されているエディットウィンドウのテキストを

      コンソールウィンドウに出力します。

    edit print

      印刷機能を呼び出します。

      印刷のレイアウトは折返行数を基準にして自動的に計算されます。

    edit new

      新規作成します。

    edit record clear

      キーマクロバッファーを消去します。

    edit record play

      キーマクロを再生します。

    edit record {start|end}

      キーマクロの記録を開始・終了します。

    edit save

      ファイル名が特定されているときファイルを保存し、

      特定されていないときはファイル保存ダイアログを表示します。

    edit saveas [filename]

      ファイル保存ダイアログを表示します。

      保存用のファイル名を指定します。

    edit scrollbar horz [show|hide]

      エディットウィンドウの水平スクロールバーを操作する。

      show 表示

      hide 非表示

    edit scrollbar vert [show|hide]

      エディットウィンドウの垂直スクロールバーを操作する。

      show 表示

      hide 非表示

    edit select -&isselected

      選択範囲が存在するかチェックする

      isselected チェック情報を取得する環境変数。

      0... 選択範囲がない。1... 選択範囲がある。

    edit select clear

      選択範囲を解除します。

    edit select copy

      選択範囲をクリップボードに複写します。

    edit select cut

      選択範囲をクリップボードに移動します。

    edit select delete

      選択範囲を削除します。

    edit select paste

      クリップボードにあるテキストを

      現在の座標位置に複写します。

    edit select {start|end}

      選択モードの開始・終了をします。

      選択モード時にはカーソル移動だけで範囲選択が可能です。

    edit undo

      一つ前の操作に戻る。

-----------------------------------------------------------------------

  ( 4) functionkey (ファンクションキーの操作)

    functionkey [arg1 [arg2 [...]]]

    functionkey

      |---append hFKey fVirt key cmd help

      |---create -&hFKey

      |---delete hFKey fVirt key

      |---destroy hFKey

      |---get hwnd -&hFKey

      |---hide

      +---show [8|10|12]

    functionkey append hFKey fVirt key cmd help

      ファンクションキーに文字列を追加する。

      hFKey : ファンクションキーハンドル

      fVirt : 制御キーの状態

              0x0000 : 通常

              0x0004 : [Shift]

              0x0008 : [Ctrl]

              0x000C : [Shift] + [Ctrl]

      key   : ファンクションキー

              0x0070 : [F1]

              0x0071 : [F2]

              0x007B : [F12]

      cmd   : 登録するプロシジャー名

      help  : ファンクションキーに表示する文字列

    functionkey create -&hFKey

      ファンクションキーを作成する。

      hFKey : 作成したファンクションキーハンドルを

              代入するシステム環境変数

    functionkey delete hFKey fVirt key

      ファンクションキー項目を削除する。

      hFKey : ファンクションキーハンドル

      fVirt : 制御キーの状態

              0x0000 : 通常

              0x0004 : [Shift]

              0x0008 : [Ctrl]

              0x000C : [Shift] + [Ctrl]

      key   : ファンクションキー

              0x0070 : [F1]

              0x0071 : [F2]

              0x007B : [F12]

    functionkey destroy hFKey

      ファンクションキーを削除する。

      hFKey : ファンクションキーハンドル

    functionkey get hwnd -&hFKey

      ファンクションキーのハンドルを取得する。

      hwnd  : メインウィンドウハンドル

      hFKey : 作成したファンクションキーハンドルを

              代入するシステム環境変数

    functionkey hide

      ファンクションキーを隠す。

    functionkey show [8|10|12]

      ファンクションキーを表示する。

      8個 or 10 個 or 12 個

-----------------------------------------------------------------------

  ( 5) grep (文字列の検索)

    grep [-n|-g{e|j}] string [file1[file2[...]]]

    -n : 行番号を追加します。

    -g{e|j} : 設定用のダイアログを表示します。e...英語, j...日本語

    string : 検索文字列を指定します。

    file : 検索対象ファイル

    このコマンドは ToolMan のコンソールウィンドウから

      comwin dll cwgrep grep -gj

    という書式で呼び出すことが可能です。

    また、標準起動時スクリプトファイルでは、

    「編集(E)」--->「Grep(&G)...」で起動されます。

    grep コマンドは指定ファイルから文字列を検索します。

    Unicode にも対応しています。

    また、Unicode で検索された出力結果は、

    直接コンソールウィンドウに表示できないので、

    UTF8 形式で表示されます。

    UTF8 形式は Unicode と相互変換可能なので、

    出力結果をエディットウィンドウにコピーし、

    文字コードのダイアログで、編集時 Unicode、読み取り時 UTF8と

    することで、表示可能です。

    (漢字のファイル名だと表示が乱れる場合があります。)

-----------------------------------------------------------------------

  ( 6) html (HTML作成支援)

    html [arg1 [arg2 [...]]

    html

      |---A

      |---ADDRESS

      |---B

      |---BASE

      |---BASEFONT

      |---BLOCKQUOTE

      |---BLINK

      |---BODY

      |---BR

      |---CAPTION

      |---CENTER

      |---CITE

      |---CODE

      |---DD

      |---DFN

      |---DIR

      |---DL

      |---DT

      |---EM

      |---FONT

      |---FORM

      |---H1

      |---H2

      |---H3

      |---H4

      |---H5

      |---H6

      |---HEAD

      |---HR

      |---HV

      |---I

      |---IMG

      |---INPUT

      |---KBD

      |---MENU

      |---META

      |---NOBR

      |---OL

      |---OPTION

      |---P

      |---PRE

      |---SAMP

      |---SELECT

      |---STRONG

      |---SUB

      |---SUP

      |---TABLE

      |---TD

      |---TEXTAREA

      |---TITLE

      |---TH

      |---TR

      |---TT

      |---UL

      |---VAR

      |---WBR

      +---!

    各オプションはHTMLのタグに相当します。

    機能はHTMLのマニュアル、使用法は toolman.cws を

    参考にしてください。

-----------------------------------------------------------------------

  ( 7) menubar (メニューバーの操作)

    menubar [arg1 [arg2 [...]]]

    menubar

      |---append hMenu fuFlags idNewItem lpszNewItem

      |---create -&hMenu

      |---createpopup -&hPopMenu

      |---delete hMenu uItem fuFlags

      |---destroy hMenu

      |---draw hwnd

      |---get hwnd -&hMenu

      |---getpopup hwnd -&hPopMenu

      |---set hwnd hMenu

      |---setpopup hwnd hPopMenu

      +---trackpopup nPos

    menubar append hMenu fuFlags idNewItem lpszNewItem

      メニューに項目を追加する。

      hMenu : メニューハンドル

                16進 意味

      fuFlags : 0x00000800 MF_SEPARATOR セパレーター

                0x00000000 MF_STRING 文字列

                0x00000010 MF_POPUP ポップアップメニュー

      idNewItem : MF_STRING時 反応時のスクリプトプロシジャー

                  MF_POPUP時 ポップアップメニューのハンドル

                  MF_SEPARATOR 無視

      lpszNewItem : 項目文字列

    menubar create -&hMenu

      メニューハンドルを作成する。

      hMenu : 作成したメニューハンドルを代入するシステム環境変数

    menubar createpopup -&hPopMenu

      ポップアップニューハンドルを作成する。

      hMenu : 作成したポップアップメニューハンドルを

              代入するシステム環境変数

    menubar delete hMenu uItem fuFlags

      メニュー項目を削除する。

      hMenu : メニューハンドル

      uItem : プロシジャー名

      fuFlags : 0x00000000 MY_BYCOMMAND プロシジャー名を使用し削除

    menubar destory hMenu

      メニューを破棄する。

      hMenu : メニューハンドル

    menubar draw hwnd

      メニューを描画する。

      hwnd : メインウィンドウハンドル

    menubar get hwnd -&hMenu

      hwnd : メインウィンドウハンドル

      hMenu : メニューハンドルを代入するシステム環境変数

    menubar getpopup hwnd -&hPopMenu

      hwnd : メインウィンドウハンドル

      hPopMenu : ポップアップメニューハンドルを代入するシステム環境変数

    menubar set hwnd -hMenu

      hwnd : メインウィンドウハンドル

      hMenu : メニューハンドル

    menubar setpopup hwnd -hPopMenu

      hwnd : メインウィンドウハンドル

      hPopMenu : ポップアップメニューハンドル

    memubar trackpopup nPos

      メニュー項目をポップアップ表示する。

      nPos : 項目位置 0 から開始

-----------------------------------------------------------------------

  ( 8) mode (各種属性の操作)

    mode [arg1 [arg2 [...]]]

    mode\n

      |---dos {0|1|2|3}

      |---edit [-f[n]]

      |     |---code

      |     |     |---[-d:[0|0x81-0x9F,0xE0-0xFC,...]

      |     |     |---[-e:{dbcs|unicode|esccolon}]

      |     |     |---[-ex:{dbcs|euc}|{bof|nobof}|{7bit|8bit}]

      |     |     |---[-l:{d|m|n|u}]

      |     |     |---[-p:codepage]

      |     |     |---[-r:{dbcs|euc|jis|unicode|utf8}]

      |     |     |---[-r:{esccolon|iso2022|16}]

      |     |     |---[-w:{dbcs|euc|jis|unicode|utf8}]

      |     |     +---[-w:{esccolon|iso2022|16}

      |     |---color

      |     |     |---[-bg[:[0xBBGGRR]]

      |     |     |---[-ctl[:[0xBBGGRR]]

      |     |     |---[-fg[:[0xBBGGRR]]

      |     |     |---[-ln[:[0xBBGGRR]]

      |     |     +---[-tab[:[0xBBGGRR]]

      |     |---disp

      |     +---font

      |           |---[-c:charset]

      |           |---[-f:facename]

      |           +---[-h:height]

      +---save

    mode dos {0|1|2|3}

      DOSコマンドの起動状態を設定します。

      0 : 別ウィンドウ

      1 : DOS出力取り込み

      2 : DOS入出力同期 (VxD経由)

      3 : DOS入出力同期 (ファイルハンドル経由)

      mode dos 2 のとき

      ウィンドウズディレクトリの system.ini [386Enh]

      に device=vcomwd.386 と記述する必要があります。

    mode edit -f

      操作対応を現在のフォーカスウィンドウにする。

    mode edit -fn

      操作対象を n でして指定されたウィンドウにする。

    mode edit code

      エディットウィンドウのコード設定ダイアログを表示する。

    mode edit code -d:[0|0x81-0x9F,0xE0-0xFC,...]

      DBCS の先頭バイトの範囲を指定する。

      -d: ... デフォルト

      -d:0 ... SBCS(ASCII等)

      -d:0x80-0x9F,0xE0-0xFC ... DBCS(SJIS等)

    mode edit code -e:{dbcs|unicode|esccolon}

      エディットウィンドウの内部処理コードを設定する。

      -e:dbcs ... 2バイトコードセット(SJISも含まれる。)

      -e:unicode ... Unicode

      -e:esccolon ... ECS: (tmformat.txt参照)

    mode edit code -ex:{dbcs|euc}

      エディットウィンドウの入力コードの変換処理を設定する。

      -ex:dbcs ... 変換しない

      -ex:euc ... SJIS ---> EUC 変換を行う。

    mode edit code -ex:{bof|nobof}

      Unicode テキストを扱う場合、Unicode ヘッダーを利用します。

      -ex:bof ... Unicode ヘッダーを利用する。

      -ex:nobof ... Unicode ヘッダーを利用しない。

    mode edit code -ex:{7bit|8bit}

      Greek や Cyrillic 文字の入力時に 7bitコードの上位bitを立て、

      8bit ととして入力する。

      -ex:7bit 通常の入力方法

      -ex:8bit 8bit入力方法

    mode edit code -l:{d|m|n|u}

      エディットウィンドウの改行コードを設定する。

      d ... DOS風で保存(LF--->CR+LF)

      m ... MAC風で保存(CR+LF,LF--->CR)

      u ... UNIX風で保存(CR+LF--->LF)

      n ... 読み込み時のコードで保存する。

    mode edit code -p:codepage

      -p:codepage ... UNICODE 変換時のコードページを指定する。

    mode edit code -r:{dbcs|euc|jis|unicode|utf8|esccolon|iso2022|16}

      エディットウィンドウのファイル読込時のコードを設定する。

      -r:dbcs ... 2バイトコードセット(SJISも含まれる。)

      -r:euc  ... 日本語EUC

      -r:jis ... 7bitJIS

      -r:unicode ... Unicode

      -r:utf8 ... UTF8形式

      -r:esccolon ... ESC:形式

      -r:iso2022 ... ISO-2022-ESC B

      -r:16 ... 16進ダンプ

    mode edit code -w:{dbcs|euc|jis|unicode|utf8|esccolon|iso2022|16}

      エディットウィンドウのファイル書込時のコードを設定する。

      -w:dbcs ... 2バイトコードセット(SJISも含まれる。)

      -w:euc  ... 日本語EUC

      -w:jis ... 7bitJIS

      -w:unicode ... Unicode

      -w:utf8 ... UTF8形式

      -w:esccolon ... ESC:形式

      -w:iso2022 ... ISO-2022-ESC B

      -w:16 ... 16進ダンプ

    mode edit color -bg[:[0xBBGGRR]]

      エディットウィンドウの背景色を設定する。

      -bg ... 設定ダイアログの表示

      -bg: ... デフォルト

      -bg:0xBBGGRR ... 青緑赤の輝度を指定する。

    mode edit color -ctl[:[0xBBGGRR]]

      エディットウィンドウの制御文字色を設定する。

      -ctl ... 設定ダイアログの表示

      -ctl: ... デフォルト

      -ctl:0xBBGGRR ... 青緑赤の輝度を指定する。

    mode edit color -fg[:[0xBBGGRR]]

      エディットウィンドウのテキスト色を設定する。

      -fg ... 設定ダイアログの表示

      -fg: ... デフォルト

      -fg:0xBBGGRR ... 青緑赤の輝度を指定する。

    mode edit color -ln[:[0xBBGGRR]]

      行番号のテキスト色を設定する。

      -ln ... 設定ダイアログの表示

      -ln: ... デフォルト

      -ln:0xBBGGRR ... 青緑赤の輝度を指定する。

    mode edit color -tab[:[0xBBGGRR]]

      エディットウィンドウのタブ文字色を設定する。

      -tab ... 設定ダイアログの表示

      -tab: ... デフォルト

      -tab:0xBBGGRR ... 青緑赤の輝度を指定する。

    mode edit disp

      エディットウィンドウのタブ桁数の設定ダイアログを表示する。

    mode edit font

      エディットウィンドウのフォント設定ダイアログを表示する。

    mode edit font -c:charset

      エディットウィンドウのフォントのキャラクターセットを指定する。

      例) mode edit font -c:81 SHIFTJIS

          mode edit font -c:0  ASCII

    mode edit font -f:facename

      エディットウィンドウのフォント名を指定する。

    mode edit font -h:height

      エディットウィンドウのフォント高を指定する。

    mode save

      各種属性の保存ダイアログを表示する。

-----------------------------------------------------------------------

  ( 9) strokekey (２ストロークキーの操作)

    strokekey [arg1 [arg2 [...]]]

    strokekey

      |---append hStroke fVirt cmd key

      |---create -&hStroke

      |---destroy hStroke

      |---end

      |---get hwnd -&hStroke

      |---set hwnd hStroke

      +---star

    strokekey append hStroke fVirt cmd key

      ２ストロークキーを追加します。

      hStroke : ２ストロークキーのハンドル

                16進 意味

      fVirt : 0x10 FALT ([Alt] が押されている状態)

              0x08 FCONTROL ([Ctrl] が押されている状態)

              0x02 FNOINVERT (メニューを反転させない)

              0x04 FSHIFT ([Shift] が押されている状態)

              0x01 FVIRTKEY (仮想キーコードの状態)

      cmd : 反応時のスクリプトプロシジャー

      key : 仮想キーコードまたはASCIIコード

    strokekey create -&hStroke

      ２ストロークキーのハンドルを作成します。

      hStroke : ハンドルを代入するためのシステム環境変数

    strokekey destroy hStroke

      ２ストロークキーのハンドルを削除します。

      hStroke : アクセラレーターキーのハンドル

    strokekey get hwnd -&hStroke

      ２ストロークキーのハンドルを取得します。

      hwnd : メインウィンドウのハンドル

      hStroke : ハンドルを代入するためのシステム環境変数

    strokekey set hwnd hStroke

      ２ストロークキーのハンドルを設定します。

      hwnd : メインウィンドウのハンドル

      hStroke : ２ストロークキーのハンドル

    strokekey start

      ２ストロークキーを開始します。

-----------------------------------------------------------------------

  (10) toolbar (ツールバーの操作)

    toolbar [arg1 [arg2 [...]]]

    toolbar

      |---append hTBar fuFlags idNewItem lpszNewItem idBitmapPos

      |---create -&hTBar

      |---delete hTBar uItem fuFlags

      |---destroy hTBar

      |---get hwnd -&hTBar

      |---hide

      +---show

    toolbar append hTBar fuFlags idNewItem lpszNewItem idBitmapPos

      ツールバーに項目を追加する。

      hTBar : ツールバーハンドル

      hMenu : メニューハンドル

                16進 意味

      fuFlags : 0x00000800 MF_SEPARATOR セパレーター

                0x00000000 MF_STRING 文字列

      idNewItem : MF_STRING時 反応時のスクリプトプロシジャー

                  MF_SEPARATOR 無視

      lpszNewItem : チップヘルプ文字列

      idBitmapPos : toolman.bmp の位置

    toolbar create -&hTBar

      ツールバーを作成する。

      hTBar : 作成したツールバーハンドルを代入するシステム環境変数

    toolbar delete hTBar uItem fuFlags

      ツールバー項目を削除する。

      hTBar   : ツールバーハンドル

      uItem   : 削除するボタンのプロシジャー名(fuFlags = 0x0000)

                削除する位置(fuFlags=0x0400)

      fuFlags : 0x0000 : プロシジャー名で削除

                0x0400 : 位置で削除

    toolbar destroy hTBar

      ツールバーを削除する。

      hTBar : ツールバーハンドル

    toolbar get hwnd -&hTBar

      ツールバーのハンドルを取得する。

      hwnd  : メインウィンドウハンドル

      hTBar : 作成したツールバーハンドルを代入するシステム環境変数

    toolbar hide

      ツールバーを隠す

    toolbar show

      ツールバーを表示する。

-----------------------------------------------------------------------

  (11) window (メインウィンドウの操作)

    window [arg1 [arg2 [...]]]

    window

      |---about

      |---get

      |     |---console -&hwnd

      |     |---edit [-f[n]] -&hwnd

      |     |---focus -&hwnd

      |     +---main -&hwnd

      |---help

      |---mdi [-&isMDI]

      |     |---cascade

      |     |---iconarragne

      |     |---list

      |     |---tilehorz

      |     +---tilevert

      |---regist

      +---startup

    window about

      バージョン表示ダイアログを表示する。

    window get console -&hwnd

      コンソールウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window get edit -&hwnd

      エディットウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window get edit -f -&hwnd

      フォーカスのあるエディットウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window get edit -fn -&hwnd

      MDI で n 番目のエディットウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window get focus -&hwnd

      フォーカスウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window get main -&hwnd

      メインウィンドウハンドルを取得する。

      hwnd : 取得するウィンドウハンドルを代入するシステム環境変数

    window help

      オンラインヘルプを表示する。

    window mdi [-&isMDI]

      MDI編集状態の情報を取得する。

    window mdi cascade

      MDI編集時にウィンドウを重ねて表示する。

    window mdi iconarrange

      MDI編集時にアイコンを整列する。

    window mdi list

      MDI編集時にウィンドウ一覧を表示する。

    window mdi tilehorz

      MDI編集時にウィンドウを水平方向に並べる。

    window mdi tilevert

      MDI編集時にウィンドウを垂直方法に並べる。

    window regist

      ユーザー登録ダイアログを表示する。

    window startup

      スタートアップメニューを表示する。

-----------------------------------------------------------------------


 5.コマンドリファレンス

    ( 1) alias  (別名定義設定)

    ( 2) cd, chdir (ディレクトリ変更)

    ( 3) clip (クリップボード送信)

    ( 4) cls (画面消去)

    ( 5) comwin (システム情報コマンド)

    ( 6) comwins (サービスコマンド)

    ( 7) copy (ファイル複写)

    ( 8) ctty (入出力デバイスの変更)

    ( 9) date (日付参照変更)

    (10) debug (デバッグレベルの設定)

    (11) del (ファイル削除)

    (12) dir (ファイル一覧)

    (13) dirs (ディレクトリスタックの出力)

    (14) echo (メッセージの表示)

    (15) exit (終了)

    (16) fg (フォアグラウンド実行)

    (17) filer (ファイラプロンプトの制御)

    (18) for (繰り返し実行)

    (19) help (ヘルプ)

    (20) history (コマンド履歴表示)

    (21) KeyboardLayout (キーマップ、IME変更)

    (22) kill (プロセスの強制終了)

    (23) let (ローカル環境変数操作)

    (24) logoff (ログオフ)

    (25) math (数値演算ライブラリ)

    (26) md, mkdir (ディレクトリ作成)

    (27) mode (画面モード、通信ポートの設定)

    (28) paste (クリップボード受信)

    (29) path (パス参照変更)

    (30) pause (一時停止)

    (31) popd (作業ディレクトリの復元)

    (32) PostMessage (メッセージポスト)

    (33) printf (書式付き出力コマンド)

    (34) prompt (プロンプト変更)

    (35) ps (プロセス一覧)

    (36) pushd (作業ディレクトリを保存)

    (37) pwd (カレントディレクトリの表示)

    (38) rd, rmdir (ディレクトリ削除)

    (39) reboot (システム(OS)再起動)

    (40) rem (コメント行の指定)

    (41) ren (名前の変更)

    (42) restart (Windows再起動)

    (43) SendMessage (メッセージ送出)

    (44) set (システム環境変数操作)

    (45) SetWindowPos (ウィンドウ位置設定)

    (46) SetWindowText (キャプション名設定)

    (47) ShellExecute (関連付け起動)

    (48) shutdown (Windowsの終了)

    (49) Sleep (ウェイトをかける)

    (50) start (プログラム起動)

    (51) stdlib (標準ライブラリ)

    (52) string (文字列操作ライブラリ)

    (53) term (通信機能)

    (54) termbow (BOW通信機能)

    (55) test (計算式評価)

    (56) time (時刻参照変更)

    (57) type (ファイル内容表示)

    (58) unalias (別名定義削除)

    (59) ver (バージョン表示)

    (60) vol (ボリュームラベル参照)

    (61) win (WinExec, LoadModule API の実行)

----------------------------------------------------------------------

  ( 1) alias (別名定義設定)

    alias [name [wordlist]]

    別名を定義し登録します。

    name ; コマンドに対する別名

    wordlist ; コマンドリスト

    alias ; 別名の一覧を表示します

    alias name ; 別名 name の登録状況を表示します。

    alias name wordlist ; 文字列 wordlist を 別名 name として登録します。

    第２引き数に空白文字を使う場合、引用符(")で括ってください。

    例

        >alias fd winfile

        >alias custom "notepad \config.sys"

        >alias ls "dir %1 /w"

    alias と unalias を別名にすることはできません。

    別名定義を削除する場合は unalias を利用してください。

    comwin.ini の [Alias] セクションが更新されます。

----------------------------------------------------------------------

  ( 2) cd, chdir (ディレクトリ変更)

    cd [dir]

    カレントディレクトリを変更します。

----------------------------------------------------------------------

  ( 3) clip (クリップボード送信)

    clip

    クリップボードに文字列を転送します。

    標準入出力用のコマンドなので、

    リダイレクトと組み合わせると便利です。

    例 1

      >clip

      hello world

      ^Z

    クリップボードにキーボード入力文字列を転送

    例 2

     >clip < foo.txt

    クリップボードに foo.txt の内容を転送

    例 3

    >dir | clip

    クリップボードに dir コマンドの出力を転送

----------------------------------------------------------------------

  ( 4) cls (画面消去)

    cls

    ComWinのクライアント画面を消去します。

    過去の出力履歴も同時に消す機能もありますの注意してください。

----------------------------------------------------------------------

  ( 5) comwin (システム情報コマンド)

    comwin [ver [-&env]|hwnd [-&env]|dll [args...]]

    システム情報を表示します。

    comwin [ver [-&env]]

        ver バージョン情報を表示します。

        -&env 環境変数 env に代入します。

    comwin [hwnd [-&env]]

        hwnd コンソールのウィンドウハンドルを返します。

        -&env 環境変数 env に代入します。

    comwin [dll [args...]]

        ComWin対応コマンドDLLを直接実行する。

        >comwin dll comwins.dll dir *.*

        >comwin dll cwtools.dll date

----------------------------------------------------------------------

  ( 6) comwins (サービスコマンド)

    comwins が提供しているサービスコマンドです。

    ComWin の本来の趣旨から外れていますが、

    私が個人的に使用しているコマンドを集めています。

    これらのコマンド群は ComWin の過去互換性の対象外です。

----------------------------------------------------------------------

  ( 7) copy (ファイル複写)

    copy [dir1|file1] [dir2|file2]

    ファイルを複写します。

    ワイルドカードが使えます。

    上書き防止の確認メッセージがでます。

    確認メッセージをスキップする場合は

    環境変数 COPYCMD=/y を指定してください。

----------------------------------------------------------------------

  ( 8) ctty (入出力デバイスの切り替え)

    ctty [con|aux]

    ctty con 入出力デバイスをComWin のクライアント領域に設定します。

    ctty aux 入出力デバイスを通信ポートに設定します。

    mode コマンドで通信パラメーターを設定してください。

    注意

      通信ポートが使用できない状態のときに

      ctty aux を実行するとハングアップするときがあります。

----------------------------------------------------------------------

  ( 9) date (日付参照変更)

    date 日付の参照、または変更を行います。

----------------------------------------------------------------------

  (10) debug (デバッグレベルの設定)

    debug [0|1]

    スクリプトデバッグ時のメッセージ情報のレベルを設定します。

----------------------------------------------------------------------

  (11) del (ファイル削除)

    del file

    指定したファイルを削除します。

    ワイルドカードが使えます。

----------------------------------------------------------------------

  (12) dir (ファイル一覧)

    dir [d:|dir|file] [/W]

    指定したパスと一致したファイルの一覧を表示します。

    ワイルドカードが使えます。

    /W ワイド表示モードです。

    オプションは /W しかありません。

    大文字で表示したい場合は環境変数 DIRCMD に "/-l" を設定してください。

    DIRCMD に "/o" が含まれている場合は整列表示します。

----------------------------------------------------------------------

  (13) dirs (ディレクトリスタックの出力)

    dirs

    pushdで保存されたディレクトリスタックの内容を出力します。

    参照 popd, pushd

----------------------------------------------------------------------

  (14) echo (メッセージの表示)

    echo [on|off|args]

    on   エコーをオンにします。

    off  エコーをオフにします。

    args 引数に指定された文字列を出力します。

    エコーオン/オフはコマンドライン上でのみ可能です。

    バッチファイルで echo on 状態にしたい場合は、

    [ESC](ビューワーモード) ---> Option ---> Environment で

    指定できます。

    また "on" "off" を出力する場合は "^^on", "^^off" としてください。

    次の文字列を指定すると特殊文字が出力されます。

        ^^a     ベル

        ^^b     バックスペース

        ^^c, ^^ 行末で改行しない。

        ^^e     0x1B

        ^^n     改行

        ^^r     復帰

        ^^t     タブ

        ^^xNN   "NN" を16進数にする

        ^^^^    '^'文字

    (エスケープ文字は本来'^' だけですが、コマンドラインでの

     エスケープ文字と重複するので "^^" と二つ続ける必要があります。)

----------------------------------------------------------------------

  (15) exit (終了)

    exit [/p]

    ComWin を終了します。

    ComWin がシェルとして登録されている場合は Windows を終了します。

    ( system.ini の [boot] に shell=comwinx.exe の記述がある場合)

    /p 終了時の確認メッセージを出力しません。

    "exit /p" をエイリアスやファンクションキーランチャーに

    登録することで無確認終了が可能になりますが、

    Alt+F4 や Ctrl+SP--->C 等の標準インターフェースで終了する場合には

    利用できません。この場合でも無確認終了を行う必要のある場合は、

    comwin.ini の [etc] 以下の行に exit=/p を挿入してください。

----------------------------------------------------------------------

  (16) fg (フォアグラウンド実行)

    fg 直前の外部コマンドが終了するまで、ComWin の実行を停止します。

    例

    c:\>notepad ;fg

    メモ帳が終了するまで ComWin を待機状態にします。

    バッチ処理に利用すると便利です。

    (Ctrl+C でフォアグラウンド処理を解除します。)

    参照 フォアグラウンド起動とバックグランド起動

----------------------------------------------------------------------

  (17) filer (ファイラープロンプト制御)

    filer [-c|-d|-k|-kid|-o|-p] ファイラープロンプトを制御します。

    filer -c : (Create)ファイラープロンプトを表示します。

    filer -d : (Destroy)ファイラープロンプトを非表示にします。

    filer -k [C [command]] : (Key)ファイラーに１キーで入力できるコマンドを

                             指定します。

    例

      filer -k C copy

      filer -k D del

      filer -k E toolman

    filer -kid : (Key Indirect)キー登録のためのダイアログを表示します。

    filer -o{N|E|S|D} : (Sort)ファイラーのリストを整列します。

                        N,名前、E,拡張子、S,サイズ、D,日付

    filer -p [String1:String2] : (PathMask) 絞り込みを行います。

                                 ';' で複数の文字列を指定できます。

    例

        filer -p "*.exe;*.dll"

----------------------------------------------------------------------

  (18) for (繰り返し実行)

   FOR %variable IN (set) DO command [command-parameters]

   set に指定されている文字列を %variable に代入し、

   DO 以下のコマンド文字列を置き換え set に指定されている

   文字列がなくまるまで、繰り返し実行します。

   例

     >for %ext in (c h rc def) do dir *.%ext

    dir *.c ; dir *.h ; dir *.rc ; dir *.def を実行する。

----------------------------------------------------------------------

  (19) help (ヘルプ)

    help

    ComWin 内部でサポートされているコマンドの一覧を表示します。

    内部コマンドはコマンドDLLを作成することで拡張できます。

    関連項目

        CallCommand sample3.c

----------------------------------------------------------------------

  (20) history (コマンド履歴表示)

    history [n]

    コマンド履歴を表示します。

    n コマンド履歴行数を指定します。(無効な数値のときは 10行)

    hisotry コマンドを使用するためには、環境設定ダイアログで、

    ヒストリーコマンド機能を ON にする必要があります。

    ヒストリーコマンドが有効な場合、!10, !c, !! 等で過去のコマンドを

    実行できます。

    注意 history コマンドとカーソルによるヒストリー機能は別ものです。

         history コマンド(オプション)は comwins.dll が提供し、

         ヒストリー機能(標準)は comwinx.exe が提供しています。

----------------------------------------------------------------------

  (21) KeyboardLayout (キーマップ、IMEの変更)

    KeyboardLayout [IME Name|Keyboard Layout Name]

    IME の一覧を表示します。

    IME を切り替えます。

    キーボードレイアウトの一覧を表示します。

    キーバードレイアウトを切り替えます。

----------------------------------------------------------------------

  (22) kill (プロセスの強制終了)

    kill hwnd [[hwnd2] ...]

    hwnd ウィンドのハンドル

    プロセスを強制的に終了します。

    ウィンドウハンドルは ps コマンドで取得するか、

    キャプション名での代替指定が使用可能です。

----------------------------------------------------------------------

  (23) let (ローカル環境変数操作)

    スクリプトファイル内で使用した場合、

    ローカル環境変数領域を操作する点をのぞき、

    使用方法は set コマンドと同様です。

----------------------------------------------------------------------

  (24) logout (ログオフ)

    logoff

    端末からログオフします。

    ComWin32専用のコマンドです。

----------------------------------------------------------------------

  (25) math (数値演算ライブラリ)

    math func x [y] -&z

    ANSI-C の数値演算ライブラリを実行します。

    func 数値演算ライブラリ

    x, y 数値を格納する環境変数

    z 戻値を格納する環境変数

    z = sin(x)      : math sin x -&z

    z = cos(x)      : math cos x -&z

    z = tan(x)      : math tan x -&z

    z = asin(x)     : math asin x -&z

    z = acos(x)     : math acos x -&z

    z = atan(x)     : math atan x -&z

    z = atan2(x, y) : math atan2 x y -&z

    z = sinh(x)     : math sinh x -&z

    z = cosh(x)     : math cosh x -&z

    z = tanh(x)     : math tanh x -&z

    z = exp(x)      : math exp x -&z

    z = log(x)      : math log x -&z

    z = log10(x)    : math log10 x -&z

    z = pow(x, y)   : math pow x y -&z

    z = sqrt(x)     : math sqrt x -&z

    z = ceil(x)     : math ceil x -&z

    z = floor(x)    : math floor x -&z

    z = fabs(x)     : math fabs x -&z

----------------------------------------------------------------------

  (26) md, mkdir (ディレクトリ作成)

    md dir

    新しくサブディレクトリを作成します。

----------------------------------------------------------------------

  (27) mode (画面モード、通信ポートの設定)

    (a) mode BREAK [on|off]

    mode BREAK on  割り込みの許可

    mode BREAK off 割り込みの禁止

    mode BREAK     現在の割り込み状態

    BREAK オプションは ComWin システムではかなり重要な役割をはたします。

    BREAK off 状態では処理中に CPU を独占するので少し高速になります。

    BREAK on  状態では出力処理中に他のプロセスに CPU を開放するので、

    マルチタスク(Windows の制約で擬似マルチタスク)動作が可能です。

    デフォルトは mode BREAK on です。

    (b) mode CONx string

    string 通信(COM)ボートの設定パラメーター

    例

    C:\>mode COM1 9600,n,8,1

        COM1 ... ポート

        9600 ... ボーレート

        n    ... パリティ(e|m|n|o)

        8    ... キャラクタ長

        1    ... ストップビット

    ctty で参照します。

    comwin.ini の [Auxiliary] セクションが書き換えられます。

    (c) mode CON FONT facename

    facename フォントの書体名

    (d) mode DOS [0|1|2|3]

    0 ... 拡張コンソールを別ウィンドウで実行します。

    1 ... 拡張コンソールの出力を取り込みます。

    2 ... 拡張コンソールと VxD を介して入出力を同期させます。

    3 ... 拡張コンソールとファイルハンドルを介して入出力を同期させます。

----------------------------------------------------------------------

  (28) paste (クリップボード受信)

  paste

  クリップボードからの文字列を受け取り出力します。

----------------------------------------------------------------------

  (29) path (パス参照変更)

    path [[dir1[;dir2]...]]

    コマンドのサーチパスの設定(dir1[;dir2]...)

    または表示を行います。

    例

      c:>path

      c:\;c:\dos;c:\windows

      c:>path c:\bin;c:\usr\bin;c:\local\bin

----------------------------------------------------------------------

  (30) pause (一時停止)

    pause

    次のコマンドを実行する前に一時停止します。

    ただし直前のコマンドはバックグラウンドで実行されています。

    pause コマンドのプロンプト以降に Ctrl+'C' コードが

    含まれている場合、バッチファイル内で実行中止処理ができます。

    例

    c:\>winmine

    c:\>pause

    c:\>sol ;pause

    バッチファイル内やフィルタ処理時に利用すると便利です。

    (注意...pause コマンドは ComWin ver 1.50 から機能を縮小し、

     フォアグラウンド処理を行わなくなりました。

     フォアグラウンド処理が必要な場合は fg コマンドを利用してください。)

    参照 フォアグラウンド起動とバックグランド起動

----------------------------------------------------------------------

  (31) popd (作業ディレクトリの復元)

    popd

    ディレクトリスタックの先頭を削除し、

    作業ディレクトリを２番目のエントリに変更します。

    参照 dirs, pushd

----------------------------------------------------------------------

  (32) PostMessage (メッセージポスト)

    (a) PostMessage hwnd message wParam lParam

        又は

    (b) PostMessage -w message wParam lParam hwnd

    hwnd ウィンドウハンドル

    message メッセージ番号

    wParam 各メッセージに対応した２バイト整数

    lParam 各メッセージに対応して４バイト整数

    PostMessage API を直接呼び出しメッセージを各ウィンドウに送出します。

    このコマンドを使用することで汎用的にウィンドウ操作が行えます。

    ウィンドウハンドルは ps コマンドで取得するか、

    キャプション名での代替指定が使用可能です。

    (a) は Windows の PostMessage API と同じ呼び出し順序です。

    (b) は alias 登録するのに便利な呼び出し順序です。

    例

    C:\>alias maximized "PostMessage %1 112 F030 0"

    C:\>alias minimized "PostMessage %1 112 F020 0"

    C:\>alias restore   "PostMessage %1 112 F120 0"

    C:\>ps

    HWND TASK INST TITLE

    194C 1497 1446 プログラム マネージャ

    C:\>maximized 194C  <--- プログラムマネージャを最大化

    C:\>minimized 194C  <--- プログラムマネージャをアイコン化

    C:\>restore   194C  <--- プログラムマネージャを復元

    C:\>maximized "[ファイル マネージャ]"

    C:\>minimized "[ファイル マネージャ]"

    C:\>restore   "[ファイル マネージャ]"

    PostMessage のパラメータは SDK を参考にしてください。

----------------------------------------------------------------------

  (33) printf(書式付き出力コマンド)

    printf format [env1 env2 ...]

    format   printf の書式指定の部分です。(C言語のprintfに準じます。)

    env1 ... 書式で利用する変数部分です。(システム環境変数で指定します。)

    例

      set value=65

      printf "^%c ^%d ^%X ^%s" value value value value

      ---> A 65 41 65

      ('%' は環境変数引用符なので '^' でエスケープする必要があります。)

----------------------------------------------------------------------

  (34) prompt (プロンプト変更)

    prompt [text]

    コマンドプロンプトの文字列を text に変更します。

    次の特殊文字が使用できます。

    $Q ... '='

    $$ ... '$'

    $P ... カレントドライブ、パス

    $N ... カレントドライブ

    $G ... '>'

    $L ... '<'

    $B ... '|'

    $H ... バックスペース

    $_ ... 改行

    $E ... ESCコード

    既定値は $P$G です

    prompt コマンドは作業領域や保存領域として INI ファイルに

    プロンプト文字列を書き込みます。INI ファイル内で特殊文字として

    扱われている文字を利用する場合は注意が必要です。

    逆にそれを積極的に利用する方法もあります。

    prompt $p$g % と指定すれば、出力結果は c:\windows> command と

    なり、末尾に空白が追加されます。

    prompt %% と指定すれば、「%」がプロンプトになります。

    注意  現バージョンでは環境変数 PROMPT は参照しません。

----------------------------------------------------------------------

  (35) ps (プロセス一覧)

    ps

    現在実行中のプロセスの一覧を表示します。

    例

        C:\WIN\COMWIN>ps

        HWND TASK INST COMMAND  TITLE

        12D8 1F37 1ED6 msime    MSIMEServer

        26A0 19C7 198E comwinx  ComWin Ver. 3.80J

        2D18 1A77 2D6E winword  Microsoft Word - README.DOC

        2410 1A77 2CA6 olesvr   Srvr

        194C 14E7 1496 progman  プログラム マネージャ

        1F90 1D67 1D3E drwatson ワトソン博士

        20F0 1CD7 1C46 winoa386 MS-DOS プロンプト

        3768 276F 2416 winhelp  Windows 3.1 SDKヘルプ

    HWND ウィンドウのハンドル

    TASK タスクのハンドル

    INST インスタンスのハンドル

    ウィンドウのハンドルは kill や SendMessage で使用してください。

----------------------------------------------------------------------

  (36) pushd (作業ディレクトリを保存)

    pushd [directory]

    現在の作業ディレクトリをディレクトリスタックに保存し、

    新しく作業ディレクトリを directory に変更します。

    環境変数に pushdcmd=unix と指定すると

    パラメーター無指定時にディレクトリスタックの

    1番目と2番目のディレクトリを交換します。

    参照 dirs, popd

----------------------------------------------------------------------

  (37) pwd (カレントディレクトリ表示)

    pwd

    カレントディレクトリを表示します。

----------------------------------------------------------------------

  (38) rd, rmdir (ディレクトリ削除)

    rd dir

    指定した空きディレクトリを削除します。

----------------------------------------------------------------------

  (39) reboot (システム(OS)再起動)

    reboot [/p]

    Windows を終了しシステムをリセットします。

    /p 確認メッセージを出力しません。

----------------------------------------------------------------------

  (40) rem (コメント行の指定)

    rem [comment]

    コメント行を指定します。

----------------------------------------------------------------------

  (41) ren (名前の変更)

    ren file1 file2

    file1 の名前を file2 に変更します。

    ファイル内容、ファイルのタイムスタンプは変更しません。

    (プログラム作成の難易度、実用性から考えて、

     ファイル名にディレクトリ名を含めることは

     機能からはずしました。)

----------------------------------------------------------------------

  (42) restart (Windows再起動)

    restart [/p]

    Windows を終了し再起動します。

    /p 確認メッセージを出力しません。

----------------------------------------------------------------------

  (43) SendMessage (メッセージ送出)

    (a) SendMessage hwnd message wParam lParam

        又は

    (b) SendMessage -w message wParam lParam hwnd

    hwnd ウィンドウハンドル

    message メッセージ番号

    wParam 各メッセージに対応した２バイト整数

    lParam 各メッセージに対応して４バイト整数

    SendMessage API を直接呼び出しメッセージを各ウィンドウに送出する。

    このコマンドを使用することで汎用的にウィンドウ操作が行えます。

    ウィンドウハンドルは ps コマンドで取得するか、

    キャプション名での代替指定が使用可能です。

    (a) は Windows の SendMessage API と同じ呼び出し順序です。

    (b) は alias 登録するのに便利な呼び出し順序です。

    例

    C:\>alias maximized "SendMessage %1 112 F030 0"

    C:\>alias minimized "SendMessage %1 112 F020 0"

    C:\>alias restore   "SendMessage %1 112 F120 0"

    C:\>ps

    HWND TASK INST TITLE

    194C 1497 1446 プログラム マネージャ

    C:\>maximized 194C  <--- プログラムマネージャを最大化

    C:\>minimized 194C  <--- プログラムマネージャをアイコン化

    C:\>restore   194C  <--- プログラムマネージャを復元

    SendMessage のパラメータは SDK を参考にしてください。

    PostMessage と SendMessage の違い

        PostMessage = 手紙伝言

        SendMessage = 電話伝言

    と考えてください。

    電話の方が処理は早いのですが、相手の都合が悪い場合もあります。

    ComWin が SendMessage を使用すると相手(別プロセス)の都合が悪い場合、

    最悪の状態でシステムフリーズという現象がおきます。(特にOLE対応ソフト)

    通常は SendMessage は使用せず、PostMessage を使用することを勧めます。

----------------------------------------------------------------------

  (44) set (システム環境変数操作)

    set [name=[string]]

    set @ expression

    環境変数の設定(name=string)、

    削除(name=)、一覧を表示します。

    プロンプト(name)、標準入力からの入力を求めます。

    計算式(@ exression)、計算式を評価し環境変数に代入します。

    注意

      DOS の場合 name は大文字に変換されるのですが、

      ComWin の場合、大文字、小文字を区別します。

      サーチパスを変更するときは次のようにしてください。

        c:>set PATH=c:\dos <--- 正

        c:>set path=c:\dos <--- 誤

    参照  スクリプトリファレンス

----------------------------------------------------------------------

  (45) SetWindowPos (ウィンドウ位置設定)

    SetWindowPos hwnd hwndInsertAfter x y cx cy fuFlags

    hwnd            ウィンドウハンドル

    hwndInsertAfter 位置ハンドル

    x               水平位置

    y               垂直位置

    cx              幅

    cy              高さ

    fuFlags         フラグ

    hwndInsertAfter は次の値を設定してください。

      最下位位置 1、最上位位置 0、

      常に手前表示設定 -1、常に手前表示解除 -2

    fuFlags は次の値を OR で組み合わせてください。

      0001 サイズを変更しない

      0002 移動しない

      0004 Z-オーダーを変えない

      0008 再描画しない

      0010 アクティブにしない

      0020 枠を描画する

      0040 ウィンドウを表示する

      0080 ウィンドウを非表示にする。

    ウィンドウハンドルは ps コマンドで取得するか、

    キャプション名での代替指定が使用可能です。

    例

      >SetWindowPos "[時計]" -1 0 0 0 0 3

      時計を常に手前状態にする。

      >SetWindowPos "[プログラム マネージャ]" 0 0 0 640 480 0

      プログラムマネージャの位置を(0,0)にし、大きさを(640,480)にする。

----------------------------------------------------------------------

  (46) SetWindowText (キャプション名設定)

    SetWindowText hwnd string

    hwnd   ウィンドウハンドル

    string 設定する文字列

    キャプション名を設定します。

    ウィンドウハンドルは ps コマンドで取得するか、

    キャプション名での代替指定が使用可能です。

    各アプリケーションのキャプション名を

    ユーザーの扱いやすいキャプション名に変更できます。

    例

      c:\>SetWindowText "[プログラム マネージャ]" "Program Manager"

    注意 キャプション名に著作権表示のあるアプリ等は不用意に変更すると

         著作権に触れる場合があります。各アプリのマニュアルに従ってください。

----------------------------------------------------------------------

  (47) ShellExecute (関連付け起動)

    ShellExecute hwnd Op File Params Dir ShowCmd

    アプリケーションの詳細な関連付け起動を行います。

        hwnd    : ウィンドウハンドル、通常は 0 を指定してください。

        Op      : 起動操作、通常は 0 を指定してください。

        File    : 起動ファイル名

        Params  : 起動ファイル名に渡す引数

        Dir     : 起動時のディレクトリ

        ShowCmd : 起動状態。

    [Op] 起動操作の例

        "open" or "print" or "0"

    [ShowCmd] 起動状態の例

        SW_SHOWNORMAL     : 1

        SW_SHOWMINIMIZED  : 2

        SW_SHOWMAXIMIZED  : 3

    例えば、alias で次のように指定すれば、

    >alias sh "ShellExecute 0 0 %1 ^"%3 %4^" ^" %2^" 1"

    >sh exefile [directory [argument]]

    という起動ディレクトリ指定つきのランチャーコマンドが実現できます。

----------------------------------------------------------------------

  (48) shutdown (Windowsの終了)

    shutdown [/p]

    Windows システムをシャットダウンします。

    Windows を終了させます。

    /p 確認メッセージを出力しません。

----------------------------------------------------------------------

  (49) Sleep (ウェイトをかける)

    Sleep time

    ウェイトをかける

    time ウェイト(ミリ秒)

----------------------------------------------------------------------

  (50) start (プログラム起動)

    start [/wait] exefile [arg0 [...]]

    exefile で指定されたプログラムを起動します。

    /wait ... プログラムをファアグラウンドで起動します。

----------------------------------------------------------------------

  (51) stdlib (標準ライブラリ)

    stdlib func x -&y

    ANSI-C の標準ライブラリ関数を実行します。

    func 標準ライブラリ

    x, y 環境変数

    srand(x)   : stdlib srand x

    x = rand() : stdlib rand -&x

----------------------------------------------------------------------

  (52) string (文字列操作ライブラリ)

    string func dst src len -&pos

    ANSI-C の文字列操作ライブラリを実行します。

    func 文字列操作ライブラリ

    dst, src, len, pos 環境変数

    strcpy(dst, src)               : string strcpy dst src

    strncpy(dst, src, len)         : string strncpy dst src len

    strcat(dst, src)               : string strcat dst src

    strncat(dst, src, len)         : string strncat dst src len

    val = strcmp(str1, str2)       : string strcmp str1 str2 -&val

    val = strncmp(str1, str2, len) : string strncmp str1 str2 len -&val

    pos = strchr(str, chr)         : string strchr str chr -&pos

    pos = strrchr(str, chr)        : string strrchr str chr -&pos

    pos = strstr(dst, str)         : string strstr dst str -&pos

    len = strlen(str)              : string strlen str -&len

----------------------------------------------------------------------

  (53) term (通信機能)

    term [filename]

    filename 定義ファイル名を指定します。

    term コマンドを実行すると専用コマンド入力モードに入ります。

    以下のサブコマンドが利用できます。

      ! [command] ; ComWin のコマンド実行する

      !![string] ; 文字列をデーターとして扱う

      !close ; 通信ポートを閉じる

      !code {SJIS|EUC} ; 文字コードを設定する

      !download filename ; 指定ファイルをXMODEM(128/SUM)で受信する

      !exit ; 通信コマンドを終了する

      !help ; コマンド一覧を表示する

      !load filename; テキストファイルをロードする

      !log filehead ; 通信ログ名を指定する

      !open [COMn] ; 指定された通信ポートを開く

      !password ; パスワード用の入力ボックスを開く

      !set ; 設定ダイアログを開く

      !speed COMm ; 通信パラメーターを設定する(m=1,2,3,4)

      !speed COMm [baud=b] ; 速度(b=100-19200)

      !speed COMm [parity=p] ; パリティ(p=n,e,o,m,s)

      !speed COMm [data=d] ; データ長(d=5,6,7,8)

      !speed COMm [stop=s] ; ストップビット(1,1.5,2)

      !speed TELNET [host=hostname] ; ホスト名を指定する

      !speed TELNET [port=12] ; ホストのポートを指定する

      !tel number; 電話する

      !time ; 通信経過時間を表示する

      !upload filename ; 指定ファイルをXMODEM(128/SUM)で送信する

      !wait string ; string で指定した文字列を受信するまで待つ

    コマンドの詳細

    ! [command] ; ComWin のコマンド実行する

      通信モードのなかから ComWin のコマンドが実行できます。

      ! の次に ' '(空白) が必要です。

    !![string] ; 文字列をデーターとして扱う

      !! あとに続いた文字列は通常のデーターとして扱います。

      '!' をデーターとして渡したい場合 "!!!" とすることで可能です。

    !load filename; テキストファイルをロードする。

      電子メール等を送信するとき等に

      ディスク上のテキストファイルを指定します。

    !log filehead ; 通信ログ名を指定する

      ログとして保存するファイル名の先頭文字を指定します。

      実際のファイル名には通信時の日付が追加されます。

      (例)

         NF           ---> NF960720.LOG

         NIFTY        ---> NIFTY720.LOG

         C:\COMWIN\NF ---> C:\COMWIN\NF960720.LOG

    !password ; パスワード用の入力ボックスを開く

      通常の通信ソフトは入力文字をそのままホストに送りますが、

      ComWin の場合はラインバッファに一時的に蓄えられます。

      したがってパスワード等のエコーバックしたくない文字列を

      入力するときに使用します。省略系は !p です。

    !tel number; 電話する

      指定した電話番号で電話します。ただしトーン回線のみです。

      パルス回線を使用するときには

      ATDP 等の AT コマンドを使用してください。

    !time ; 通信経過時間を表示する

      通信回線を開いてからの経過時間を表示する。

    (注意事項)

    バージョンアップユーザーの場合デフォルトでは利用できません。

    「拡張コマンドDLL」の設定で comwint.dll を登録してください。

    (32bit 版は comwtrm.dll)

    また、comwin.ini の [CommandDll] に comwint.dll=CallCommandを

    書き込むことでも使用可能になります。

    (32bit 版は comwin32.ini [CommandDll] comwtrm.dll=CallCommand)

    term コマンドを実行した状態のままで ComWin を終了させないでください。

    また、複数の ComWin から同時に term コマンドを使用しないでください。

    システムが不安定になります。

----------------------------------------------------------------------

  (54) termbow (BOW通信機能)

    (16bit版ComWinのみ、ToolManエディタ等では使用不可)

    term [-h] [-wXXXX] [-mXXXX]

    -h ヘルプメッセージ

    -wXXXX BOWPADのウィンドウハンドル

    -mXXXX BOWPADの文字列受け渡しメッセージ番号(既定値は0x8102)

           通常は無視してよい。

    termbow コマンドを実行すると専用コマンド入力モードに入ります。

    以下のサブコマンドが利用できます。

      ! [command] ; ComWin のコマンド実行する

      !![string] ; 文字列をデーターとして扱う

      !attach ; BOWの出力を ComWin と関係付ける。

      !detach ; BOWの出力を ComWin と切り離す。(vi等を使用する場合)

      !exit ; BOW通信コマンドを終了する

      !help ; コマンド一覧を表示する

-----------------------------------------------------------------------

  (55) test (計算式評価)

    test expression

    expression を評価し、環境変数 status に

    真であれば 0 を 偽であれば、1 を代入する。

    参照  スクリプトリファレンス

----------------------------------------------------------------------

  (56) time (時刻参照変更)

    time

    時刻の参照、または変更を行います。

----------------------------------------------------------------------

  (57) type (ファイル内容表示)

    type file

    ファイル file の内容を表示します。

    (32bit版) Unicode テキストファイルも表示します。

----------------------------------------------------------------------

  (58) unalias (別名定義削除)

    unalias strings

    指定した別名 strings を無効にします。

    unalias *

    すべての別名を無効にします。

    comwin.ini の [Alias] セクションが更新されます。

----------------------------------------------------------------------

  (59) ver (バージョン表示）

    ver

    comwin.dll の バージョン番号を表示します。

    (comwinx.exe の バージョンはキャプションに表示されます。)

----------------------------------------------------------------------

  (60) vol (ボリュームラベル参照)

    vol [drive]

    drive で指定したドライブの

    ボリュームラベルを参照します。

----------------------------------------------------------------------

  (61) win (WinExec, LoadModule API の実行)

    win [/e] [/Sn] exefile [option]

    exefile を n の状態で WinExec API を使い起動します。

    (/e を指定した場合は LoadModule API を呼び出します。

    この場合、環境変数が子プロセスに継承されます。)

    n の状態値はスタートアップ機能で説明しているのと同じ値です。

    例

      win sol      ソリティアを通常の状態で起動する。

      win /s1 sol  同上

      win /s3 sol  ソリティアを最大化で起動する。

      win /s6 sol  ソリティアをアイコン化で起動する。

    ComWin ver 1.40 から新設されたコマンドです。

    ComWin は DOSプログラム、ComWin用バッチファイルを管理する必要が

    あるので、起動前に実行ファイルの形式(DOS, WIN, WIN32S等)を

    常にチェックしています。

    しかし、作者の財力から得られる情報では

    非公開のヘッダーを持った実行ファイルすべてに対応するのは不可能で、

    実行ファイルの種別を誤認識する場合が考えられます。

    非常用のコマンドとしても利用してください。

    (現在、作者の知りうるものでは、EXCEL4 だけが該当します。

     EXCEL5 は正常に認識しますので、EXCEL4 の特殊性が原因だと思います。

     ComWin ver 1.30 用に用意された comwine.dll を使用している方は

     comwine.dll を削除して、comwin.ini から

     comwine.dll=CallCommand の行を削除してください。)

    参照 スタートアップ機能

         環境変数サーバー機能

----------------------------------------------------------------------

    (コマンド補足)キャプション名での代替指定について

    Windows は ウィンドウハンドルを用いてウィンドウ操作を行うのですが、

    ウィンドウバンドルは 16bit の数字であり

    しかも、起動した環境によって変化するものなので、

    コマンドラインから扱うのは非常に不便です。

    そこで ComWin ではキャプション名を指定することで

    ウィンドウハンドルの代替指定を可能にしました。

    「"[キャプション名]"」 とすることで最初に該当するウィンドウを指定。

    「"{キャプション名}"」 とすることで該当する全てのウィンドウを指定。

-----------------------------------------------------------------------


 6.スクリプトリファレンス

  ( 1) コメント

  ( 2) 予約語

  ( 3) 定数

  ( 4) 変数

  ( 5) 予約変数

  ( 6) 演算子

  ( 7) 引用符

  ( 8) プロシジャー

  ( 9) コマンド行

  (10) 制御コマンド一覧

-----------------------------------------------------------------------

  ( 1) コメント

    '#' ではじまり、改行までの文字列をコメントとして処理します。

    例

        dir # ディレクトリ内のファイル一覧を表示します。

-----------------------------------------------------------------------

  ( 2) 予約語

    以下の文字列はスクリプト内で予約されています。

      break, breaksw, call, case, continue,

      default, else, end, endif, endsw,

      for, foreach, gosub, goto, if,

      proc, return, shift, switch, then, until,

      while

-----------------------------------------------------------------------

  ( 3) 定数

    定数は基本的に文字列として定義されますが、

    文字列の並びにより次の種類に分類されます。

        10進整数系( 0-9 の文字ではじまるもの)、

        16進整数系( 0x の2文字ではじまるもの)、

        浮動小数点系( . 文字が含まれているもの)、

        アドレス系(& 文字ではじまるもの)、

        文字列系(その他)

    例

        123456 (10進整数系)

        0x123456 (16進整数系)

        123.456 (浮動小数点系)

        &a123456 (アドレス系)

        "123456" (文字列系)

-----------------------------------------------------------------------

  ( 4) 変数

    * 識別子

      英字もしくは「_」ではじまる文字列です。

      途中に数字、「.」、「[」、「]」を含めることが可能です。

      2バイトコード(漢字等)も使用可能です。

      変数名を工夫することで擬似配列や、擬似構造体も定義できます。

      array[0], array[1], arrary[100]

      struct.member1, struct.member2,

      struct.mem_ary[10], struct.mem_ary[25]

    * 宣言

      set, let の代入式に指定するか、

      test, for (...;...;...), if (...), while (...), until (...) の

      計算式に指定することで、自動的に領域を確保します。

      基本的に文字列型として宣言されます。

    * 代入

      set foo=abc

      set @ foo = 2 + 3

      set @ foo += 3

      等の構文で代入可能です。詳しくは set を参照してください。

    * 参照

      %foo% のように環境変数を '%' で括ることで参照できます。

    * 記憶クラス

      変数の記憶クラスは次の２つに別れます。

      外部変数(システム環境変数)

        すべてのプロシジャー(関数)、プロセスで使用可能な変数です。

        set コマンドで宣言、代入します。

      内部変数(ローカル環境変数)

        カレントプロシジャー(関数)でのみ有効な変数です。

        let コマンドで宣言、代入します。

      変数領域はそれぞれ 4096 文字まで有効です。

    * 変換規則

      各変数に作用する演算子により

      文字列、アドレス、10進整数、16進整数、浮動小数点数に

      変換されます。詳しくは演算子を参照してください。

-----------------------------------------------------------------------

  ( 5) 予約変数

    次の変数はあらかじめシステムで予約されています。

    status

      直前のコマンドの戻り値を格納する。

    status_window

      直前のコマンドのウィンドウハンドルを格納する。

    status_console

      直前の拡張コンソール(=DOS窓)のウィンドウハンドルを格納する。

-----------------------------------------------------------------------

  ( 6) 演算子

    (演算子)(意味)(優先順位・方向)(変換形式)

    ()  値構築演算子　　　　 1左  文字列

    ++  後置増分演算子　　　 2右  10進整数、浮動小数点数

    --  後置減分演算子　　　 2右  10進整数、浮動小数点数

    ++  前置増分演算子　　　 2右  10進整数、浮動小数点数

    --  前置減分演算子　　　 2右  10進整数、浮動小数点数

    ~   補数演算子　　　　　 2右  10進整数

    !   論理否定演算子　　　 2右  10進整数

    -   単項- 演算子　　　　 2右  10進整数、浮動小数点数

    +   単項+ 演算子　　　　 2右  10進整数、浮動小数点数

    &   アドレス演算子　　　 2右  アドレス

    *   間接演算子　　　　　 2右  文字列

    $   間接演算子　　　　　 2右  文字列

    :   文字化演算子　　　　 2右  文字列

    :   数値化演算子　　　　 3左  10進整数

    *   2項*演算子　　　　　 4左  10進整数、浮動小数点数

    /   2項/演算子　　　　　 4左  10進整数、浮動小数点数

    %   2項%演算子　　　　　 4左  10進整数

    +   2項+演算子　　　　　 5左  10進整数、浮動小数点数

    -   2項-演算子　　　　　 5左  10進整数、浮動小数点数

    <<  左シフト演算子　　　 6左  16進整数

    >>  右シフト演算子　　　 6左  16進整数

    <   < 演算子　　　　　　 7左  10進整数

    <=  <=演算子　　　　　　 7左  10進整数

    >   > 演算子　　　　　　 7左  10進整数

    >=  >=演算子　　　　　　 7左  10進整数

    ==  ==演算子　　　　　　 8左  10進整数

    !=  !=演算子　　　　　　 8左  10進整数

    &   ビット積演算子　　　 9左  16進整数

    ^   ビット差演算子　　　10左  16進整数

    |   ビット和演算子　　　11左  16進整数

    &&  論理積演算子　　　　12左  10進整数

    ||  論理和演算子　　　　13左  10進整数

    =   単純代入演算子　　　14右  文字列

    *=  *=演算子　　　　　　14右  10進整数、浮動小数点数

    /=  /=演算子　　　　　　14右  10進整数、浮動小数点数

    %=  %=演算子　　　　　　14右  10進整数

    +=  +=演算子　　　　　　14右  10進整数、浮動小数点数

    -=  -=演算子　　　　　　14右  10進整数、浮動小数点数

    <<= <<= 演算子　　　　　14右  10進整数

    >>= >>= 演算子　　　　　14右  10進整数

    &=  &=演算子　　　　　　14右  16進整数

    |=  |=演算子　　　　　　14右  16進整数

    ^=  ^=演算子　　　　　　14右  16進整数

    ,   カンマ演算子　　　　15左  文字列

    代入演算子の左辺値には変数文字列をそのまま指定してください。

    参照するためには環境変数引用符 %...% が必要です。

    set @ a = 1

    set @ b = 2

    set @ c = %a% + %b%

    echo %a% + %b% = %c% # ---> 1 + 2 = 3

    備考

      *間接演算子「*」「$」について

        任意の文字列に「*」「$」を作用させることで、

        文字列の指す環境変数が参照できます。

        該当する環境変数が存在しない場合は空文字を返します。

        C言語のポインタに相当する機能です。

          set @ a = 1

          set @ b = a

          set @ c = $(%b%)

          set @ d = $$b

          echo "%c%" "%d%" # ---> "1" "1"

        「*」と「$」の違い

        「$」はローカル環境変数(let で宣言したもの)しか

        参照しませんが、「*」はシステム環境変数(set で宣言したもの)

        も参照します。

          set path=c:\windows;c:\windows\system;c:dos

          let path1=%path%     # 代入

          let @ path2 = *path  # 代入

          let @ path3 = $path  # 未代入

          echo %path1% # ---> c:\windows;...

          echo %path2% # ---> c:\windows;...

          echo %path3% # ---> (なし)

        逆のケースもあります。

          let str=abc

          set str1=%str%       # 代入

          set @ str2 = *str    # 代入

          set @ str3 = $str    # 未代入

          echo %str1% # ---> abc

          echo %str2% # ---> abc

          echo %str3% # ---> (なし)

        通常はモジュールの独立性を保つために「$」を使用すべきです。

      *文字化演算子「:」、数値化演算子「:」について

        [単項演算子として使用]

          let @ c = :0x41   # ASCIIコードを文字にする。

          let @ w = :0x82A0

          echo "%c%" "%w%" # ---> "A" "あ"

        [２項演算子として使用]

          let @ c = abc:0 # 左項の文字列の 0 番目を コード化する。(0から開始)

          let @ w1 = あいう:0 ;let @ w2 = あいう:1

          let @ c ^|= 0, w = ($w1*0x100+$w2)^|0 # 10進表示から16進表示に変更

          echo "%c%" "%w%" # ---> "0x00000041" "0x000082A0"

          let s=123

          let @ i = 0

          let @ c[%i%] = :($s:$i), i++

          let @ c[%i%] = :($s:$i), i++

          let @ c[%i%] = :($s:$i), i++

          echo %c[0]%%c[1]%%c[2] # ---> 123

      *任意の文字列を10進整数にキャストする例

          set @ b = ~~a

      *任意の文字列を16進整数にキャストする例

          set @ b = a ^| 0

      *任意の文字列を浮動小数点数にキャストする例

          set @ b = a + 0.0

-----------------------------------------------------------------------

  ( 7) 引用符

    次の 3種類の引用符が定義されています。

    「"」(ダブルクォート) 通常引用符

       引用符で囲まれた文字列を特殊文字も含め一つの文字列にします。

       演算式内でのみ有効です。

       引用符内の特殊文字はそれを利用するコマンドに依存します。

       let @ str1 = "I am a boy."

    「`」(バッククォード) リダイレクト引用符

       引用符で囲まれた文字列をコマンドとみなし、

       その出力結果と置き換えます。演算式内でのみ有効です。

       引用符内の特殊文字はそれを利用するコマンドに依存します。

       let @ str1 = `echo I am a boy.`

    「%」(パーセント) 環境変数引用符

       引用符で囲まれた文字列を環境変数とみなし、

       それが指し示す文字列と置き換えます。

       すべてのコマンドラインで評価されます。

       引用符内の特殊文字はそれを利用するコマンドに依存します。

       let @ str1 = %str0%

    備考

      * 演算式

        test expr, set @ expr, let @ expr,

        for (expr;expr;expr), if (expr) then, untile (expr), while (expr)

        の expr に該当する部分です。

      * 「%」と「*」,「$」の違いについて

        以下の式はすべて等価ですが、

        使用法により大きく異なる場合もあります。

          let @ a = %b% + %c%

          let @ a = $b + $c

          let @ a = *b + *c

        %...% はすべてのコマンドラインで文字列として展開されるのに対し、

        「*」,「$」は 演算式内の演算子です。したがって副作用はありません。

        %...% は演算子の評価前に展開されるので、副作用もありますが、

        条件式をそのまま指定することもできます。

          let a=^" # 副作用の例

          if ("%a%" == "") then # エラー """ となり引用符のネストが崩れる。

          let condition=$a+$b

          if (%condition%) then # 条件式そのものも指定できる。

-----------------------------------------------------------------------

  ( 8) プロシジャー

    プロシジャーという通訳単位でスクリプトは管理されています。

    各プロシジャーは proc func (名前) で区切られています。

    BOF(Begin Of File)

    ...                メインプロシジャー

    proc abc

    ...                abc プロシジャー

    proc def

    ...                def プロシジャー

    proc ghi

    ...                ghi プロシジャー

    EOF(End Of File)

    各プロシジャーは独立した、内部変数、ラベルを持ちます。

    スクリプトを実行した場合、最初にメインプロシジャーが実行されます。

    その他のプロシジャーは call コマンドで呼び出します。

      call @ abc 1 2 3

    各プロシジャーの引き数は %1 %2 %3 ... %9 で参照することができます。

    %0 はスクリプトファイル名です。

    [プロシジャー間のデーターの引き渡し]

    各プロシジャーはそれぞれ独立した内部変数、ラベルを所有しますが、

    これは各プロシジャーのモジュール化には有効ですが、データー操作を

    行うには不便です。そこで次の方法が用意されています。

    1. gosub を使用する。gosub によって呼ばれる処理は、

       内部変数を共有できます。ただし、モジュール化には不適当です。

    2. set を利用する。set による外部変数でデーターを共有します。

       ただし、大量のデーターを受け渡すには不適当です。

    3. & を利用する。「&」演算子でデーターの変更を許可することができます。

       各プロシージャをモジュール化するには最も有効な方法です。

    例

    let @ a = 1

    let @ b = 2

    call @ swap &a &b

    return

    proc swap

    let pa=%1

    let pb=%2

    let @ tmp = $%pa%

    let @ %pa% = $%pb%

    let @ %pb% = $tmp

    return

    「&」文字を変数名の先頭につけることで呼び出された子プロシジャーは

    「&」文字以下の文字列と一致するヘッダーをもった親プロシジャーの変数を

     変更することができます。擬似配列を扱うこともできます。

    例)

    let @ a[0] = 1

    let @ a[1] = 2

    call @ swap &a

    return

    proc swap

    let pa=%1

    let @ tmp = $%pa%[0]

    let @ %pa%[0] = $%pa%[1]

    let @ %pa%[1] = $tmp

    return

-----------------------------------------------------------------------

  ( 9) コマンド行

    制御コマンド行

      次の文字列で始まる行は制御コマンド行として処理されます。

      break, breaksw, call, continue, else,

      end, endif, for, foreach, goto,

      if, return, shift, switch, until, while

    ラベル行

      次の文字列もしくは「:」で始まる行はラベル行として処理されます。

      case, default, endsw

    通常コマンド行

      制御コマンド行でもラベル行でもない行は通常コマンド行として

      解釈されます。ComWin のコマンドライン解釈に準じます。

    備考

      @ で始まる行はエコーオン状態でも表示されません。

      DOS との互換性のためにあります。

      「@echo off」、「@REM BAT FOR COMWIN」以外では

      積極的に使用する必要はありません。

-----------------------------------------------------------------------

  (10) 制御コマンド一覧

    ( 1) break

    ( 2) breaksw

    ( 3) call

    ( 4) continue

    ( 5) else

    ( 6) end

    ( 7) endif

    ( 8) for

    ( 9) foreach

    (10) gosub

    (11) goto

    (12) if

    (13) return

    (14) shift

    (15) switch

    (16) then

    (17) until

    (18) while

-----------------------------------------------------------------------

    ( 1) break

      for ループ、while ループ、until ループ、

      foreach ループから脱出します。

      同一ネストの end コマンドの次の行に実行位置が移ります。

      例

      let @ i = 1

      while (1)

          if ($i >= 10) break

          let @ i += 1

      end

      (注) DOS 互換の break コマンドは mode コマンドに吸収されました。

-----------------------------------------------------------------------

    ( 2) breaksw

      switch ブロックから脱出します。

      同一ネストの endsw ラベルの次の行に実行位置が移ります。

      例

      let @ i = 1

      switch (%i%)

          case 0 :

              breaksw

          case 1 :

              breaksw

          default :

              breaksw

      endsw

-----------------------------------------------------------------------

    ( 3) call

      コマンド、プロシジャーを実行します。

      call command [args]

      コマンド実行処理は DOS との互換性のためにあります。

      通常はバッチファイルも含めコマンド名の指定だけで実行可能です。

      call @ proc [args]

      バッチファイル内で定義されたプロシジャーを呼び出します。

      引き数の指定も可能です。

      call コマンドの最大ネストは 5 です。

      (内部で System() API を呼ぶコマンドを利用する場合、

       それ以下でもネストエラーが発生する場合があります。)

      call @ proc は次のように展開されます。

      call @ proc ---> %0 -@:proc

      この規則を応用することで他のファイルの

      プロシジャーを呼び出すことも可能です。

      また、ComWinスクリプトでは -@ オプションは予約されています。

      例

          #----------#

          # main.cws #

          #----------#

          let str1=abc

          let str2=def

          string.cws -@:strcat &str1 &str2

          return

          #------------#

          # string.cws #

          #------------#

          proc strcat

          let pdst=%1

          let psrc=%2

          let @ tmp1 = $%pdst%

          let @ tmp2 = $%psrc%

          let @ %pdst% = %tmp1%%tmp2%

          return

-----------------------------------------------------------------------

    ( 4) continue

      for ループ、while ループ、until ループ、

      foreach ループでループ条件文まで継続します。

      同一ネストの end コマンドの行に実行位置が移ります。

      例

      let @ i = 1

      while ($i <= 100)

          let @ i += 1

          if ($i <= 10) continue

          let @ i += 1

      end

-----------------------------------------------------------------------

    ( 5) else

      if (...) then ... else ... endif ブロックで

      ifの条件文が偽のときに実行されます。

      else if (...) then のように if コマンドを続けることも可能です。

      例

      let @ i = 1

      if ($i == 0) then

          # $i == 0 のとき

      else if ($i == 1) then

          # $i == 1 のとき

      else

          # それ以外のとき

      endif

-----------------------------------------------------------------------

    ( 6) end

      for ループ、while ループ、until ループ、

      foreach ループを終了します。

      ループ条件文が真のときループを継続し、

      偽のとき end コマンドの次の行に実行位置が移ります。

      例

      let @ i = 1

      while ($i <= 10)

          let @ i += 1

      end

-----------------------------------------------------------------------

    ( 7) endif

      if (...) then ... else ... endif ブロックを終了します。

      例

      if not exist \autoexec.bat then

          # \autoexec.bat がなかったら

      endif

-----------------------------------------------------------------------

    ( 8) for

      for (expr1 ; expr2 ; expr3)

          expr1 で初期化を行い、expr2 が真の間 expr3 を繰り返します。

          expr2 が偽の場合、同一ネストの end の次の行に実行位置を移します。

      例

      # SJIS 2バイトコードを列挙します。

      for (i = 0x81; $i <= 0x9F; i++)

          for (j = 0x40; $j <= 0xFC; j++)

              if ($j == 0x7F) continue

              let @ c = :($i * 0x100 + $j)

              echo %c%^^c

          end

      end

      for (i = 0xE0; $i <= 0xFC; i++)

          for (j = 0x40; $j <= 0xFC; j++)

              if ($j == 0x7F) continue

              let @ c = :($i * 0x100 + $j)

              echo %c%^^c

          end

      end

      echo

      return

-----------------------------------------------------------------------

    ( 9) foreach

       foreach env (args1 args2 ...)

           (args1 args2 ...) に該当する文字列を

           ローカル環境変数 env に代入し、

           該当する文字列がなくまるまで繰り返し実行します。

           ワイルドカードも使えます。

       例

       foreach file (*.c *.h)

           echo %file%

       end

-----------------------------------------------------------------------

    (10) gosub

      gosub label

      :label で指定されたラベル行に実行位置を移し、

      return 行で現在の次の行に戻ります。

      ラベル行のフォーマットは ':' + 文字列です。

      例

        # コマンドライン引数を一つずつ表示

        gosub setargs

        let @ i = 0

        while (%i% < %argc%)

            let @ argv = $argv[%i%]

            echo %argv%

            let @ i += 1

        end

        return

        :setargs

        let @ argc = 0

        while ("%0" != "")

            # let @ と使用すると':'等が演算子と解釈されるので不適当

            let argv[%argc%]=%0

            let @ argc += 1

            shift

        end

        return

-----------------------------------------------------------------------

    (11) goto

      goto label

      :label で指定されたラベル行に実行位置を移します。

      ラベル行のフォーマットは ':' + 文字列です。

-----------------------------------------------------------------------

    (12) if

      if condition command

      条件文が真ならばコマンドを実行します。

      条件文に次の書式が使用出来ます。

      if [not] errorlevel [==] <0-255> command

        エラーレベルの判定

      if [not] exist <file> command

        ファイル<file>の存在のチェック

      if [not] string1 == string2 command

        文字列<string1><string2>の比較

      if (expression) command

        計算式<expression>の判定

      また条件式が偽であっても if 行のコマンド部分が then ならば

      then コマンドを実行し if (...) then ... else ... endifブロックに

      入ります。

      (注) エラーレベルは %status% と同じ値をもちます。

      status は直前のコマンドの戻り値です。

      例

      let @ a = 1

      let @ b = 2

      test $a == $b

      if errorlevel 1 echo エラーがあります。

      let file=\config.sys

      if not exist %file% echo %file% が存在しません。

      let str1=ABC

      let str2=DEF

      if "%str1%" == "%str2%" then

          echo %str1% と %str2% は一致します。

      else

          echo %str1% と %str2% は一致しません。

      endif

      let @ i = 1

      if ($i == 1) echo %i% は 1 です。

-----------------------------------------------------------------------

    (13) return

      return number

      number で指定された数値を戻り値としてシステムに返します。

-----------------------------------------------------------------------

    (14) shift

      shift

      引数を左にシフトします。

      shift を実行すると %1 が %0, %2 が %1 となります。

-----------------------------------------------------------------------

    (15) switch

       switch (string)

       string と一致する文字列をもった case ラベルまでジャンプします。

       どの case ラベルにも該当しない場合は、default ラベルがあれば

       そこにジャンプし、ない場合は endsw までジャンプします。

       let string=str0

       switch (%string%)

           case str0 :

               breaksw

           case str1 :

               breaksw

           case str2 :

               breaksw

           default :

               breaksw

        endsw

      「case x :」「default :」の「:」の前にはスペースが必要です。

      スペースを入れない場合は直前の文字列と結合します。

      case a : <--- 正

      case a:  <--- 誤 「a:」と判定します。

-----------------------------------------------------------------------

    (16) then

      if 条件文が真の場合、次の行を実行します。

      偽の場合、同一ネストの else コマンドまでジャンプします。

      then 単独の指定はできません。

      例

      let @ i = 10

      if ($i == 10) then

          echo %i% は 10 です。

      else

          echo %i% は 10 ではありません。

      endif

-----------------------------------------------------------------------

    (17) until

      until (expression)

      expression が真の間ループを実行します。

      最初の1回目だけは expression を実行せずループに入ります。

      例

      let @ i = 10

      until ($i <=10)

          echo %i%

          let @ i += 1

      end

-----------------------------------------------------------------------

    (18) while

      while (expression)

      expression が真の間ループを実行します。

      例

      let @ i = 1

      while ($i <= 10)

          echo %i%

          let @ i += 1

      end

-----------------------------------------------------------------------


 7.APIリファレンス

    ( 1) Puts, cwPuts (出力関数)

    ( 2) Gets, cwGets (入力関数)

    ( 3) Fputs, cwFputs (ファイル出力関数)

    ( 4) Fgets, cwFgets (ファイル入力関数)

    ( 5) System, cwSystem (実行関数)

    ( 6) Getch, cwGetch (直接入力関数)

    ( 7) Inkey, cwInkey (直接入力関数)

    ( 8) Fwrite, cwFwrite (バイナリ出力関数)

    ( 9) Fread, cwFread (バイナリ入力関数)

    (10) GetComWinLong (情報関数)

    (11) MakeArgument (引き数作成関数)

    (12) cwPutenv (環境変数設定関数)

    (13) cwGetenv (環境変数取得関数)

    (14) cwFprintf (書式付出力関数)

    (15) cwFputsW (Unicode出力関数)

    (16) cwFgetsW (Unicode入力関数)

    (17) CallCommand(仮称) (内部コマンド提供関数)

    (18) CallInterpreter(仮称) (コマンド解釈提供関数)

    (19) CallScript(仮称) (スクリプト提供関数)

    (20) CallCommand (端末用コマンド処理関数)

-----------------------------------------------------------------------

  ( 1) Puts, cwPuts (出力関数)

    関数名 Puts, cwPuts

        LONG FAR PASCAL Puts(LPSTR lpStr); // プロトタイプ

        LONG FAR PASCAL cwPuts(LPSTR lpStr); // プロトタイプ

    機能   ASCIIZ文字列 lpStr をComWinのクライアント領域に出力します。

    引数 lpStr 出力する文字列

    戻り値 正常、出力した文字数

           エラー、-1

    詳細は hello.c sample1.c を参照してください。

-----------------------------------------------------------------------

  ( 2) Gets, cwGets (入力関数)

    関数名 Gets, cwGets

        LPSTR FAR PASCAL Gets(LPSTR lpStr); // プロトタイプ

        LPSTR FAR PASCAL cwGet(LPSTR lpStr); // プロトタイプ

    機能  ComWin のクライアント領域に入力された文字列を取得します。

    引数  lpStr 入力する文字列のためのバッファ

    戻り値 正常、lpStr

           エラー、NULL

    注意

        Gets は ANSI C の正式な関数 gets に準拠しているのですが、

        呼ばれた側がバッファー長を管理できないという致命的な

        仕様ミスがありますので、不特定多数にリリースするソフトには

        使わないほうが無難だと思われます。Fgets で代用してください。

    詳細は sample1.c を参照してください。

-----------------------------------------------------------------------

  ( 3) Fputs, cwFputs (ファイル出力関数)

    関数名 Fputs, cwFputs

        LONG FAR PASCAL Fputs(LPSTR lpStr, LPVOID lpInfo);

        LONG FAR PASCAL cwFputs(LPSTR lpStr, LPVOID lpInfo);

    機能 ファイルに文字列を出力します。

    引数 lpStr 出力する文字列

         lpInfo ファイル情報

    戻り値 正常、出力した文字数

           エラー、-1

    lpInfo = NULL       の時、標準出力

    lpInfo = (LPVOID)-1 の時、標準エラー出力

    cwFputsW は Unicode 用のAPIです。

    詳細は sample1.c を参照してください。

-----------------------------------------------------------------------

  ( 4) Fgets, cwFgets (ファイル入力関数)

    関数名 Fgets, cwFgets

        LPSTR FAR PASCAL Fgets(LPSTR lpStr, LONG lSize, LPVOID lsInfo);

        LPSTR FAR PASCAL cwFgets(LPSTR lpStr, LONG lSize, LPVOID lpInfo);

    機能 ファイルから文字列を入力します。

    引数 lpStr  入力する文字列のためのバッファ

         lSize  バッファサイズ

         lpInfo ファイル情報

    戻り値 正常、lpszS

           エラー、NULL

    lpInfo = NULL       の時、標準入力

    lpInfo = (LPVOID)-1 の時、標準エラー入力

-----------------------------------------------------------------------

  ( 5) System, cwSystem (実行関数)

    関数名 System, cwSystem

        LONG FAR PASCAL System(LPSTR lpszCommand);

        LONG FAR PASCAL cwSystem(LPSTR lpszCommand);

    機能 ComWin のサービスを用いてコマンドを実行します。

    引数 lpszCommand コマンド文字列

    戻り値 各コマンドの戻り値に依存。

-----------------------------------------------------------------------

  ( 6)  Getch, cwGetch (直接入力関数)

    関数名 Getch, cwGetch

        LONG FAR PASCAL Getch(void);

        LONG FAR PASCAL cwGetch(void);

    機能 端末から直接入力を待ちます。(エコーバックなし)

    引数 なし

    戻り値 正常、仮想キーコード

           エラー、0

    仮想キーコードは次のような構造になっています。

    上位16ビット、0x0100(=WM_KEYDOWN) または 0x0102(=WM_CHAR)

    下位16ビット、上位16ビットのメッセージに対応したキーコード

    詳しくは SDK windows.h を参照してください。

    Getch コマンドのバグをフィックスした結果、

    キーコードの値が Version 2.80 より変わりました。

    以前の Version に依存したプログラムを利用する場合は

    comwin.ini [etc] に Getch=230 と記述してください。

       cwmore コマンド等が該当します。

    バージョンにより、Getch=230,Getch=271,Getch=280(デフォルト)が選べます。

    また、このオプションは 96/04/01 以降は無効になる可能性もあります。

-----------------------------------------------------------------------

  ( 7)  Inkey, cwInkey (直接入力関数)

    関数名 Inkey, cwInkey

        LONG FAR PASCAL Inkey(void);

        LONG FAR PASCAL cwInkey(void);

    機能 端末から直接入力をチェックしあれば

         仮想キーコードを返します。(エコーバックなし)

    引数 なし

    戻り値 仮想キーコードまたは 0

    仮想キーコードは次のような構造になっています。

    上位16ビット、0x0100(=WM_KEYDOWN) または 0x0102(=WM_CHAR)

    下位16ビット、上位16ビットのメッセージに対応したキーコード

    詳しくは SDK windows.h を参照してください。

-----------------------------------------------------------------------

  ( 8)  Fwrite, cwFwrite (バイナリ出力関数)

    関数名 Fwrite, cwFwrite

        LONG FAR PASCAL Fwrite(LPVOID lpObject, LONG lSize,

                               LONG lCount, LPVOID lpInfo);

        LONG FAR PASCAL cwFwrite(LPVOID lpObject, LONG lSize,

                               LONG lCount, LPVOID lpInfo);

    機能 バイナリデータを端末に送る。

    引数 lpObject 送出するデータへのポインタ

         lSize    オブジェクトのサイズ

         lCount   オブジェクトの数

         lpInfo   ファイル構造体へのポインタ

                  NULL       の時、標準出力

                  (LPVOID)-1 の時、標準エラー出力

    戻り値 出力したオブジェクトの数

    注意 comwinx.exe はバイナリ入出力を正式にサポートしていないので

         正常に動作しません。

-----------------------------------------------------------------------

  ( 9)  Fread, cwFread (バイナリ入力関数)

    関数名 Fread, cwFread

        LONG FAR PASCAL Fread(LPVOID lpObject, LONG lSize,

                              LONG lCount, LPVOID lpInfo);

        LONG FAR PASCAL cwFread(LPVOID lpObject, LONG lSize,

                              LONG lCount, LPVOID lpInfo);

    機能 バイナリデータを端末から取得する。

    引数 lpObject 取得するデータへのポインタ

         lSize    オブジェクトのサイズ

         lCount   オブジェクトの数

         lpInfo   ファイル構造体へのポインタ

                  NULL       の時、標準入力

                  (LPVOID)-1 の時、標準エラー入力

    戻り値 取得したオブジェクトの数

    注意 comwinx.exe はバイナリ入出力を正式にサポートしていないので

         正常に動作しません。

-----------------------------------------------------------------------

  (10)  GetComWinLong (情報関数)

    関数名 GetComWinLong

        DWORD FAR PASCAL GetComWinLong(DWORD dwID, DWORD dwData);

    機能 ComWin システムについての諸情報を取得します。

    引数 dwID   情報番号

         dwData 情報番号に対応する32bit値

    戻り値 情報

    情報番号 0 ... comwin.dll のバージョン番号を取得する。

    例

        lVer = GetComWinLong(0, 0);

        HIWORD(lVer) : バージョン番号

    情報番号 1 ... 端末の環境変数データを取得する。

    例

        lpEnv = (LPSTR)GetComWinLong(1, 0);

    環境変数領域には "env1=value1\0env2=value2\0...envz=valuez\0\0"

    の形式で環境変数が格納されています。

    端末の環境変数領域が破壊されるとシステムに重大な障害を及ぼしますので、

    環境変数を書き込む場合には cwPutenv を使用してください。

    情報番号 2 ... 端末のウィンドウハンドルを取得する。

    例

        hwnd = (HWND)GetComWinLong(2, 0);

    情報番号 3 ... メッセージパケットの入出力を行う。

    例

        CW_S_CONSOLE_INFO ci;

        memset(&ci, 0, sizeof(ci));f

        ci.lMessage = CW_M_CONSOLE_INFO;

        ci.lSize = sizeof(ci);

        ci.lMode = CW_MODE_GET;

        GetComWinLong(3, (LONG)(LPLONG)&ci);

    詳細は sample1.c を参照してください。

-----------------------------------------------------------------------

  (11) MakeArgument (引き数作成関数)

    関数名 MakeArgument

        int FAR PASCAL MakeArgument(HANDLE hInstance,

                                    LPSTR lpszAppName,

                                    LPSTR lpszCmdParam,

                                    LPINT lpnArgv,

                                    LPSTR lpszBuffer,

                                    int cbBufSize);       // プロトタイプ

    機能 WinMain関数の第３引数(lpszCmdParam)から

         main関数の argc, argv を作成。

    引数 hInstance    モジュールのインスタンス(WinMainの第１引数)

         lpszAppName  モジュール名

         lpszCmdParam コマンドパラメータ(WinMainの第３引数)

         lpnArgv      下述のlpszBufferに格納される各引数の位置

         lpszBuffer   コマンドパラメータを格納する作業バッファ

                      ("param1\0param2\0param3\0....\paramx\0\0"

                      の形式をとる)

         cbBufSize    作業バッファのサイズ

    戻り値 コマンドパラメーターの数

    注意

      コマンドパラメータにはモジュール名は含みません。

      モジュール名が含まれている場合は hInstance = NULL として

      呼び出してください。

    備考

      自分で作っていうのもなんですが、ややこしい仕様の関数です。

      でも、FARポインタNEARポインタを駆使して将来的にも仕様変更を

      せずにすむ仕様といえばこうなってしまいました。

      逆に考えれば、WinMainのコマンドパラメーターの形式が,

      引数の数(argc)、引数の配列(argv)の形式を取らずに、

      単純な文字列形式を取っているのは、この辺の事情があるのかもしれません。

    詳細は sample1.c を参照してください。

-----------------------------------------------------------------------

  (12) cwPutenv (環境変数設定関数)

    関数名 cwPutenv

        LONG FAR PASCAL cwPutenv(LPSTR lpEnv);

    機能 端末タスクの環境変数を設定します。

    引数 lpEnv 設定する環境変数文字列

               環境変数文字列は次の書式を取ります。

               env=value

    戻り値 正常 0、エラー 1

    注) 変更されるのは端末タスクの環境変数です。

        自タスクの環境変数を変更したい場合は

        putenv 等の標準ライブラリ関数を利用してください。

-----------------------------------------------------------------------

  (13) cwGetenv (環境変数取得関数)

    関数名 cwGetenv

        LPSTR FAR PASCAL cwGetenv(LPSTR lpEnv);

    機能 端末タスクの環境変数を取得します。

    引数 lpEnv 取得する環境変数

    戻り値 正常 環境変数のアドレス、エラー NULL

    注) 参照されるのは端末タスクの環境変数です。

        自タスクの環境変数を参照したい場合は

        getenv 等の標準ライブラリ関数を利用してください。

-----------------------------------------------------------------------

  (14) cwFprintf (書式付出力関数)

    関数名 cwFprintf

        LONG FAR CDECL cwFprintf(LPVOID lpInfo, LPSTR lpStr, ...);

    機能 書式付きで文字列を出力する。

    引数 lpInfo  ファイル情報

                 NULL のとき標準出力、(LPVOID)-1 のときエラー出力。

                 その他のアドレスは予約

         lpStr   出力する書式付きの文字列

    戻値 出力した文字数、エラー時は -1

    例

        cwFprintf(NULL, "(x, y) = (%d, %d)\n", x, y);

    注意事項

        出力できる文字数は 1024 文字までです。

        cwFprintf を利用する場合、モジュール定義ファイルに

        IMPORTS comwin._cwFprintf と記述してください。

        呼び出し順序が CDECL 形式なので

        関数名の前に '_' (アンダースコア)が必要です。

        cwFprintf はデバッグサービスAPIとして提供しています。

        正式リリース用のモジュール内で使用することはお薦めできません。

-----------------------------------------------------------------------

  (15) cwFputsW (Unicode出力関数)

    関数名 cwFputsW

        LONG FAR PASCAL cwFputsW(LPWSTR lpStr, LPVOID lpInfo);

    機能 ファイルに Unicode文字列を出力します。

    引数 lpStr 出力する文字列

         lpInfo ファイル情報

    戻り値 正常、出力した文字数

           エラー、-1

    lpInfo = NULL       の時、標準出力

    lpInfo = (LPVOID)-1 の時、標準エラー出力

-----------------------------------------------------------------------

  (16) cwFgetsW (Unicode入力関数)

    関数名 cwFgetsW

        LPWSTR FAR PASCAL cwFgets(LPWSTR lpStr, LONG lSize, LPVOID lpInfo);

    機能 ファイルから Unicode文字列を入力します。

    引数 lpStr  入力する文字列のためのバッファ

         lSize  バッファサイズ

         lpInfo ファイル情報

    戻り値 正常、lpszS

           エラー、NULL

    lpInfo = NULL       の時、標準入力

    lpInfo = (LPVOID)-1 の時、標準エラー入力

-----------------------------------------------------------------------

  (17) CallCommand(仮称) (内部コマンド提供関数)

    関数名 CallCommand(戻り値、引数の型が一致していれば、関数名は任意)

        BOOL FAR PASCAL CallCommand(FARPROC FAR *lpfnProc,

                                    LPSTR lpszCmdParam,

                                    LPLONG lpReturn);   // プロトタイプ

    機能 ComWinから呼び出される内部コマンドを提供し、

         出力結果をComWinに表示します。

    引数 lpfnProc     ComWinから受け取る入出力関数へのアドレスの配列

                      現在次の10の関数が定義されています。

                      Puts        = lpfnProc[0]; /* 以下 Ver 1.80 以降 */

                      Gets        = lpfnPorc[1];

                      Fputs       = lpfnProc[2];

                      Fgets       = lpfnProc[3];

                      System      = lpfnProc[4];

                      CallConsole = lpfnProc[5];

                      Getch       = lpfnProc[6]; /* 以下 Ver 2.30 以降 */

                      Inkey       = lpfnProc[7];

                      Fwrite      = lpfnProc[8]; /* 以下 Ver 2.60 以降 */

                      Fread       = lpfnPorc[9];

         lpszCmdParam コマンドパラメータ

                      (WinMainの第３引数と同じですが、

                       コマンド名もはいります。)

         lpReturn[0]  各コマンドのエラー値

    戻り値 TRUE コマンドをDLL内部で処理した。

           FALSE コマンドをDLL内部で処理せずに次のDLLへスルーする。

    備考 この関数をEXPORTしたDLLはcomwins.dllなどの他のDLLと併用できます。

         将来的には各DLLがサポートしているコマンドを管理する必要がでてくると

         思われるので、次の機能ももたせてください。

         面倒な場合は無視しても特に問題はありません。

         (comwins.dllはこの機能を持っています。)

         lpReturn[0] == 0, lpszCmdParan[0] == 0 の場合は

         サポートしているコマンド名を1つだけ

         lpszCmdParamにコピーしてTRUEを返してください。

         TRUEを返している間はComWinは次のコマンド名を要求してきます。

         コマンド名をすべて返し終わったら FALSE を返してください。

         (この機能は現在 help コマンドで使われています。)

         将来の拡張性のため以下の処理をしてください。

         switch (lpReturn[0]) {

             case -1:

                 /* メイン処理 */

                 break;

             case 0:

                 /* ヘルプ処理 */

                 break;

             default:

                 /* 予約 */

                 break;

          }

    呼び出し例

        unix.dll で command をEXPORTしている場合。

        comwin.ini の [CommandDll]に次の記述を加える。

        [CommandDll]

        a.dll=b                ;他のcommand.dll

        unix.dll=command

        c.dll=d                ;他のcommand.dll

        先に書かれたcommand.dllのコマンドが優先されます。

    詳細は sample3.c を参照してください。

-----------------------------------------------------------------------

  (18) CallInterpreter(仮称) (コマンド解釈提供関数)

    関数名 CallInterpreter(戻り値、引数の型が一致していれば、関数名は任意)

        BOOL FAR PASCAL CallInterpreter(FARPROC FAR *lpfnProc,

                                        LPSTR lpszCmdParam,

                                        LPLONG lpReturn);   // プロトタイプ

    機能 ComWinから渡された文字列を

         個々のコマンドに分解した文字列にして返します。

    引数 lpfnProc     ComWinから受け取る入出力関数へのアドレスの配列

                      現在次の7つの関数が定義されています。

                      Puts   = lpfnProc[0];

                      Gets   = lpfnPorc[1];

                      Fputs  = lpfnProc[2];

                      Fgets  = lpfnProc[3];

                      System = lpfnProc[4];

                      (未定義) lpfnProc[5];

                      Getch  = lpfnProc[6];

                      Inkey  = lpfnProc[7];

                      (CallInterpreter 内ではデバッグ時以外は不要です。)

         lpszCmdParam コマンド文字列

                      (WinMainの第３引数と同じですが、

                       コマンド名もはいります。)

         lpReturn[0]  分解したコマンド群へのポインター

                      コマンド群は次の形式で返してください。

                      "cmd0\0cmd1\0cmd2\0...cmdx\0\0"

    戻り値 TRUE  成功

           FALSE  エラー発生

    備考 この関数をEXPORTしたDLLはコマンド解釈の性格上

         一つしか使用できません。

         lpReturn[0] == 0 && lpszCmdParan[0] == 0 の場合

         コマンド群の領域が GlobalAlloc 等で確保されていれば、

         開放してください。

         将来の拡張性のため以下の処理をしてください。

         switch (lpReturn[0]) {

             case -1:

                 /* メイン処理 */

                 break;

             case 0:

                 /* 解放処理 */

                 break;

             default:

                 /* 予約 */

                 break;

          }

    呼び出し例

        unix.dll で intepreter をEXPORTしている場合。

        comwin.ini の [InterpreterDll]に次の記述を加える。

        [InterpreterDll]

        unix.dll=interpreter

        一番最初に書かれたinterpreter.dllの関数が優先されます。

      詳細は sample3.c を参照してください。

-----------------------------------------------------------------------

  (19) CallScript(仮称) (スクリプト提供関数)

    関数名 CallScript(戻り値、引数の型が一致していれば、関数名は任意)

        BOOL FAR PASCAL CallScript(FARPROC FAR *lpfnProc,

                                   LPSTR lpszCmdParam,

                                   LPLONG lpReturn);   // プロトタイプ

    機能 ComWinから提供されたファイルをスクリプト解釈し、実行します。

    引数 lpfnProc     ComWinから受け取る入出力関数へのアドレスの配列

                      現在次の５つの関数が定義されています。

                      Puts   = lpfnProc[0];

                      Gets   = lpfnPorc[1];

                      Fputs  = lpfnProc[2];

                      Fgets  = lpfnProc[3];

                      System = lpfnProc[4];

                      (未定義) lpfnProc[5];

                      Getch  = lpfnProc[6];

                      Inkey  = lpfnProc[7];

         lpszCmdParam スクリプトファイル+パラメータ

                      (フルパスでスクリプトファイルが送られます。)

         lpReturn[0]      各コマンドのエラー値

    戻り値 TRUE コマンドをDLL内部で処理した。

           FALSE コマンドをDLL内部で処理せずに次のDLLへスルーする。

    備考 この関数をEXPORTしたDLLはcomwins.dllなどの他のDLLと併用できます。

         各スクリプトDLLは拡張子によって自分の処理するファイルを管理します。

         (拡張子によるファイルの分類は NT 等のロングファイルネームでも

          行われるので一番妥当な方法です。)

         lpReturn[0] == 0 && lpszCmdParan[0] == 0 の場合は

         サポートしている拡張子群のポインタを lpReturn[0] に

         いれて返してください。

         拡張子群の形式は "ex0\0ex1\0...ex9\0\0" という形式です。

         将来の拡張性のため以下の処理をしてください。

         switch (lpReturn[0]) {

             case -1:

                 /* メイン処理 */

                 break;

             case 0:

                 /* ヘルプ処理 */

                 break;

             default:

                 /* 予約 */

                 break;

          }

    呼び出し例

        macro.dll で macro をEXPORTしている場合。

        comwin.ini の [ScriptDll]に次の記述を加える。

        [ScriptDll]

        a.dll=b                ;他のscript.dll

        macro.dll=macro

        c.dll=d                ;他のscript.dll

        先に書かれたscript.dllのコマンドが優先されます。

    詳細は sample3.c を参照してください。

-----------------------------------------------------------------------

  (20) CallCommand (端末用コマンド処理関数)

    関数名 CallCommand

        BOOL FAR PASCAL CallCommand(FARPROC FAR *lpfnProc,

                                    LPSTR lpszCmdParam,

                                    LPLONG lpReturn);   // プロトタイプ

    機能 端末側に入力された文字列を comwin.dll を渡す。

    引数 lpfnProc     comwin.dllに提供する入出力関数へのアドレスの配列

                      現在次の10つの関数が定義されています。

                      lpfnProc[0] = LocalPuts;

                      lpfnPorc[1] = LocalGets;

                      lpfnProc[2] = LocalFputs;

                      lpfnProc[3] = LocalFgets;

                      lpfnProc[4] = LocalSystem;

                      lpfnProc[5] = LocalCallCommand;

                      lpfnProc[6] = LocalGetch;

                      lpfnProc[7] = LocalInkey;

                      lpfnProc[8] = LocalFwrite;

                      lpfnProc[9] = LocalFread;

         lpszCmdParam コマンド文字列

         lpReturn[0]  各コマンドのエラー値

    戻り値 TRUE コマンドを正常に処理した。

           FALSE コマンドの処理中に異常が発生した。

    備考

           comwin.dll は内部で複雑なスケジューリング、プロセス管理を

           行っている都合上に明示的な登録、開放処理を行わないと

           メモリから開放されない部分が出てきます。

           [明示的な登録]

           CW_S_CONSOLE_INFO ci; /* メッセージパケット */

           memset(&ci, 0, sizeof(ci));

           ci.lMessage = CW_M_CONSOLE_INFO;

           ci.lSize = sizeof(ci);

           ci.lMode = CW_MODE_INIT; /* 初期化 */

           lpszCmdParam[0] = 0;

           CallCommand(lpfnProc, lpszCmdParam, (LPLONG)&ci);

           [明示的な開放]

           CW_S_CONSOLE_INFO ci; /* メッセージパケット */

           memset(&ci, 0, sizeof(ci));

           ci.lMessage = CW_M_CONSOLE_INFO;

           ci.lSize = sizeof(ci);

           ci.lMode = CW_MODE_CLEAR; /* 解放 */

           lpszCmdParam[0] = 0;

           CallCommand(lpfnProc, lpszCmdParam, (LPLONG)&ci);

           通常の呼び出し

           lpReturn[0] = -1;

           CallCommand(lpfnProc, lpszCmdParam, lpReturn);

    詳細は sample5.c を参照してください。

-----------------------------------------------------------------------

    (関数補足) メッセージパケットについて

    メッセージパケットとは端末側とコマンド側で情報のやりとりを

    行うために考案されたデーターの受け渡し方法です。

    過去との互換性を重視し、将来への拡張が可能な構造になっています。

    メッセージパケットは次の形式をとります。

    struct PACKET {

        LONG lMessage; /* 必須 メッセージ番号を設定する */

        LONG lSize /* 必須 パケットのサイズを設定する */

        ... /* 各メッセージに対応して自由に設定する */

    }

    CallCommand の第３引数、GetComWinLong の第２引数に使われます。

    現在、comwin.h で次のように宣言されています。

        /* Message */

        #define CW_M_EXEC          0xFFFFFFFF

        #define CW_M_HELP          0x00000000

        #define CW_M_CONSOLE_INFO  0x00010001

        #define CW_M_ISATTY        0x00010002

        #define CW_M_UNICODE_ENTRY 0x00010003

        #define CW_M_USER_FIRST    0x10000000

        #define CW_M_USER_LAST     0x7FFFFFFF

        /*

            0x00000001 - 0x0000FFFF reserved

            0x00010002 - 0x0FFFFFFF system reserved

            0x10000000 - 0x7FFFFFFF user area

            0x80000000 - 0xFFFFFFFE reserved

         */

         /* Mode */

         #define CW_MODE_CLEAR 0

         #define CW_MODE_INIT  1

         #define CW_MODE_SET   2

         #define CW_MODE_GET   3

         /* Message Structure */

         typedef struct CW_S_CONSOLE_INFO

                        CW_S_CONSOLE_INFO,

                FAR *LP_CW_S_CONSOLE_INFO;

         struct CW_S_CONSOLE_INFO {

             LONG  lMessage;    // Message Number (= CW_M_CONSOLE_INFO)

             LONG  lSize;       // Structure size (= sizeof(CW_S_CONSOLE_INFO))

             LONG  lMode;       // Calling mode (= CW_MODE_XXXX)

             LONG  lFuncMax;    // Max Function Count ( >= 6)

             LONG  lBufMax;     // Max Buffer Size ( for Gets API etc)

             DWORD hwnd;        // Window Handle of Console

             LONG  lColumns;    // Columns of Console

             LONG  lLines;      // Lines of Console

             LONG  lWidth;      // Width of Console

             LONG  lHeight;     // Height of Console

        };

        typedef struct CW_S_ISATTY

                       CW_S_ISATTY,

               FAR *LP_CW_S_ISATTY;

        struct CW_S_ISATTY {

            LONG  lMessage;    // Message Number (= CW_M_ISATTY)

            LONG  lSize;       // Structure Size (= sizeof(CW_S_ISATTY))

            LONG  lMode;       // Calling Mode (= CW_MODE_GET)

            LONG  lStdIn;      // TRUE, if StdIn is atty.

            LONG  lStdOut;     // TRUE, if StdOut is atty.

            LONG  lStdErrIn;   // TRUE, if StdErrIn is atty.

            LONG  lStdErrOut;  // TRUE, if StdErrOut is atty.

        };

        /* Message Structure */

        typedef struct CW_S_UNICODE_ENTRY

                       CW_S_UNICODE_ENTRY,

               FAR *LP_CW_S_UNICODE_ENTRY;

        struct CW_S_UNICODE_ENTRY {

            LONG  lMessage;    // Message Number (= CW_M_UNICODE_ENTRY)

            LONG  lSize;       // Structure size

            LONG  lMode;       // Calling mode (= CW_MODE_XXXX)

            LONG  lFuncMax;    // Max Function Count ( >= 6)

            LONG  lBufMax;     // Max Buffer Size ( Not used)

        };

-----------------------------------------------------------------------


 8.改訂履歴

    ToolMan Editor Ver. 1.80 97/08/25

      TAB色を個別指定

      動作不安定部分の改良

    ToolMan Editor Ver. 1.71 97/06/20

      巨大ファイル読み込み時の高速化

      サブディレクトリまで再帰検索する Grep

      MDI子ウィンドウの一覧表示機能

      クリップボードで SJIS と UNICODE の相互変換

    ToolMan Editor Ver. 1.70 97/06/01

      検索、置換、Grepダイアログが Unicode に対応

      edit コマンドの機能拡張

    ToolMan Editor Ver. 1.61 97/05/10

      個々の MDI ウィンドウに対して操作可能

      コンソールウィンドウのデザインを変更

      NT上の Unicode IME に対応

      バグフィックス

         256色の壁紙表示

         全置換処理

         動作安定化

    ToolMan Editor Ver. 1.60 97/05/01

      MDI編集モード

      コンソールウィンドウにコマンド履歴、ファイル名補完

    ToolMan Editor Ver. 1.52 97/04/10

      ルーラー表示可能

      高速スクロールモード

      内部処理のチューニング

    ToolMan Editor Ver. 1.44 97/02/15

      7bitJIS の読み書き可能

      ISO-2022 に準じた形式をサポート

      Grep コマンドサポート

    ToolMan Editor Ver. 1.43 97/02/05

      多言語同時印刷可能

      多言語メニューを改良

      多フォント同時編集可能

    ToolMan Editor Ver. 1.42 97/01/05

      多言語同時表示可能

      UTF8テキストファイル対応

    ToolMan Editor Ver. 1.41 96/12/20

      KeyboardLayout コマンドで自由にIMEの切り替え可能

      StrokeKey が IME に対応

      edit out all コマンドサポート

    ToolMan Editor Ver. 1.37 96/12/01

      多言語入力機構に重大なバグがあるのを修正

    ToolMan Editor Ver. 1.36 96/12/01

      「閉じる」メニューで連続編集可

      8bit入力法で Greek の入力支援

      フォントのキャラクタセットの設定可

      多言語対応拡張テキスト形式サポート

    ToolMan Editor Ver. 1.35 96/10/25

      印刷メニューで Unicode 印刷可

      行番号機能の充実

      前回編集時のファイル名記憶

      検索時に大文字小文字を無視する機能

      上書きモード

      Unicode ヘッダー追加機能

    ToolMan Editor Ver. 1.34 96/10/20

      Unicode で検索可能

      SJIS以外の IME にも対応

      多国語メニュー

      コードページ変換時にカーソル位置保存

      バグフィックス

          削除時のアンドゥ

          サイズ0のファイル

          その他

    ToolMan Editor Ver. 1.31 96/10/05

      内部コードに UNICODE を選択可能

      漢字変換時フォントの見直し

      アンドゥ機能見直し

      選択範囲の不正

    ToolMan Editor Ver. 1.30 96/09/05

      英語モードの追加

      検索がコマンドラインからも可能

      その他バグフィックス

    ToolMan Editor Ver. 1.22 96/08/20

      起動時メニューにより秀丸、MIFES、VZ風になる

      きめこまかいDBCSの設定で外国語も編集可能

      EUC--->SJIS変換の不具合修正

    ToolMan Editor Ver. 1.21 96/08/05

      SJIS,EUC,UNICODE,16進編集が可能

      DOS,UNIX,MAC風の改行が指定可能

    ToolMan Editor Ver. 1.20 96/07/20

      通信機能を追加

    ToolMan Editor Ver. 1.14 96/07/05

      HTML編集支援機能追加

      スクロールバーの表示・非表示

      edit コマンドの拡充

    ToolMan Editor Ver. 1.12 96/06/20

      2ストロークキーのサポート

      ポップアップメニューのサポート

      キーボードマクロをサポート

      アンドゥ機能のサポート

      toolman.cws のスピードアップ

    ToolMan Editor Ver. 1.10 96/06/01

      カーソル移動コマンドのサポート

      単語毎の移動をサポート

      範囲選択の充実

      バグフィックス

        置換機能

        スクロールの不具合

    ToolMan Editor Ver. 1.06 96/05/20

      置換機能追加

      ファンクションキー操作で文字列選択可

      行番号付加モード

      閲覧モード

      オートインデント機能

      command.com のリダイレクトに対応

      DOSコマンドの起動設定を ComWin互換に

    ToolMan Editor Ver. 1.05 96/05/10

      コンソールのサイズが可変長

      ツールバー機能

      ファンクションキー機能

      その他改良多数

    ToolMan Editor Ver. 1.04 96/05/01

      正式公開、初版

    ToolMan Editor Ver. 0.90 95/11/20

      テスト公開

-----------------------------------------------------------------------


 9.著作権等

    ツールマンエディター(以下 ToolMan)の著作権は前寺正彦が保有します。

    ToolMan はシェアウェアです。

    ToolMan 本体を使っての利益行為を著作者に了解なしに

            行うことを一切禁じます。

    ToolMan 内のファイルに改変を加えたもの、

            またはファイルの一部を配布することを禁じます。

            ただし、t*.cws のファイル名をもつファイルは

            単体として自由に改変、配布することはできます。

    ToolMan を使用することによって発生したいかなる損害等にも、

            著作者は一切責任を負いません。

    ToolMan の機能アップを行う義務、バグ対応を行う義務を

            著作者は負わないものとします。

    ToolMan の他のネットワークへの転載、雑誌へのバイナリ添付は

            著作者の了承が必要です。

    ToolMan の雑誌記事紹介は客観的な基準で書かれたものであれば、

            自由に行ってかまいません。

+----------------------------------------------------------------------------

|    シェアウェアについて

|      登録料 2000円

|      試用期間 2週間

|      試用期間中の機能制限 なし

|

|    送金方法

|      可能な限り、NIFTY-Serve の送金代行システムをご利用ください。

|      GO SWSOKIN で送金代行サービスに入り、メニューに従って

|      送金を行ってください。SW番号は 3186 番です。

|      送金が確認され次第、登録キーワードを電子メールにて

|      お知らせします。

|

|      また送金代行サービスをご利用できない場合は、

|      以下の銀行口座に振込(手数料別払)を行ってください。

|

|      銀行      第一勧業銀行徳島支店

|      店番号    645

|      口座番号  1470432 (普通)

|      氏名      前寺正彦 (ﾏｴﾃﾞﾗﾏｻﾋｺ)

|

|      お手数ですが、入金後に以下の事項を明記のうえ

|      電子メール(推奨)、もしくは葉書にてお知らせください。

|      (お知らせのない場合、対応ができません。)

|

|      (1)住所・郵便番号、(2)氏名、(3)振込日時、(4)ソフトウェア名、(5)感想

|

|      送付先

|      電子メール SGQ00310@niftyserve.or.jp

|      郵送 352 埼玉県新座市東北1-6-14シャルム小岩103 前寺正彦(97/07/16以後)

|

|      送金が確認でき次第、登録キーワードを「封書」にてお知らせします。

|      (住所は変更になる可能性もありますので、知人のIDをご利用できる場合は

|       なくべく、知人の電子メールをご利用ください。

|       なお、電子メールが本人の ID だと確認できる場合は

|       電子メールでお知らせする場合もあります。)

|      また、オンラインでの送金と違い、銀行振込では

|      迅速な対応ができませんので、あらかじめご了承ください。

|

|    複製条件

|      1つのライセンスにつきインストールマシンは1台に限ります。

|      ただし、正規ユーザーはすべてのマシンで他者に使用させないことを

|      条件に複数のマシンにインストール可能です。

|

|      例えば、サイト利用の場合ライセンス数は次のようになります。

|          (ライセンス数) = min((サイト内マシン数), (サイト内人数))

|

|    フリー制度

|      ToolMan のスクリプトやAPIを利用した便利な手法を紹介された場合、

|      私宛にメールをくだされば、無料で正規ユーザー登録の手続きを行います。

|      紹介する場所は FGALTS MES 14 あたりが適当だと思われます。

|      (次期バージョンリリースまで)

|

|    サポート

|      特に指定のない場合バージョンアップ料は無料です。

|      登録キーワードは以前のものが使えますが、

|      セキュリティの関係で変更する場合もあります。

|      この場合、正規ユーザーの方には事前にお知らせします。

|      正式なリリース場所は NIFTY FGALTS LIB 4, FWINAL LIB 8 とします。

|      ToolMan に対しての感想、要望は、個人的なものでない限り、

|      NIFTY FGALTS MES 14, FWINAL MES 8 でお願い致します。

|      (個人のメールボックス容量には限りがありますので。)

+----------------------------------------------------------------------------

    今後とも機能アップしていく予定なので

    なにとぞ、よろしくお願いいたします。

    前寺正彦 <SGQ00310@niftyserve.or.jp>

    <http://wwww.vector.co.jp/authors/VA002891/>

    NIFTY-Serve FGALTS MES 14

-----------------------------------------------------------------------