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