home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 February
/
VPR9602A.ISO
/
ols
/
winnt
/
htnt220
/
htapi32.h
< prev
next >
Wrap
Text File
|
1995-05-22
|
22KB
|
613 lines
// HTAPI32.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 WM_HIDETERM32_GETVERSION (WM_USER+0)
#define WM_HIDETERM32_GETBUFFER (WM_USER+50)
#define WM_HIDETERM32_SENDDATA (WM_USER+51)
#define WM_HIDETERM32_SETRECEIVER (WM_USER+3)
#define WM_HIDETERM32_ENDRECEIVER (WM_USER+4)
#define WM_HIDETERM32_RECEIVED (WM_USER+5)
#define WM_HIDETERM32_WRITEBUFFER (WM_USER+52)
#define WM_HIDETERM32_WRITEBUFFER2 (WM_USER+53)
#define WM_HIDETERM32_EXECSCRIPT (WM_USER+54)
#define WM_HIDETERM32_QUERY_ONLINE (WM_USER+11)
#define WM_HIDETERM32_SETRECEIVER2 (WM_USER+13)
#define WM_HIDETERM32_SETIDLENOTIFICATION (WM_USER+14)
#define WM_HIDETERM32_GETVAR (WM_USER+55)
#define WM_HIDETERM32_SETVAR (WM_USER+56)
#define WM_HIDETERM32_SETBINARYMODE (WM_USER+18)
#define WM_HIDETERM32_REGISTADDIN (WM_USER+20)
#define WM_HIDETERM32_SETADDINHEIGHT (WM_USER+22)
#define WM_HIDETERM32_ADDCOMMAND1 (WM_USER+57)
#define WM_HIDETERM32_ADDCOMMAND2 (WM_USER+58)
#define WM_HIDETERM32_ADDCOMMAND3 (WM_USER+59)
#define WM_HIDETERM32_ADDCOMMAND4 (WM_USER+60)
#define WM_HIDETERM32_ADDCOMMAND5 (WM_USER+61)
#define WM_HIDETERM32_ADDCOMMAND6 (WM_USER+62)
#define WM_HIDETERM32_ADDCOMMAND7 (WM_USER+63)
#define WM_HIDETERM32_CAPTUREMENU (WM_USER+30)
#define WM_HIDETERM32_UNCAPTUREMENU (WM_USER+31)
#define WM_HIDETERM32_SETSENDFILTER (WM_USER+32)
#define WM_HIDETERM32_ENDSENDFILTER (WM_USER+33)
#define WM_HIDETERM32_SENDREPORT (WM_USER+6)
#define WM_HIDETERM32_EXECSCRIPT2 (WM_USER+70)
#define WM_HIDETERM32_SETCOMMANDCODE (WM_USER+71)
#define IDM_HIDETERM_USER 1000
#if 0
●1.WM_HIDETERM32_GETVERSION
このメッセージは、秀Termのバージョンを調べるときに使われます。アプリケー
ションは、SendMessageを使ってこのメッセージを秀Termに送ります。
パラメータ
wParam 使われません。
lParam 使われません。
リターン値
秀Termのメジャーバージョン番号とマイナーバージョン番号から構成される整数
値です。上位バイトがマイナーバージョン番号を、下位バイトがメジャーバージョ
ン番号を表します。
バージョン番号は16進で帰ってきます。例えばVer1.25の場合は0x2501という
値が帰ってきます。(WindowsのGetVersionもそうです)
●2.WM_HIDETERM32_GETBUFFER
このメッセージは、秀Termのバックスクロールバッファの文字列を、行単位で指
定のバッファにコピーします。
アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送りま
す。
パラメータ
wParam コピーされる文字列の行を指定します。0は最新の行を意味し、正数
nはn行前の文字列を意味します。
lParam データのコピー先のファイルマッピングハンドルを指定します。ここ
に指定するバッファは、81バイト以上のサイズを持っていなければな
りません。
リターン値
実際にコピーされた文字列のバイト数になります。文字列には終端として'\0'
(値0)が付きますが、'\0'は、この値に含まれません。
●3.WM_HIDETERM32_SENDDATA
このメッセージは、指定バッファ内の文字列を秀Termの通信ポートに直接送信し
ます。
アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送ります。
パラメータ
wParam 送信する文字列のバイト数を指定します。('\0'で終端しない言語も
あるかも?)
lParam 送信する文字列を格納したファイルマッピングハンドルを指定しま
す。
リターン値
実際に送信された文字列のバイト数になります。
●4.WM_HIDETERM32_WRITEBUFFER , WM_HIDETERM32_WRITEBUFFER2
このメッセージは、指定バッファ内の文字列を秀Termのウィンドウに表示しま
す。通信ポートには出力しません。
アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送ります。
WRITEBUFFERはウィンドウとログの両方に出力し、WRITEBUFFER2はウィンドウに
だけ出力します。
パラメータ
wParam 送信する文字列のバイト数を指定します。('\0'で終端しない言語も
あるかも?)
lParam 送信する文字列を格納したファイルマッピングハンドルを指定しま
す。
リターン値
なし
●5.WM_HIDETERM32_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_HIDETERM32_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_HIDETERM32_ENDRECEIVER
WM_HIDETERM_SETRECEIVERまたはWM_HIDETERM_SETRECEIVER2で設定した状態を解
除します。
Version 2.03から、wParamに、解除したいウィンドウのハンドルを指定してもら
う仕様に変りました。ただし、従来との互換のため、wParamに値が入ってない場合
でも受信ウィンドウが1つの場合は自動的にそれが解除されます。
パラメータ
wParam メッセージ受信を解除するウィンドウのハンドルを指定します。
リターン値 なし
●8.WM_HIDETERM32_RECEIVED
このメッセージは秀Termから送られるメッセージです。
WM_HIDETERM_SETRECEIVERで指定されたウィンドウに送られます。受信したデータ
を生で送ります。WM_HIDETERM_SETRECEIVER2で指定されている場合は行単位で通知
します。
パラメータ
wParam 受信した文字列を格納したファイルマッピングハンドルが入ってい
ます。文字列はNULL文字で終了しています。また、漢字の1バイト目だ
けや2バイト目だけが含まれる場合もあるので注意が必要です。
データはSHIFT-JISに変換されています。
WM_HIDETERM_SETIDLENOTIFICATIONが指定されている場合は、NULL文
字だけが通知されることがあります。
lParam 下位ワードに文字列の長さが入っています。NULL文字を含まない分の
長さです。
リターン値 なし
●9.WM_HIDETERM32_EXECSCRIPT
このメッセージは、指定されたスクリプトを秀Termに実行させます。スクリプト
には、ファイル名とラベルが指定できます。指定の方法は秀Termの「設定・キー割
り当て」と同じ形式です。
パラメータ
wParam 文字列のバイト数を指定します。
lParam 実行したいスクリプト名を格納したファイルマッピングハンドルを指
定します。ここに指定するバッファは、GMEM_DDESHARE属性で確保され
ていなければなりません。
文字列の例:「NIF.SCR」、「NIF.SCR:SendFileName」
リターン値 成功した場合は0以外の値が返ります。
10.WM_HIDETERM32_QUERY_ONLINE
このメッセージは、秀Termが現在オンライン状態かどうかを返します。
リターン値 オンライン状態のとき1、そうでないとき0
●11.WM_HIDETERM32_SETIDLENOTIFICATION
このメッセージは、WM_HIDETERM_SETRECEIVERまたはWM_HIDETERM_SETRECEIVER2
を送ったウィンドウだけが送ることができるメッセージです。パラメタで指定され
た時間が経過しても通信ポートから何も受信しなかった場合、そのことを通知する
よう指定します。
通信ポートから何も受信しなかった場合は、WM_HIDETERM_RECEIVEDメッセージで
NULL文字だけが送られてきます。
パラメータ
wParam メッセージを受信するウィンドウのハンドルを指定します。
lParam 時間をミリ秒単位で指定します。
●12.WM_HIDETERM32_GETVAR
このメッセージは、秀Termの変数の内容を通知します。
パラメータ
wParam 変数名を含むファイルマッピングハンドルを指定します。
lParam 変数に代入されている値を格納するためのファイルマッピングハンド
ルを指定します。1kバイト以上のサイズが必要です。
●13.WM_HIDETERM32_SETVAR
このメッセージは、秀Termの変数の内容を書き換えます。
パラメータ
wParam 変数名を含むファイルマッピングハンドルを指定します。
lParam 代入したい値を格納するためのファイルマッピングハンドルを指定し
ます。
変数名は30文字以内、値はnull文字を含めて256バイト以内であ
る必要があります。
●14.WM_HIDETERM32_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_HIDETERM32_SETBINARYMODE, (WPARAM)hwndMe, 0L );
PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
... バイナリ転送の処理開始 ...
●15.WM_HIDETERM32_REGISTADDIN
このメッセージは、秀Termにアドインソフトのウィンドウを登録させます。登録
されたウィンドウは秀Termのメニューバーの下に表示されます。
アドインソフトは5つまで登録できます。
ウィンドウの高さに0を指定するとウィンドウは非表示になります。
パラメータ
wParam アドインソフトのウィンドウのハンドルを指定します。
lParam 下位ワードでアドインソフトのウィンドウの高さをドット単位で指定
します。
リターン値 成功した場合にTRUEを返します。
●16.WM_HIDETERM32_SETADDINHEIGHT
このメッセージは、アドインソフトのウィンドウの高さを変更します。
パラメータ
wParam アドインソフトのウィンドウのハンドルを指定します。
lParam 下位ワードでアドインソフトのウィンドウの高さをドット単位で指定
します。
リターン値 成功した場合にTRUEを返します。
●17.WM_HIDETERM32_ADDCOMMAND1 ~ ADDCOMMAND7
このメッセージは、秀Termのメニューに任意のコマンドを追加します。
ADDCOMMAND1は「ファイル」メニュー、ADDCOMMAND2は「編集」メニュー、同様に
ADDCOMMAND7まで使えます。
ADDCOMMANDメッセージでコマンドを追加する時は、その直前に
WM_HIDETERM32_SETCOMMANDCODEメッセージを使って、そのコマンドが実行された場
合にアプリケーション側に通知されるWM_COMMANDのwParamの値を指定する必要があ
ります。
パラメータ
wParam コマンドを受け取るウィンドウのハンドルを指定します。
REGISTADDINされているウィンドゥでも、そうでなくてもかまいま
せん。
lParam メニューに表示する文字列を含むファイルマッピングハンドルを指定
しますNULLの場合はセパレータを追加します。
リターン値 成功した場合にTRUEを返します。
●18.WM_HIDETERM32_SETCOMMANDCODE
このメッセージは、WM_HIDETERM32_ADDCOMMAND1~ADDCOMMAND7で追加するコマン
ドの、アドインアプリケーションに通知するWM_COMMANDのコマンドコードを設定し
ます。
このメッセージはWM_HIDETERM32_ADDCOMMAND1~7を送る直前に送る必要がありま
す。
パラメータ
wParam WM_COMMANDのwParamで通知されるコマンドの値を指定します。
●19.WM_HIDETERM32_SETSENDFILTER (まだ使えないと思う)
このメッセージは、秀Termから送信する文字列をアプリケーションに通知しま
す。WM_HIDETERM32_SENDREPORTメッセージを使って通知します。
パラメータ
wParam WM_HIDETERM32_SENDREPORTメッセージを受け取るウィンドウハンドル
を指定します。
リターン値 成功した場合にTRUEを返します。
●20.WM_HIDETERM32_ENDSENDFILTER (まだ使えないと思う)
このメッセージは、WM_HIDETERM_SETSENDFILTERで指定した送信文字列の通知を
解除します。
パラメータ
wParam 解除したいウィンドウハンドルを指定します。
●21.WM_HIDETERM32_SENDREPORT (まだ使えないと思う)
このメッセージは、WM_HIDETERM_SETSENDFILTERメッセージによって指定された
ウィンドウに秀Term側から送られるメッセージです。
秀Termの通信ポートの設定で「ローカル編集」がONになってる場合やチャット
モードの場合は1行づつまとめて送られてきますが、そうでない場合は1文字づつ
送られてきます。
スクリプトのSEND文が実行された場合はその内容がそのまま送られてきます。
無手順アップロードの場合は1行づつ通知されます。バイナリ転送中は通知され
ません。
パラメータ
wParam これから送信する文字列の長さです。
lParam 送信する文字列を含むファイルマッピングハンドルが入ってます。
●22.WM_HIDETERM32_EXECSCRIPT2
このメッセージは、ファイルマッピング内に書き込まれたスクリプトを実行しま
す。
パラメータ
lParam 実行したいスクリプトを格納したファイルマッピングハンドルを指定
します。
スクリプトの最後はNULL文字で終わっている必要があります。
改行の文字は'\n'を使ってください。ファイルマッピングは64キロ
バイト未満でなくてはいけません。
リターン値 成功した場合は0以外の値が返ります。
●23.WM_HIDETERM32_SETEVENTNOTIFICATION (まだ使えないと思う)
このメッセージは、秀Termで発生する各種のイベントをアプリケーションに通知
するようにします。
パラメータ
wParam イベントを通知してほしいウィンドウのハンドルです。
リターン値 成功した場合は0以外の値が返ります。
●24.WM_HIDETERM32_EVENT (まだ使えないと思う)
このメッセージは、秀Termで発生した各種のイベントをアプリケーションに通知
する際に、秀Term側からアプリケーションに送られるメッセージです。
このメッセージはプロセス間で送られるメッセージなのでこのメッセージの処理
中はメッセージボックスやダイアログボックスは出してはいけません。
パラメータ
wParam イベントの種類です。
リターン値 0を返してください。
イベントの種類:
HTEVENT_CONNECTED 電話がつながった
HTEVENT_HANGUPED 電話が切れた
HTEVENT_BEGINUPLOAD アップロードが開始された
HTEVENT_BEGINDOWNLOAD ダウンロードが開始された
HTEVENT_ENDPROTOCOL アップロード/ダウンロードが終了した
HTEVENT_BEGINBPLUS BPLUSが開始された
●25.WM_HIDETERM32_SETMOUSEHOOK (まだ使えないと思う)
このメッセージは、秀Termウィンドウで発生するマウスのイベントを、秀Termが
処理する前にアプリケーションに通知するようにします。
アプリケーション側には、自分自身のウィンドウに対するマウスメッセージか、
それとも秀Termウィンドウから送られてくるマウスメッセージかをうまく判定して
ください。
例えば、GetCursorPos関数を使ってどちらのウィンドウかを判定するか、または
見えないウィンドウを作ってそこにマウスメッセージが通知されるようにする等で
す。
アプリケーション側にマウスメッセージが送られたら、もしそのメッセージを自
分で処理し、秀Term側では無視してほしい場合は0以外の値でリターンしてくださ
い。秀Term側に本来の処理をさせたい場合は0でリターンしてください。
秀Termのマウスメッセージは、HideTermFrameClassというクラス名のウィンドウ
ではなく、HideTermClassというクラス名のウィンドウ内でのメッセージのみが通
知されます。
パラメータ
wParam 通知してほしいウィンドウのハンドルです。
リターン値 成功した場合は0以外の値を返します。
●26.秀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_HIDETERM32_GETBUFFER, (WPARAM)iLine, (LPARAM)hmem );
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_HIDETERM32_SENDDATA, (WPARAM)cch, (LPARAM)hmem ) );
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 );
UINT version = SendMessage( hwndHideterm, WM_HIDETERM32_GETVERSION, 0, 0L );
char sz[30];
itoa( version, sz, 16 );
MessageBox( hwndClient, sz, NULL, MB_OK );
SendMessage( hwndHideterm, WM_HIDETERM32_GETBUFFER, 0, (LPARAM)hMem );
MessageBox( hwndClient, pb, NULL, MB_OK );
SendMessage( hwndHideterm, WM_HIDETERM32_GETBUFFER, 1, (LPARAM)hMem );
MessageBox( hwndClient, pb, NULL, MB_OK );
lstrcpy( pb, "AT\\N3\x0D" );
SendMessage( hwndHideterm, WM_HIDETERM32_SENDDATA, lstrlen(pb), (LPARAM)hMem );
GlobalUnlock( hMem );
GlobalFree( hMem );
}
●27.ファイルマッピングの使い方
WindowsNTでは共有メモリとしてファイルマッピングを使うことになっています。
共有メモリ用にファイルマッピングを作成するには、以下のように
CreateFileMappingでhfileに(HANDLE)0xFFFFFFFFを指定します。
HANDLE hMap;
hMap = CreateFileMapping( (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE
, 0, cbFileMapping, NULL );
作成したファイルマッピングにアクセスするには、MapViewOfFileを使います。
LPSTR pb = (LPSTR)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
ファイルマッピングハンドルを秀Termに渡す場合は、DuplicateHandleを使って
秀Termのプロセスがアクセス可能なようにハンドルを複製する必要があります。
HANDLE hMapHideterm;
DWORD idProcess;
DWORD idThread;
HANDLE hProcess;
idThread = GetWindowThreadProcessId( hwndHideterm, &idProcess );
hProcess = OpenProcess( PROCESS_DUP_HANDLE, TRUE, idProcess );
DuplicateHandle( GetCurrentProcess(), hMap, hProcess, &hMapHideterm
, 0, TRUE, DUPLICATE_SAME_ACCESS );
ハンドルを複製したら、SendMessageで秀Termに渡すことができます。
SendMessage( hwndHideterm, WM_HIDETERM32_ADDCOMMAND1
, (WPARAM)hwndAddin, (LPARAM)hMapHideterm )
秀Term側では受け取ったファイルマッピングハンドルをCloseHandleするので、
アドインアプリケーション側ではクローズする必要はないです。
プロセスハンドルは最終的にクローズしたほうがいいです。
秀Termから送られてきたファイルマッピングハンドルから共有メモリにアクセス
するには、以下のようにMapViewOfFileを使います。
LPSTR pb = (LPSTR)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
参照が終わったら、UnmapViewOfFileでアンマップしてからさらにCloseHandleで
ファイルマッピングハンドルをクローズしてください。
#endif