English help on website



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

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

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

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

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

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

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

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

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

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を実行中は秀丸エディタは凍り付いたような状態になります。

keepdde(文)
 keepddeを実行した後は、自動的にトランザクションを終了しないようになります。(V9.00以降)
 終了していない状態で、再びマクロを実行し、ddeinitiateで同じ文字列の場合はトランザクションの終了も開始もすることなく、前回のトランザクションを続行します。
 ddeinitiateが違う文字列の場合は、自動的に終了し、新しいトランザクションを開始するようになります。

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

参照:
findwindow
findwindowclass
sendmessage