home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
OLS
/
Win31
/
HT219
/
HT219.LZH
/
HTAPI.H
< prev
next >
Wrap
Text File
|
1995-02-08
|
26KB
|
576 lines
// HTAPI.H Application Programing Interface of 秀Term
//
// copyright(c) 1992 by 斉藤秀夫(秀まるお)、NIFTY-Serve PEH00775
//
// このヘッダファイルはwindows.hより後ろに#includeしてください。
#define WM_HIDETERM_GETVERSION (WM_USER+0)
#define WM_HIDETERM_GETBUFFER (WM_USER+1)
#define WM_HIDETERM_SENDDATA (WM_USER+2)
#define WM_HIDETERM_SETRECEIVER (WM_USER+3)
#define WM_HIDETERM_ENDRECEIVER (WM_USER+4)
#define WM_HIDETERM_RECEIVED (WM_USER+5)
#define WM_HIDETERM_WRITEBUFFER (WM_USER+6)
#define WM_HIDETERM_WRITEBUFFER2 (WM_USER+7)
#define WM_HIDETERM_EXECSCRIPT (WM_USER+8)
#define WM_HIDETERM_QUERY_ONLINE (WM_USER+11)
#define WM_HIDETERM_SETRECEIVER2 (WM_USER+13)
#define WM_HIDETERM_SETIDLENOTIFICATION (WM_USER+14)
#define WM_HIDETERM_GETVAR (WM_USER+15)
#define WM_HIDETERM_SETVAR (WM_USER+16)
#define WM_HIDETERM_SETBINARYMODE (WM_USER+18)
#define WM_HIDETERM_REGISTADDIN (WM_USER+20)
#define WM_HIDETERM_SETADDINHEIGHT (WM_USER+22)
#define WM_HIDETERM_ADDCOMMAND1 (WM_USER+23)
#define WM_HIDETERM_ADDCOMMAND2 (WM_USER+24)
#define WM_HIDETERM_ADDCOMMAND3 (WM_USER+25)
#define WM_HIDETERM_ADDCOMMAND4 (WM_USER+26)
#define WM_HIDETERM_ADDCOMMAND5 (WM_USER+27)
#define WM_HIDETERM_ADDCOMMAND6 (WM_USER+28)
#define WM_HIDETERM_ADDCOMMAND7 (WM_USER+29)
#define WM_HIDETERM_CAPTUREMENU (WM_USER+30)
#define WM_HIDETERM_UNCAPTUREMENU (WM_USER+31)
#define WM_HIDETERM_SETSENDFILTER (WM_USER+32)
#define WM_HIDETERM_ENDSENDFILTER (WM_USER+33)
#define WM_HIDETERM_SENDREPORT (WM_USER+6)
#define WM_HIDETERM_EXECSCRIPT2 (WM_USER+34)
#define IDM_HIDETERM_USER 1000
#if 0
1.WM_HIDETERM_GETVERSION
機能 このメッセージは、秀Termのバージョンを調べるときに使わ
れます。
アプリケーションは、SendMessageを使ってこのメッセージを
秀Termに送ります。
パラメータ 説明
wParam 使われません。
lParam 使われません。
リターン値 秀Termのメジャー バージョン番号とマイナー バージョン番号
から構成される整数値です。上位バイトがマイナー バージョ
ン番号を、下位バイトがメジャーバージョン番号を表します。
バージョン番号は16進で帰ってきます。例えばVer1.25の場
合は0x2501という値が帰ってきます。(WindowsのGetVersion
もそうです)
2.WM_HIDETERM_GETBUFFER
機能 このメッセージは、秀Termのバックスクロールバッファの文字
列を、行単位で指定のバッファにコピーします。
アプリケーションは、SendMessageを使ってこのメッセージを
秀Termに送ります。
パラメータ 説明
wParam コピーされる文字列の行を指定します。
0は最新の行を意味し、正数nはn行前の
文字列を意味します。
lParam 下位ワードに、データのコピー先のバッ
ファのハンドルを指定します。ここに指定
するバッファは、81バイト以上のサイズ
を持ち GMEM_DDESHARE属性で確保されてい
なければなりません。
リターン値 実際にコピーされた文字列のバイト数になります。
文字列には終端として'\0'(値0)が付きますが、'\0'は、この
値に含まれません。
3.WM_HIDETERM_SENDDATA
機能 このメッセージは、指定バッファ内の文字列を秀Termの通信
ポートに直接送信します。
アプリケーションは、SendMessageを使ってこのメッセージを
秀Termに送ります。
パラメータ 説明
wParam 送信する文字列のバイト数を指定します。
('\0'で終端しない言語もあるかも?)
lParam 下位ワードに、送信する文字列を格納した
バッファのハンドルを指定します。ここに
指定するバッファは、 GMEM_DDESHARE属性
で確保されていなければなりません。
リターン値 実際に送信された文字列のバイト数になります。
4.WM_HIDETERM_WRITEBUFFER , WM_HIDETERM_WRITEBUFFER2
機能 このメッセージは、指定バッファ内の文字列を秀Termのウィ
ンドウに表示します。通信ポートには出力しません。
アプリケーションは、SendMessageを使ってこのメッセージを
秀Termに送ります。
WRITEBUFFERはウィンドウとログの両方に出力し、
WRITEBUFFER2はウィンドウにだけ出力します。
パラメータ 説明
wParam 送信する文字列のバイト数を指定します。
('\0'で終端しない言語もあるかも?)
lParam 下位ワードに、送信する文字列を格納した
バッファのハンドルを指定します。ここに
指定するバッファは、 GMEM_DDESHARE属性
で確保されていなければなりません。
リターン値 なし
5.WM_HIDETERM_SETRECEIVER
機能 このメッセージは、秀Termが通信ポートから文字列を受信した
場合にそのメッセージをパラメタで指定されたウィンドウにも
通知するように指示します。
通知の際にはWM_HIDETERM_RECEIVEDメッセージが使われま
す。
通知を終わらせる場合はWM_HIDETERM_ENDRECEIVERメッセージ
を使います。
WM_HIDETERM_SETRECEIVERで指定できる通知先ウィンドウは
Version2.03から10個まで受け付けるようになりました。
パラメータ 説明
wParam メッセージを受信するウィンドウのハンド
ルを指定します。
lParam 下位ワードが0の場合は秀Termは受信した
文字列を自分のウィンドウに表示しますが
1の場合は秀Term側の画面表示をしなくな
ります。
リターン値 成功した場合にTRUEを返します。既に他のアプリによって
WM_HIDETERM_SETRECEIVERされている場合はエラーとなり
FALSEが返ります。
6.WM_HIDETERM_SETRECEIVER2
機能 このメッセージは、秀Termが通信ポートから文字列を受信した
場合にそのメッセージをパラメタで指定されたウィンドウにも
通知するように指示します。WM_HIDETERM_SETRECEIVERと違い、
改行を受信するか、または80桁受信するごとに1行分をまと
めて通知します。
通知の際にはWM_HIDETERM_RECEIVEDメッセージが使われま
す。
通知を終わらせる場合はWM_HIDETERM_ENDRECEIVERメッセージ
を使います。
WM_HIDETERM_SETRECEIVERと同様、10個まで受信側を指定
できます。
パラメータ 説明
wParam メッセージを受信するウィンドウのハンド
ルを指定します。
lParam 下位ワードが0の場合は秀Termは受信した
文字列を自分のウィンドウに表示しますが
1の場合は秀Term側の画面表示をしなくな
ります。
リターン値 成功した場合にTRUEを返します。既に他のアプリによって
WM_HIDETERM_SETRECEIVERされている場合はエラーとなり
FALSEが返ります。
7.WM_HIDETERM_ENDRECEIVER
機能 WM_HIDETERM_SETRECEIVERまたはWM_HIDETERM_SETRECEIVER2で設
定した状態を解除します。
Version 2.03から、wParamに、解除したいウィンドウの
ハンドルを指定してもらう仕様に変りました。ただし、
従来との互換のため、wParamに値が入ってない場合でも
受信ウィンドウが1つの場合は自動的にそれが解除され
ます。
リターン値 なし
8.WM_HIDETERM_RECEIVED
機能 このメッセージは秀Termから送られるメッセージです。
WM_HIDETERM_SETRECEIVERで指定されたウィンドウに送られま
す。受信したデータを生で送ります。W
M_HIDETERM_SETRECEIVER2で指定されている場合は行単位で通知
します。
パラメータ 説明
wParam 受信した文字列を格納したバッファの
ハンドルが入っています。GlobalLock
してアクセスしてください。
文字列はNULL文字で終了しています。ま
た、漢字の1バイト目だけや2バイト目
だけが含まれる場合もあるので注意が必要
です。
データはSHIFT-JISに変換されています。
WM_HIDETERM_SETIDLENOTIFICATIONが指定
されている場合は、NULL文字だけが通知さ
れることがあります。
lParam 下位ワードに文字列の長さが入っていま
す。NULL文字を含まない分の長さです。
リターン値 なし
9.WM_HIDETERM_EXECSCRIPT
機能 このメッセージは、指定されたスクリプトを秀Termに実行させ
ます。スクリプトには、ファイル名とラベルが指定できます。
指定の方法は秀Termの「設定・キー割り当て」と同じ形式です。
パラメータ 説明
wParam 文字列のバイト数を指定します。
('\0'で終端しない言語もあるかも?)
lParam 下位ワードに、実行したいスクリプト名を
格納したバッファのハンドルを指定します。
ここに指定するバッファは、
GMEM_DDESHARE属性で確保されていなければ
なりません。
文字列の例:「NIF.SCR」、「NIF.SCR:SendFileName」
リターン値 成功した場合は0以外の値が返ります。
10.WM_HIDETERM_QUERY_ONLINE
機能 このメッセージは、秀Termが現在オンライン状態かどうかを返し
ます。
リターン値 オンライン状態のとき1、そうでないとき0
11.WM_HIDETERM_SETIDLENOTIFICATION
機能 このメッセージは、WM_HIDETERM_SETRECEIVERまたは
WM_HIDETERM_SETRECEIVER2を送ったウィンドウだけが送ること
ができるメッセージです。
パラメタで指定された時間が経過しても通信ポートから何も受
信しなかった場合、そのことを通知するよう指定します。
通信ポートから何も受信しなかった場合は、WM_HIDETERM_
RECEIVEDメッセージでNULL文字だけが送られてきます。
パラメータ 説明
wParam メッセージを受信するウィンドウのハンド
ルを指定します。
lParam 時間をミリ秒単位で指定します。
12.WM_HIDETERM_GETVAR
機能 このメッセージは、秀Termの変数の内容を通知します。
パラメータ 説明
wParam 変数名を含むグローバルメモリのハンド
ルを指定します。GMEM_SHAREでないとだめ
です。
lParam 下位ワードに、変数に代入されている値を
格納するためのグローバルメモリのハンドル
を指定します。GMEM_SHAREでないとだめで
す。256バイト以上のサイズが必要です。
13.WM_HIDETERM_SETVAR
機能 このメッセージは、秀Termの変数の内容を書き換えます。
パラメータ 説明
wParam 変数名を含むグローバルメモリのハンド
ルを指定します。GMEM_SHAREでないとだめ
です。
lParam 下位ワードに、代入したい値を格納する
ためのグローバルメモリのハンドル
を指定します。GMEM_SHAREでないとだめで
す。
変数名は30文字以内、値はnull文字を含めて256バイト以内
である必要があります。
14.WM_HIDETERM_SETBINARYMODE
機能 このメッセージは、秀Termをバイナリ転送モードにして、秀Term
の受信するメッセージを一切の加工(NULL文字の除去、JISコ
-ドの変換など)を行わずに呼び出し元のアプリケーションに通
知するようにします。
秀Term自身はバイナリ転送中のように、バックスクロールしかで
きない状態になります。
バイナリモードを解除するにはWM_HIDETERM_ENDRECEIVERを使って
ください。
バイナリモード中はWM_HIDETERM_SETRECEIVER,SETRECEIVER2した
アプリケーションへのRECEIVEDメッセージの送信は行われません
パラメータ 説明
wParam メッセージを受信するウィンドウのハンド
ルを指定します。
lParam 下位ワードが0の場合は秀Termは受信した
文字列を自分のウィンドウに表示しますが
1の場合は秀Term側の画面表示をしなくな
ります。
リターン値 成功した場合にTRUEを返します。
注意 SETBINARYMODEをSendMessageした直後、秀Termはちょっとだけ待
ち時間が必要になります。という訳で、SETBINARYMODEをSendし
たら直後にに必ずPeekMessage()を1回実行してください。
SETBINARYMODEした場合に送られてくるRECEIVEDメッセージの中
のデータはNULL文字で終了していません。
使い方の例:
MSG msg;
SendMessage( hwndHideTerm, WM_HIDETERM_SETBINARYMODE, (LPARAM)hwndMe, 0L );
PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
... バイナリ転送の処理開始 ...
15.WM_HIDETERM_REGISTADDIN
機能 このメッセージは、秀Termにアドインソフトのウィンドウを登録
させます。登録されたウィンドウは秀Termのメニューバーの下に
表示されます。
アドインソフトは5つまで登録できます。
ウィンドウの高さに0を指定するとウィンドウは非表示になりま
す。
パラメータ 説明
wParam アドインソフトのウィンドウのハンドルを指
定します。
lParam 下位ワードでアドインソフトのウィンドウの
高さをドット単位で指定します。
リターン値 成功した場合にTRUEを返します。
16.WM_HIDETERM_SETADDINHEIGHT
機能 このメッセージは、アドインソフトのウィンドウの高さを変更し
ます。
パラメータ 説明
wParam アドインソフトのウィンドウのハンドルを指
定します。
lParam 下位ワードでアドインソフトのウィンドウの
高さをドット単位で指定します。
リターン値 成功した場合にTRUEを返します。
17.WM_HIDETERM_ADDCOMMAND1 ~ ADDCOMMAND7
機能 このメッセージは、秀Termのメニューに任意のコマンドを追加し
ます。
ADDCOMMAND1は「ファイル」メニュー、ADDCOMMAND2は「編集」メ
ニュー、同様にADDCOMMAND7まで使えます。
パラメータ 説明
wParam コマンドを受け取るウィンドウのハンドルを
指定します。REGISTADDINされているウィン
ドゥでも、そうでなくてもかまいません。
lParam 下位ワードでメニューに表示する文字列を含
むグローバルメモリのハンドルを指定します
上位ワードで、そのコマンドが実行された場
合に通知するコマンドの値を指定します。
下位ワードが0の場合はセパレータを追加し
ます。
リターン値 成功した場合にTRUEを返します。
18.WM_HIDETERM_SETSENDFILTER (まだ使えないと思う)
機能 このメッセージは、秀Termから送信する文字列をアプリケーショ
ンに通知します。WM_HIDETERM_SENDREPORTメッセージを使って通
知します。
パラメータ 説明
wParam WM_HIDETERM_SENDREPORTメッセージを受け取る
ウィンドウハンドルを指定します。
リターン値 成功した場合にTRUEを返します。
19.WM_HIDETERM_ENDSENDFILTER (まだ使えないと思う)
機能 このメッセージは、WM_HIDETERM_SETSENDFILTERで指定した送信
文字列の通知を解除します。
パラメータ 説明
wParam 解除したいウィンドウハンドルを指定しま
す。
20.WM_HIDETERM_SENDREPORT (まだ使えないと思う)
機能 このメッセージは、WM_HIDETERM_SETSENDFILTERメッセージによっ
て指定されたウィンドウに秀Term側から送られるメッセージで
す。
秀Termの通信ポートの設定で「ローカル編集」がONになってる
場合やチャットモードの場合は1行づつまとめて送られてきます
が、そうでない場合は1文字づつ送られてきます。
スクリプトのSEND文が実行された場合はその内容がそのまま送ら
れてきます。
無手順アップロードの場合は1行づつ通知されます。
バイナリ転送中は通知されません。
パラメータ 説明
wParam これから送信する文字列の長さです。
lParam 下位ワードに送信する文字列を含むグロー
バルメモリのハンドルが入ってます。
21.WM_HIDETERM_EXECSCRIPT2
機能 このメッセージは、グローバルメモリ内に書き込まれたスクリプト
を実行します。
パラメータ 説明
lParam 下位ワードに、実行したいスクリプトを
格納したバッファのハンドルを指定します。
ここに指定するバッファは、
GMEM_DDESHARE属性で確保されていなければ
なりません。
スクリプトの最後はNULL文字で終わっている
必要があります。
改行の文字は'\n'を使ってください。
グローバルメモリは64キロバイト未満で
なくてはいけません。
リターン値 成功した場合は0以外の値が返ります。
22.WM_HIDETERM_SETEVENTNOTIFICATION (まだ使えないと思う)
機能 このメッセージは、秀Termで発生する各種のイベントをアプリ
ケーションに通知するようにします。
パラメータ 説明
wParam イベントを通知してほしいウィンドウの
ハンドルです。
リターン値 成功した場合は0以外の値が返ります。
23.WM_HIDETERM_EVENT (まだ使えないと思う)
機能 このメッセージは、秀Termで発生した各種のイベントをアプリ
ケーションに通知する際に、秀Term側からアプリケーションに
送られるメッセージです。
このメッセージはプロセス間で送られるメッセージなのでこの
メッセージの処理中はメッセージボックスやダイアログボック
スは出してはいけません。
パラメータ 説明
wParam イベントの種類です。
リターン値 0を返してください。
イベントの種類:
HTEVENT_CONNECTED 電話がつながった
HTEVENT_HANGUPED 電話が切れた
HTEVENT_BEGINUPLOAD アップロードが開始された
HTEVENT_BEGINDOWNLOAD ダウンロードが開始された
HTEVENT_ENDPROTOCOL アップロード/ダウンロードが終了した
HTEVENT_BEGINBPLUS BPLUSが開始された
24.WM_HIDETERM_SETMOUSEHOOK (まだ使えないと思う)
機能 このメッセージは、秀Termウィンドウで発生するマウスのイ
ベントを、秀Termが処理する前にアプリケーションに通知す
るようにします。
アプリケーション側には、自分自身のウィンドウに対するマ
ウスメッセージか、それとも秀Termウィンドウから送られて
くるマウスメッセージかをうまく判定してください。
例えば、GetCursorPos関数を使ってどちらのウィンドウかを
判定するか、または見えないウィンドウを作ってそこにマウ
スメッセージが通知されるようにする等です。
アプリケーション側にマウスメッセージが送られたら、もし
そのメッセージを自分で処理し、秀Term側では無視してほし
い場合は0以外の値でリターンしてください。秀Term側に本
来の処理をさせたい場合は0でリターンしてください。
秀Termのマウスメッセージは、HideTermFrameClassというク
ラス名のウィンドウではなく、HideTermClassというクラス
名のウィンドウ内でのメッセージのみが通知されます。
パラメータ 説明
wParam 通知してほしいウィンドウのハンドル
です。
リターン値 成功した場合は0以外の値を返します。
25.秀Termウィンドウの見つけ方
秀Termのウィンドウを探すには、"HideTermFrameClass"というクラス名のウィン
ドウを探してください。
プログラム例:
extern HWND hwndHideterm;
BOOL GetHidemaruBuffer( int iLine, char* pszLine ) {
HANDLE hmem;
LPSTR pb;
hmem = GlobalAlloc( GMEM_DDESHARE | GMEM_MOVEABLE, 81 );
if( hmem == NULL ) return FALSE;
SendMessage( hwndHideterm, WM_HIDETERM_GETBUFFER, iLine, MAKELONG( hmem, 0 ) );
pb = GlobalLock( hmem );
if( pb == NULL ) {
GlobalFree( hmem );
return FALSE;
}
lstrcpy( pszLine, pb );
GlobalUnlock( hmem );
GlobalFree( hmem );
return TRUE;
}
void SendDataToHidemaru( char* psz ) {
HANDLE hmem;
LPSTR pb;
int cch;
cch = strlen(psz);
hmem = GlobalAlloc( GMEM_DDESHARE | GMEM_MOVEABLE, cch + 1 );
if( hmem == NULL ) return FALSE;
pb = GlobalLock( hmem );
if( pb == NULL ) {
GlobalFree( hmem );
return FALSE;
}
lstrcpy( pb, psz );
SendMessage( hwndHideterm, WM_HIDETERM_SENDDATA, cch, MAKELONG( hmem, 0 ) );
GlobalUnlock( hmem );
GlobalFree( hmem );
return TRUE;
}
void Test( void ) {
HWND hwndHideterm = FindWindow( "HideTermFrameClass", NULL );
if( hwndHideterm == NULL ) {
MessageBox( hwndClient, "秀Termがまだ起動されていません。", NULL, MB_OK | MB_ICONHAND );
return;
}
HANDLE hMem = GlobalAlloc( GMEM_DDESHARE | GMEM_MOVEABLE, 81 );
LPSTR pb = GlobalLock( hMem );
WORD version = SendMessage( hwndHideterm, WM_HIDETERM_GETVERSION, 0, 0L );
char sz[30];
itoa( version, sz, 16 );
MessageBox( hwndClient, sz, NULL, MB_OK );
SendMessage( hwndHideterm, WM_HIDETERM_GETBUFFER, 0, MAKELONG( hMem, 0 ) );
MessageBox( hwndClient, pb, NULL, MB_OK );
SendMessage( hwndHideterm, WM_HIDETERM_GETBUFFER, 1, MAKELONG( hMem, 0 ) );
MessageBox( hwndClient, pb, NULL, MB_OK );
lstrcpy( pb, "AT\\N3\x0D" );
SendMessage( hwndHideterm, WM_HIDETERM_SENDDATA, lstrlen(pb), MAKELONG( hMem, 0 ) );
GlobalUnlock( hMem );
GlobalFree( hMem );
}
#endif