7.3.5 控制服務器應用程序的執行
客戶程序控制服務器應用程序的一個方面是:必要的時候客戶程序可以啟動服務器程序,並裝載會話主題。
而客戶程序控制服務器應用程序更重要的一點是向服務器發送服務器承認的宏命令,來完成對服務器應用程序的各種操作。服務器到底支持哪些宏命令,可參閱服務器應用程序文檔。
發送宏命令要使用DDEClIEntConv的兩個方法 ExecuteMacro和ExecuteMacroLines ,它們的語法如下:
function ExecuteMacro(Cmd: PChar; WaitFlag: Boolean): Boolean;
function ExecuteMacroLines(Cmd: TStrings;WaitFlag: Boolean): Boolean;
Cmd是欲發送的宏命令字符串或宏命令字符串鏈表。WaitFlag決定了在DDE 服務器程序執行宏命令時客戶程序的行為。如果WaitFlag設置為True,則在服務器宏命令執行完畢前,不允許對ExecuteMacro、ExecuteMacroLines、PokeData、PokeDataLines這些方法的成功調用,它們都不向服務器發送數據並返回False。如果WaitFlag設置為False,則調用的方法在第一個宏執行完畢前即試圖向服務器發送數據。
WaitFalg的設置也取決於服務器應用程序。一些應用程序當在第一個宏執行完之前就試圖向它發送數據或命令時,可能導致第一個宏執行失敗或導致不可預料的後果。具體情況可查閱服務器應用程序文檔。
函數返回值表示命令串是否被成功傳輸。而宏命令執行是否成功客戶是無法檢測到的。
7.3.6 格式化文本
DDEClIEntConv有一個布爾屬性FormartChars,用於決定是否格式化文本。所謂格式化文本是指從傳輸來的文本數據中過濾掉BackSpace(8)、 Tab(7) 、Linefeed(10) 、Return(13)等字符。括號內是字符的ASCII碼。許多時候這些字符將導致DDE客戶數據顯示的混亂。
FormatChars的缺省值是False。
7.3.7 響應DDE事件
部件DDEClIEntConv有兩個事件OnOpen和OnClose,分別在DDE 會話建立和中止時觸發。部件DDEClIEntItem有一個OnChange事件。這一事件常用於DDE項目數據的轉儲和顯示,如(7.3.1)節所示。
在自動模式下,OnOpen事件在包含DDEClIEntConv部件的窗口創建時觸發,或在調用SetLink方法時觸發,OnClose事件在客戶程序或服務器程序關閉時觸發。
在人工模式下,OnOpen事件在調用OpenLink 方法時觸