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 が起動されていなくても正しいジャンプが可能です。