DDE関連マクロ(Ver8.71対応版)
目次− DDE関連マクロ
 秀丸エディタには、DDEクライアントを実現するためのマクロの文や関数があります。
ddeinitiate $app, $topic(文)
 秀丸エディタをクライアントとするDDEトランザクションを開始します。$appがアプリケーション名で、$topicがトピック名です。

 ddeトランザクションは現在の秀丸エディタだけに有効です。nexthidemaru等でアクティブウィンドウを切り替えるとddeトランザクションは自動的に終了させられてしまいます。

 複数のDDEサーバと同時にトランザクションを開設することはできません。

 成功すると結果コード(result)がtrueになり、失敗するとfalseになります。

ddeterminate(文)
 ddeinitiateしたトランザクションを終了します。ddeterminateしなくても、マクロが終了したり、nexthidemaruなどでアクティブウィンドウが切り替わると自動的にDDEトランザクションは終了します。

ddeexecute $exec(文)
 DDEサーバにEXECUTEコマンドを送信します。

 成功すると結果コード(result)がtrueになり、失敗するとfalseになります。

ddepoke $item, $param(文)
 DDEサーバにデータを送ります。

 成功すると結果コード(result)がtrueになり、失敗するとfalseになります。

dderequest( $item ) 関数
 DDEの相手にデータを要求します。成功すると、受け取ったデータを返します。失敗するとマクロエラーとなってしまいます。
 返す値は文字列型です。

ddestartadvice $item, $name(文)
 DDEサーバとの間でアドバイスループを開始します。アドバイスループのアイテム名は$itemです。サーバ側からデータが渡されると、その値は$nameで指定される変数に格納されます。$nameの所には文字列型のグローバル変数名を指定する必要があります。

 アドバイスループは1つしか作ることができません。

ddestopadvice $item(文)
$itemのアドバイスループを終了させます。$itemはddestartadviceした時に指定したアイテム名を指定する必要があります。

ddewaitadvice $item, #timeout(文)
 DDEサーバから$itemのアドバイスデータが届くのを待ちます。#timeoutはタイムアウトで、ここで指定した時間を待ってもデータが届かない場合はデータを受け取らずにddewaitadviceを終了させます。

 タイムアウトの場合はresult==falseになり、ddestartadviceで指定した変数には何も格納されません。

 #timeoutの値はミリ秒単位で指定します。

 ddewaitadviceを実行中は秀丸エディタは凍り付いたような状態になります。

ddeinitiatew $app, $topic(文)
ddeexecutew $exec(文)
ddepokew $item, $param(文)
dderequestw( $item ) 関数
ddestartadvicew $item, $name(文)
ddestopadvicew $item(文)
ddewaitadvicew $item, #timeout(文)
 それぞれの文/関数のUnicode版です。(V8.56以降)

findwindow( $name, $class ) 関数
 $nameで指定される文字列と同じキャプションのウィンドウを探してそのウィンドウハンドルを返します。
 返す値は数値型です。見つからなかった場合は0となります。該当するウィンドウが複数見つかった場合でも、1つしか返しません。
 第二パラメータで、クラス名も同時に指定することができます。第二パラメータを省略すると、キャプションだけで探します。(V5.00以降)

findwindowclass( $name ) 関数
 $nameで指定される文字列と同じクラス名のウィンドウを探してそのウィンドウハンドルを返します。
 返す値は数値型です。見つからなかった場合は0となります。該当するウィンドウが複数見つかった場合でも、1つしか返しません。

sendmessage( #handle, #message, #wParam, #lParam ) 関数
 メッセージを送ります。送った先のウィンドウがメッセージボックスやダイアログボックスを出すとマウスが死んでしまうので注意してください。その他、使い方を誤るとWindowsを死なせてしまうこともあるので注意して下さい。

 メッセージの値やwParam、lParamの値については各自で調べてください。

 返す値は、Windows-APIのSendMessage関数の復帰値そのままで、数値型です。
例(WM_SYSCOMMAND SC_CLOSEを送る例)
#result = sendmessage( #handle, 0x0112, 0xF060, 0 );

戻る