home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / OLS / Win95 / HT315 / HT315.LZH / HTAPI32.H < prev    next >
Text File  |  1996-04-08  |  23KB  |  657 lines

  1. //    HTAPI32.H Application Programing Interface of 秀Term
  2. //
  3. //    copyright(c) 1992 by 斉藤秀夫(秀まるお)、NIFTY-Serve PEH00775
  4. //
  5. //    このヘッダファイルはwindows.hより後ろに#includeしてください。
  6.  
  7. // 秀Term for Windows95 V3.00では、従来の16bitの秀TermAPIも完全にサポート
  8. // しています。
  9. //
  10. // アプリケーション側でHIDETERM.INIやVARIABLE.TXTを参照したい場合は、
  11. // 「設定・動作環境」で、「HIDETERM.INIを作成する」をONにして
  12. // 使ってください。
  13. // アプリケーション側でHIDETERM.INIを書き換えたい場合、[_NewHost]
  14. // というセクションにホスト名を登録すると、秀Term側でその新しいホスト
  15. // 登録情報を読み込むようになります。詳しくは後で述べます。
  16. //
  17.  
  18. #define WM_HIDETERM_GETVERSION            (WM_USER+0)
  19. #define WM_HIDETERM_GETBUFFER            (WM_USER+1)
  20. #define WM_HIDETERM_SENDDATA            (WM_USER+2)
  21. #define WM_HIDETERM_SETRECEIVER            (WM_USER+3)
  22. #define WM_HIDETERM_ENDRECEIVER            (WM_USER+4)
  23. #define WM_HIDETERM_RECEIVED            (WM_USER+5)
  24. #define WM_HIDETERM_WRITEBUFFER            (WM_USER+6)
  25. #define WM_HIDETERM_WRITEBUFFER2        (WM_USER+7)
  26. #define WM_HIDETERM_EXECSCRIPT            (WM_USER+8)
  27. #define WM_HIDETERM_QUERY_ONLINE        (WM_USER+11)
  28. #define WM_HIDETERM_SETRECEIVER2        (WM_USER+13)
  29. #define WM_HIDETERM_SETIDLENOTIFICATION    (WM_USER+14)
  30. #define WM_HIDETERM_GETVAR                (WM_USER+15)
  31. #define WM_HIDETERM_SETVAR                (WM_USER+16)
  32. #define WM_HIDETERM_SETBINARYMODE        (WM_USER+18)
  33. #define WM_HIDETERM_REGISTADDIN            (WM_USER+20)
  34. #define WM_HIDETERM_SETADDINHEIGHT        (WM_USER+22)
  35. #define WM_HIDETERM_ADDCOMMAND1            (WM_USER+23)
  36. #define WM_HIDETERM_ADDCOMMAND2            (WM_USER+24)
  37. #define WM_HIDETERM_ADDCOMMAND3            (WM_USER+25)
  38. #define WM_HIDETERM_ADDCOMMAND4            (WM_USER+26)
  39. #define WM_HIDETERM_ADDCOMMAND5            (WM_USER+27)
  40. #define WM_HIDETERM_ADDCOMMAND6            (WM_USER+28)
  41. #define WM_HIDETERM_ADDCOMMAND7            (WM_USER+29)
  42. #define WM_HIDETERM_CAPTUREMENU            (WM_USER+30)
  43. #define WM_HIDETERM_UNCAPTUREMENU        (WM_USER+31)
  44. #define WM_HIDETERM_SETSENDFILTER        (WM_USER+32)
  45. #define WM_HIDETERM_ENDSENDFILTER        (WM_USER+33)
  46. #define WM_HIDETERM_SENDREPORT            (WM_USER+6)
  47. #define WM_HIDETERM_EXECSCRIPT2            (WM_USER+34)
  48.  
  49. #define WM_HIDETERM32_GETVERSION            (WM_USER+0)
  50. #define WM_HIDETERM32_GETBUFFER                (WM_USER+50)
  51. #define WM_HIDETERM32_SENDDATA                (WM_USER+51)
  52. #define WM_HIDETERM32_SETRECEIVER            (WM_USER+72)
  53. #define WM_HIDETERM32_ENDRECEIVER            (WM_USER+4)
  54. #define WM_HIDETERM32_RECEIVED                (WM_USER+5)
  55. #define WM_HIDETERM32_WRITEBUFFER            (WM_USER+52)
  56. #define WM_HIDETERM32_WRITEBUFFER2            (WM_USER+53)
  57. #define WM_HIDETERM32_EXECSCRIPT            (WM_USER+54)
  58. #define WM_HIDETERM32_QUERY_ONLINE            (WM_USER+11)
  59. #define WM_HIDETERM32_SETRECEIVER2            (WM_USER+73)
  60. #define WM_HIDETERM32_SETIDLENOTIFICATION    (WM_USER+14)
  61. #define WM_HIDETERM32_GETVAR                (WM_USER+55)
  62. #define WM_HIDETERM32_SETVAR                (WM_USER+56)
  63. #define WM_HIDETERM32_SETBINARYMODE            (WM_USER+18)
  64. #define WM_HIDETERM32_REGISTADDIN            (WM_USER+20)
  65. #define WM_HIDETERM32_SETADDINHEIGHT        (WM_USER+22)
  66. #define WM_HIDETERM32_ADDCOMMAND1            (WM_USER+57)
  67. #define WM_HIDETERM32_ADDCOMMAND2            (WM_USER+58)
  68. #define WM_HIDETERM32_ADDCOMMAND3            (WM_USER+59)
  69. #define WM_HIDETERM32_ADDCOMMAND4            (WM_USER+60)
  70. #define WM_HIDETERM32_ADDCOMMAND5            (WM_USER+61)
  71. #define WM_HIDETERM32_ADDCOMMAND6            (WM_USER+62)
  72. #define WM_HIDETERM32_ADDCOMMAND7            (WM_USER+63)
  73. #define WM_HIDETERM32_CAPTUREMENU            (WM_USER+30)
  74. #define WM_HIDETERM32_UNCAPTUREMENU            (WM_USER+31)
  75. #define WM_HIDETERM32_SETSENDFILTER            (WM_USER+74)
  76. #define WM_HIDETERM32_ENDSENDFILTER            (WM_USER+33)
  77. #define WM_HIDETERM32_SENDREPORT            (WM_USER+6)
  78. #define WM_HIDETERM32_EXECSCRIPT2            (WM_USER+70)
  79. #define WM_HIDETERM32_SETCOMMANDCODE        (WM_USER+71)
  80. #define WM_HIDETERM32_REMOVEADDIN            (WM_USER+75)
  81.  
  82.  
  83. #define IDM_HIDETERM_USER    1000
  84.  
  85. #if 0
  86.  
  87. /*
  88.  
  89.  
  90. ●1.WM_HIDETERM32_GETVERSION
  91.  
  92.  このメッセージは、秀Termのバージョンを調べるときに使われます。アプリケー
  93. ションは、SendMessageを使ってこのメッセージを秀Termに送ります。
  94.  
  95.  パラメータ
  96.  
  97.  wParam  使われません。
  98.  lParam  使われません。
  99.  
  100.  リターン値
  101.  
  102.  秀Termのメジャーバージョン番号とマイナーバージョン番号から構成される整数
  103. 値です。上位バイトがマイナーバージョン番号を、下位バイトがメジャーバージョ
  104. ン番号を表します。
  105.  バージョン番号は16進で帰ってきます。例えばVer1.25の場合は0x2501という
  106. 値が帰ってきます。(WindowsのGetVersionもそうです)
  107.  
  108. ●2.WM_HIDETERM32_GETBUFFER
  109.  
  110.  このメッセージは、秀Termのバックスクロールバッファの文字列を、行単位で指
  111. 定のバッファにコピーします。
  112.  アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送りま
  113. す。
  114.  
  115.  パラメータ
  116.  
  117.  wParam  コピーされる文字列の行を指定します。0は最新の行を意味し、正数
  118.      nはn行前の文字列を意味します。
  119.  lParam  データのコピー先のファイルマッピングハンドルを指定します。ここ
  120.      に指定するバッファは、81バイト以上のサイズを持っていなければな
  121.      りません。
  122.  
  123.  リターン値
  124.  
  125.  実際にコピーされた文字列のバイト数になります。文字列には終端として'\0'
  126. (値0)が付きますが、'\0'は、この値に含まれません。
  127.  
  128. ●3.WM_HIDETERM32_SENDDATA
  129.  
  130.  このメッセージは、指定バッファ内の文字列を秀Termの通信ポートに直接送信し
  131. ます。
  132.  アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送ります。
  133.  
  134.  パラメータ
  135.  
  136.  wParam  送信する文字列のバイト数を指定します。('\0'で終端しない言語も
  137.      あるかも?)
  138.  lParam  送信する文字列を格納したファイルマッピングハンドルを指定しま
  139.      す。
  140.  
  141.  リターン値
  142.  
  143.  実際に送信された文字列のバイト数になります。
  144.  
  145. ●4.WM_HIDETERM32_WRITEBUFFER , WM_HIDETERM32_WRITEBUFFER2
  146.  
  147.  このメッセージは、指定バッファ内の文字列を秀Termのウィンドウに表示しま
  148. す。通信ポートには出力しません。
  149.  アプリケーションは、SendMessageを使ってこのメッセージを秀Termに送ります。
  150.  
  151.  WRITEBUFFERはウィンドウとログの両方に出力し、WRITEBUFFER2はウィンドウに
  152. だけ出力します。
  153.  
  154.  パラメータ
  155.  
  156.  wParam  送信する文字列のバイト数を指定します。('\0'で終端しない言語も
  157.      あるかも?)
  158.  
  159.  lParam  送信する文字列を格納したファイルマッピングハンドルを指定しま
  160.      す。
  161.  
  162.  リターン値
  163.  
  164.  なし
  165.  
  166. ●5.WM_HIDETERM32_SETRECEIVER
  167.  
  168.  このメッセージは、秀Termが通信ポートから文字列を受信した場合にそのメッ
  169. セージをパラメタで指定されたウィンドウにも通知するように指示します。
  170.  通知の際にはWM_HIDETERM_RECEIVEDメッセージが使われます。
  171.  通知を終わらせる場合はWM_HIDETERM_ENDRECEIVERメッセージを使います。
  172.  WM_HIDETERM_SETRECEIVERで指定できる通知先ウィンドウはVersion2.03から10
  173. 個まで受け付けるようになりました。
  174.  
  175.  パラメータ
  176.  
  177.  wParam  メッセージを受信するウィンドウのハンドルを指定します。
  178.  lParam  下位ワードが0の場合は秀Termは受信した文字列を自分のウィンドウ
  179.      に表示しますが1の場合は秀Term側の画面表示をしなくなります。
  180.  
  181.  リターン値
  182.  
  183.  成功した場合にTRUEを返します。既に他のアプリによって
  184. WM_HIDETERM_SETRECEIVERされている場合はエラーとなりFALSEが返ります。
  185.  
  186. ●6.WM_HIDETERM32_SETRECEIVER2
  187.  
  188.  このメッセージは、秀Termが通信ポートから文字列を受信した場合にそのメッ
  189. セージをパラメタで指定されたウィンドウにも通知するように指示します。
  190. WM_HIDETERM_SETRECEIVERと違い、改行を受信するか、または80桁受信するごと
  191. に1行分をまとめて通知します。
  192.  通知の際にはWM_HIDETERM_RECEIVEDメッセージが使われます。
  193.  通知を終わらせる場合はWM_HIDETERM_ENDRECEIVERメッセージを使います。
  194.  WM_HIDETERM_SETRECEIVERと同様、10個まで受信側を指定できます。
  195.  
  196.  パラメータ
  197.  
  198.  wParam  メッセージを受信するウィンドウのハンドルを指定します。
  199.  
  200.  lParam  下位ワードが0の場合は秀Termは受信した文字列を自分のウィンドウ
  201.      に表示しますが1の場合は秀Term側の画面表示をしなくなります。
  202.  
  203.  リターン値
  204.  
  205.  成功した場合にTRUEを返します。既に他のアプリによって
  206. WM_HIDETERM_SETRECEIVERされている場合はエラーとなりFALSEが返ります。
  207.  
  208. ●7.WM_HIDETERM32_ENDRECEIVER
  209.  
  210.  WM_HIDETERM_SETRECEIVERまたはWM_HIDETERM_SETRECEIVER2で設定した状態を解
  211. 除します。
  212.  Version 2.03から、wParamに、解除したいウィンドウのハンドルを指定してもら
  213. う仕様に変りました。ただし、従来との互換のため、wParamに値が入ってない場合
  214. でも受信ウィンドウが1つの場合は自動的にそれが解除されます。
  215.  
  216.  パラメータ
  217.  
  218.  wParam  メッセージ受信を解除するウィンドウのハンドルを指定します。
  219.  
  220.  リターン値  なし
  221.  
  222. ●8.WM_HIDETERM32_RECEIVED
  223.  
  224.  このメッセージは秀Termから送られるメッセージです。
  225. WM_HIDETERM_SETRECEIVERで指定されたウィンドウに送られます。受信したデータ
  226. を生で送ります。WM_HIDETERM_SETRECEIVER2で指定されている場合は行単位で通知
  227. します。
  228.  
  229.  パラメータ
  230.  
  231.  wParam  受信した文字列を格納したファイルマッピングハンドルが入ってい
  232.      ます。文字列はNULL文字で終了しています。また、漢字の1バイト目だ
  233.      けや2バイト目だけが含まれる場合もあるので注意が必要です。
  234.       データはSHIFT-JISに変換されています。
  235.       WM_HIDETERM_SETIDLENOTIFICATIONが指定されている場合は、NULL文
  236.      字だけが通知されることがあります。
  237.  
  238.  lParam  下位ワードに文字列の長さが入っています。NULL文字を含まない分の
  239.      長さです。
  240.  
  241.  リターン値  なし
  242.  
  243. ●9.WM_HIDETERM32_EXECSCRIPT
  244.  
  245.  このメッセージは、指定されたスクリプトを秀Termに実行させます。スクリプト
  246. には、ファイル名とラベルが指定できます。指定の方法は秀Termの「設定・キー割
  247. り当て」と同じ形式です。
  248.  
  249.  パラメータ
  250.  
  251.  wParam  文字列のバイト数を指定します。
  252.  
  253.  lParam  実行したいスクリプト名を格納したファイルマッピングハンドルを指
  254.      定します。ここに指定するバッファは、GMEM_DDESHARE属性で確保され
  255.      ていなければなりません。
  256.       文字列の例:「NIF.SCR」、「NIF.SCR:SendFileName」
  257.  
  258.  リターン値  成功した場合は0以外の値が返ります。
  259.  
  260. 10.WM_HIDETERM32_QUERY_ONLINE
  261.  
  262.  このメッセージは、秀Termが現在オンライン状態かどうかを返します。
  263.  
  264.  リターン値  オンライン状態のとき1、そうでないとき0
  265.  
  266. ●11.WM_HIDETERM32_SETIDLENOTIFICATION
  267.  
  268.  このメッセージは、WM_HIDETERM_SETRECEIVERまたはWM_HIDETERM_SETRECEIVER2
  269. を送ったウィンドウだけが送ることができるメッセージです。パラメタで指定され
  270. た時間が経過しても通信ポートから何も受信しなかった場合、そのことを通知する
  271. よう指定します。
  272.  通信ポートから何も受信しなかった場合は、WM_HIDETERM_RECEIVEDメッセージで
  273. NULL文字だけが送られてきます。
  274.  
  275.  パラメータ
  276.  
  277.  wParam  メッセージを受信するウィンドウのハンドルを指定します。
  278.  
  279.  lParam  時間をミリ秒単位で指定します。
  280.  
  281. ●12.WM_HIDETERM32_GETVAR
  282.  
  283.  このメッセージは、秀Termの変数の内容を通知します。
  284.  
  285.  パラメータ
  286.  
  287.  wParam  変数名を含むファイルマッピングハンドルを指定します。
  288.  
  289.  lParam  変数に代入されている値を格納するためのファイルマッピングハンド
  290.      ルを指定します。1kバイト以上のサイズが必要です。
  291.  
  292. ●13.WM_HIDETERM32_SETVAR
  293.  
  294.  このメッセージは、秀Termの変数の内容を書き換えます。
  295.  
  296.  パラメータ
  297.  
  298.  wParam  変数名を含むファイルマッピングハンドルを指定します。
  299.  
  300.  lParam  代入したい値を格納するためのファイルマッピングハンドルを指定し
  301.      ます。
  302.       変数名は30文字以内、値はnull文字を含めて256バイト以内であ
  303.      る必要があります。
  304.  
  305. ●14.WM_HIDETERM32_SETBINARYMODE
  306.  
  307.  このメッセージは、秀Termをバイナリ転送モードにして、秀Termの受信するメッ
  308. セージを一切の加工(NULL文字の除去、JISコ-ドの変換など)を行わずに呼び
  309. 出し元のアプリケーションに通知するようにします。
  310.  秀Term自身はバイナリ転送中のように、バックスクロールしかできない状態にな
  311. ります。
  312.  バイナリモードを解除するにはWM_HIDETERM_ENDRECEIVERを使ってください。
  313.  バイナリモード中はWM_HIDETERM_SETRECEIVER,SETRECEIVER2したアプリケーショ
  314. ンへのRECEIVEDメッセージの送信は行われません
  315.  
  316.  パラメータ
  317.  
  318.  wParam  メッセージを受信するウィンドウのハンドルを指定します。
  319.  
  320.  lParam  下位ワードが0の場合は秀Termは受信した文字列を自分のウィンドウ
  321.      に表示しますが1の場合は秀Term側の画面表示をしなくなります。
  322.  
  323.  リターン値
  324.  
  325.  成功した場合にTRUEを返します。
  326.  
  327.  注意
  328.  
  329.  SETBINARYMODEをSendMessageした直後、秀Termはちょっとだけ待ち時間が必要に
  330. なります。という訳で、SETBINARYMODEをSendしたら直後にに必ずPeekMessage()を
  331. 1回実行してください。
  332.  
  333.  SETBINARYMODEした場合に送られてくるRECEIVEDメッセージの中のデータはNULL
  334. 文字で終了していません。
  335.  
  336.  使い方の例:
  337.  
  338.     MSG   msg;
  339.     SendMessage( hwndHideTerm, WM_HIDETERM32_SETBINARYMODE, (WPARAM)hwndMe, 0L );
  340.     PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
  341.     ...  バイナリ転送の処理開始 ...
  342.  
  343. ●15.WM_HIDETERM32_REGISTADDIN
  344.  
  345.  このメッセージは、秀Termにアドインソフトのウィンドウを登録させます。登録
  346. されたウィンドウは秀Termのメニューバーの下に表示されます。
  347.  アドインソフトは5つまで登録できます。
  348.  ウィンドウの高さに0を指定するとウィンドウは非表示になります。
  349.  
  350.  パラメータ
  351.  
  352.  wParam  アドインソフトのウィンドウのハンドルを指定します。
  353.  
  354.  lParam  下位ワードでアドインソフトのウィンドウの高さをドット単位で指定
  355.      します。
  356.  
  357.  リターン値  成功した場合にTRUEを返します。
  358.  
  359.  アドインを解除するには、WM_HIDETER32_REMOVEADDINメッセージを使います。wParamに
  360. REGISTADDINしたウィンドウハンドルを入れて呼び出してください。
  361.  
  362. ●16.WM_HIDETERM32_SETADDINHEIGHT
  363.  
  364.  このメッセージは、アドインソフトのウィンドウの高さを変更します。
  365.  
  366.  パラメータ
  367.  
  368.  wParam  アドインソフトのウィンドウのハンドルを指定します。
  369.  
  370.  lParam  下位ワードでアドインソフトのウィンドウの高さをドット単位で指定
  371.      します。
  372.  
  373.  リターン値  成功した場合にTRUEを返します。
  374.  
  375. ●17.WM_HIDETERM32_ADDCOMMAND1 ~ ADDCOMMAND7
  376.  
  377.  このメッセージは、秀Termのメニューに任意のコマンドを追加します。
  378.  ADDCOMMAND1は「ファイル」メニュー、ADDCOMMAND2は「編集」メニュー、同様に
  379. ADDCOMMAND7まで使えます。
  380.  ADDCOMMANDメッセージでコマンドを追加する時は、その直前に
  381. WM_HIDETERM32_SETCOMMANDCODEメッセージを使って、そのコマンドが実行された場
  382. 合にアプリケーション側に通知されるWM_COMMANDのwParamの値を指定する必要があ
  383. ります。
  384.  
  385.  パラメータ
  386.  
  387.  wParam  コマンドを受け取るウィンドウのハンドルを指定します。
  388.      REGISTADDINされているウィンドゥでも、そうでなくてもかまいま
  389.      せん。
  390.  
  391.  lParam  メニューに表示する文字列を含むファイルマッピングハンドルを指定
  392.      しますNULLの場合はセパレータを追加します。
  393.  
  394.  リターン値  成功した場合にTRUEを返します。
  395.  
  396. ●18.WM_HIDETERM32_SETCOMMANDCODE
  397.  
  398.  このメッセージは、WM_HIDETERM32_ADDCOMMAND1~ADDCOMMAND7で追加するコマン
  399. ドの、アドインアプリケーションに通知するWM_COMMANDのコマンドコードを設定し
  400. ます。
  401.  このメッセージはWM_HIDETERM32_ADDCOMMAND1~7を送る直前に送る必要がありま
  402. す。
  403.  
  404.  パラメータ
  405.  
  406.  wParam  WM_COMMANDのwParamで通知されるコマンドの値を指定します。
  407.  
  408. ●19.WM_HIDETERM32_SETSENDFILTER  (まだ使えないと思う)
  409.  
  410.  このメッセージは、秀Termから送信する文字列をアプリケーションに通知しま
  411. す。WM_HIDETERM32_SENDREPORTメッセージを使って通知します。
  412.  
  413.  パラメータ
  414.  
  415.  wParam  WM_HIDETERM32_SENDREPORTメッセージを受け取るウィンドウハンドル
  416. を指定します。
  417.  
  418.  リターン値  成功した場合にTRUEを返します。
  419.  
  420. ●20.WM_HIDETERM32_ENDSENDFILTER  (まだ使えないと思う)
  421.  
  422.  このメッセージは、WM_HIDETERM_SETSENDFILTERで指定した送信文字列の通知を
  423. 解除します。
  424.  
  425.  パラメータ
  426.  
  427.  wParam  解除したいウィンドウハンドルを指定します。
  428.  
  429. ●21.WM_HIDETERM32_SENDREPORT  (まだ使えないと思う)
  430.  
  431.  このメッセージは、WM_HIDETERM_SETSENDFILTERメッセージによって指定された
  432. ウィンドウに秀Term側から送られるメッセージです。
  433.  秀Termの通信ポートの設定で「ローカル編集」がONになってる場合やチャット
  434. モードの場合は1行づつまとめて送られてきますが、そうでない場合は1文字づつ
  435. 送られてきます。
  436.  スクリプトのSEND文が実行された場合はその内容がそのまま送られてきます。
  437.  無手順アップロードの場合は1行づつ通知されます。バイナリ転送中は通知され
  438. ません。
  439.  
  440.  パラメータ
  441.  
  442.  wParam  これから送信する文字列の長さです。
  443.  
  444.  lParam  送信する文字列を含むファイルマッピングハンドルが入ってます。
  445.  
  446. ●22.WM_HIDETERM32_EXECSCRIPT2
  447.  
  448.  このメッセージは、ファイルマッピング内に書き込まれたスクリプトを実行しま
  449. す。
  450.  
  451.  パラメータ
  452.  
  453.  lParam  実行したいスクリプトを格納したファイルマッピングハンドルを指定
  454.      します。
  455.       スクリプトの最後はNULL文字で終わっている必要があります。
  456.       改行の文字は'\n'を使ってください。ファイルマッピングは64キロ
  457.      バイト未満でなくてはいけません。
  458.  
  459.  リターン値  成功した場合は0以外の値が返ります。
  460.  
  461. ●23.WM_HIDETERM32_SETEVENTNOTIFICATION  (まだ使えないと思う)
  462.  
  463.  このメッセージは、秀Termで発生する各種のイベントをアプリケーションに通知
  464. するようにします。
  465.  
  466.  パラメータ
  467.  
  468.  wParam  イベントを通知してほしいウィンドウのハンドルです。
  469.  
  470.  リターン値  成功した場合は0以外の値が返ります。
  471.  
  472. ●24.WM_HIDETERM32_EVENT  (まだ使えないと思う)
  473.  
  474.  このメッセージは、秀Termで発生した各種のイベントをアプリケーションに通知
  475. する際に、秀Term側からアプリケーションに送られるメッセージです。
  476.  このメッセージはプロセス間で送られるメッセージなのでこのメッセージの処理
  477. 中はメッセージボックスやダイアログボックスは出してはいけません。
  478.  
  479.  パラメータ
  480.  
  481.  wParam  イベントの種類です。
  482.  
  483.  リターン値  0を返してください。
  484.  
  485.  イベントの種類:
  486.  
  487.         HTEVENT_CONNECTED             電話がつながった
  488.         HTEVENT_HANGUPED              電話が切れた
  489.         HTEVENT_BEGINUPLOAD           アップロードが開始された
  490.         HTEVENT_BEGINDOWNLOAD         ダウンロードが開始された
  491.         HTEVENT_ENDPROTOCOL           アップロード/ダウンロードが終了した
  492.         HTEVENT_BEGINBPLUS            BPLUSが開始された
  493.  
  494. ●25.WM_HIDETERM32_SETMOUSEHOOK  (まだ使えないと思う)
  495.  
  496.  このメッセージは、秀Termウィンドウで発生するマウスのイベントを、秀Termが
  497. 処理する前にアプリケーションに通知するようにします。
  498.  アプリケーション側には、自分自身のウィンドウに対するマウスメッセージか、
  499. それとも秀Termウィンドウから送られてくるマウスメッセージかをうまく判定して
  500. ください。
  501.  例えば、GetCursorPos関数を使ってどちらのウィンドウかを判定するか、または
  502. 見えないウィンドウを作ってそこにマウスメッセージが通知されるようにする等で
  503. す。
  504.  アプリケーション側にマウスメッセージが送られたら、もしそのメッセージを自
  505. 分で処理し、秀Term側では無視してほしい場合は0以外の値でリターンしてくださ
  506. い。秀Term側に本来の処理をさせたい場合は0でリターンしてください。
  507.  
  508.  秀Termのマウスメッセージは、HideTermFrameClassというクラス名のウィンドウ
  509. ではなく、HideTermClassというクラス名のウィンドウ内でのメッセージのみが通
  510. 知されます。
  511.  
  512.  パラメータ
  513.  
  514.  wParam  通知してほしいウィンドウのハンドルです。
  515.  
  516.  リターン値  成功した場合は0以外の値を返します。
  517.  
  518. ●26.秀Termウィンドウの見つけ方
  519.  
  520.  秀Termのウィンドウを探すには、FindWindow関数を使って"HideTermFrameClass"
  521. というクラス名のウィンドウを探してください。
  522.  
  523.  
  524. ●27.ファイルマッピングの使い方(送り側)
  525.  
  526.  WindowsNTでは共有メモリとしてファイルマッピングを使うことになっています。
  527.  
  528.  共有メモリ用にファイルマッピングを作成するには、以下のように
  529. CreateFileMappingでhfileに(HANDLE)0xFFFFFFFFを指定します。
  530.  ファイルマッピングのサイズは秀Termとデータをやりとりするのに必要なサイズ
  531. に設定すればいいです。たとえば普通に使う分には1キロバイトもあれば十分です。
  532.  
  533.  
  534.     HANDLE hMap;
  535.     hMap = CreateFileMapping( (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE
  536.                             , 0, 1024, NULL );
  537.  
  538.  作成したファイルマッピングにアクセスするには、MapViewOfFileを使います。
  539.  
  540.     LPSTR pb = (LPSTR)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
  541.  
  542.  ファイルマッピングは、ずっとMapViewOfFileしたままでかまいません。アプリ
  543. ケーションを終了する直前でUnmapViewOfFileし、CloseHandleすればいいです。
  544.  
  545.  ファイルマッピングハンドルを秀Termに渡す場合は、DuplicateHandleを使って
  546. 秀Termのプロセスがアクセス可能なようにハンドルを複製する必要があります。
  547.  ハンドルを複製するには、秀Termのプロセスハンドルが必要です。プロセスハ
  548. ンドルは以下のようにして取得します。
  549.  
  550.  
  551.     DWORD  idProcess;
  552.     DWORD  idThread;
  553.     HANDLE hProcess;
  554.     idThread = GetWindowThreadProcessId( hwndHideterm, &idProcess );
  555.     hProcess = OpenProcess( PROCESS_DUP_HANDLE, TRUE, idProcess );
  556.  
  557.  秀Term用のファイルマッピングハンドルは、以下のようにして作成します。
  558.  
  559.     HANDLE hMapHideterm;
  560.     DuplicateHandle( GetCurrentProcess(), hMap, hProcess, &hMapHideterm
  561.                    , 0, TRUE, DUPLICATE_SAME_ACCESS );
  562.  
  563.  ハンドルを複製したら、SendMessageで秀Termに渡すことができます。
  564.  
  565.     SendMessage( hwndHideterm, WM_HIDETERM32_ADDCOMMAND1
  566.                , (WPARAM)hwndAddin, (LPARAM)hMapHideterm )
  567.  
  568.  秀Term側では受け取ったファイルマッピングハンドルをCloseHandleするので、
  569. アドインアプリケーション側ではクローズする必要はないです。
  570.  
  571.  以上のことを総合すると、プログラムは以下のように作るともっとも便利になり
  572. ます。
  573.  
  574. // グローバル変数として以下のものを用意する
  575. HWND    hwndHideterm;        // 秀Termウィンドウハンドル
  576. HANDLE  hMap;                // ファイルマッピングハンドル
  577. LPSTR   pbMap;               // ファイルマッピングのアドレス
  578.  
  579. // 秀Term用ファイルマッピングハンドルを作成する関数
  580.  
  581. HANDLE GetMapHandle( void ) {
  582.     HANDLE    hMapHideterm;
  583.     DWORD  idProcess;
  584.     DWORD  idThread;
  585.     HANDLE    hProcess;
  586.     idThread = GetWindowThreadProcessId( hwndHideterm, &idProcess );
  587.     hProcess = OpenProcess( PROCESS_DUP_HANDLE, TRUE, idProcess );
  588.     DuplicateHandle( GetCurrentProcess(), hMap, hProcess, &hMapHideterm
  589.                    , 0, TRUE, DUPLICATE_SAME_ACCESS );
  590.     return hMapHideterm;
  591. }
  592.  
  593. // アプリケーションの初期化処理
  594.  
  595. void InitApp( void ) {
  596.     hwndHideterm = FindWindow( "HideTermFrameClass", NULL );
  597.     hMap = CreateFileMapping( (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE
  598.                             , 0, 1024, NULL );
  599.     pbMap = (LPSTR)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
  600. }
  601.  
  602. // アプリケーションの終了処理
  603. void TerminateApp( void ) {
  604.     UnmapViewOfFile( pbMap );
  605.     CloseHandle( hMap );
  606. }
  607.  
  608.  秀TermにWM_HIDETERM32_GETBUFFERを送る例:
  609.  
  610.     SendMessage( hwndHideterm, WM_HIDETERM32_GETBUFFER
  611.             , (WPARAM)n, (LPARAM)GetMapHandle() );
  612.  
  613.  
  614. ●28.ファイルマッピングの使い方(受け側)
  615.  
  616.  
  617.  秀Termから送られてきたファイルマッピングハンドルから共有メモリにアクセス
  618. するには、以下のようにMapViewOfFileを使います。
  619.  
  620.     LPSTR pb = (LPSTR)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
  621.  
  622.  参照が終わったら、UnmapViewOfFileでアンマップしてからさらにCloseHandleで
  623. ファイルマッピングハンドルをクローズしてください。
  624.  
  625. ●29.hideterm.iniを使ったホスト登録方法
  626.  
  627.  アドインアプリケーション側から秀Termにホストを登録したり、またはすでに
  628. 登録してあるホストのプロパティを書き換えたい場合には、レジストリを直接書き
  629. 換える方法の他、hideterm.iniを経由する方法があります。
  630.  
  631.  これを使うには、まず、秀Term側の「設定・動作環境」で、「HIDETERM.INIを作
  632. 成する」をonにしてください。
  633.  
  634.  アドインアプリケーション側からは、hideterm.iniの中のホスト登録情報を書き
  635. 換えたり、hideterm.iniに新しいホストを登録したりしてください。書き換える方
  636. 法は、秀Termがhideterm.iniを書き換える時と同じようにする必要があります。具
  637. 体的な方法は、16bit版の秀Termを使って実際にホストを登録してみたりして確認し
  638. てください。
  639.  
  640.  でもって、アドインアプリケーションがhideterm.iniを書き換えた場合、書き換
  641. えた(または新規に登録した)ホスト名を、hideterm.iniに[_NewHost]というセク
  642. ションを作成して、そこに登録してください。
  643.  
  644.  たとえば「巡回用ホスト」というホストを登録したり書き換えたりした場合、
  645.  
  646.  [_NewHost]
  647.  巡回用ホスト=1
  648.  
  649.  ってな具合に登録してください。キー名としてホスト名を指定し、値には適当な
  650. ものを指定すればいいです。
  651.  
  652.  このようにhideterm.iniを設定しておけば、次回秀Termが起動された時に自動的
  653. にそのホストが秀Term側に反映されるようになります。
  654.  
  655. */
  656. #endif
  657.