# DDE使用例

たとえば、秀丸のマクロ言語では以下のように記述します。
-------------------------------------------
ddeinitiate "dviout", "dviout";
ddeexecute "[FileExit]";
ddeexecute "[FileOpen(c:\document\foo.dvi)]";
ddeexecute "[FilePrint]";
message "Total Page:"+dderequest("total_page");
ddeterminate;
-------------------------------------------
これによって、c:\document\foo.dviファイルをオープンし、印刷ダイアログを表示します。印刷が終了すると、全ページ数を示すメッセージボックスが表示され、それを閉じるとDDE接続も終了し、dvioutが終了します。
-------------------------------------------
ddeinitiate "dviout", "dviout1";
if(!result) {
run "dviout ";
ddeinitiate "dviout", "dviout";
}else
$basefile = dderequest("dvifile");
if(strlen($basefile) < 1)
$basefile = leftstr(filename,strlen(filename)-3)+"dvi";
if(selecting)
$SrcWord = "/" + gettext(seltopx,seltopy,selendx,selendy);
else $SrcWord="";
ddeexecute "[PageOpen(# "+str(lineno)+$SrcWord+" '"+filename+"')]";
ddeexecute "[WinNormal]";
ddeexecute "[FileOpen("+$basefile+")]";
ddeterminate;
-------------------------------------------
source specials による dviout へのジャンプのためのもので、文字列（単語）を選択していると、それを使ってより正確なジャンプとなります。
基本のファイル foo.tex が
......
\input sub/foo1.tex
......
となっている場合、foo1.tex を秀丸で編集していて、作成された foo.dvi を dviout で表示している場合も正しい（相互）ジャンプができます。
編集中のファイルが foo.tex の場合、dviout が起動されていなくても正しいジャンプが可能です。