在PB7.0中應用DDE技術一例

在PB7.0中應用DDE技術一例

    在使用PowerBuilder7.0開發用戶自己的應用程序時,需要用到一些在Windows操作系統環境中已有的文件格式或操作功能,如果一切從頭開始,不僅浪費大量的時間和精力,而且完成的功能也沒有Windows中已有的完善。如何利用Windows中已有的大量的應用程序和應用程序開發組件呢?Windows提供了兩種用於應用程序繼承的方法:DDE和OLE。

    DDE(動態數據交換)在Windows操作系統是一種基於消息的協議,用來在不同的應用程序之間交換信息。在PowerBuilder中不僅提供了一套用來包裝Windows函數的DDE函數,而且提供了一種易於實現的接口。

    下面以在PowerBuilder7.0下開發的應用程序中調用Microsoft Word編輯文本文件爲例說明如何調用Windows中的應用程序:

    在PowerBuilder7.0中利用DDE的方法調用Windows程序相當於把Windows看成服務器,而把在PowerBuilder7.0下開發的應用程序看成客戶機,在客戶機中調用服務器程序可用Run函數。該函數的語法爲:

Run ( string {, windowstate } )

    其中string是被調用的應用程序,其中還可以包含被調用的應用程序運行所需的參數;windowstate爲可選項,表示被調用的應用程序的啓動狀態,可取值有:Maximized!(最大化),Minimized!(最小化)和Normal!(正常)。

如果該函數執行成功則返回1,執行失敗則返回-1,如果賦給該函數的參數爲NULL,則返回NULL。

使用OpenChannel函數在兩個應用程序之間建立連接。該函數的語法爲:

OpenChannel ( applname, topicname {, windowhandle } )

其中applname表示被調用的應用程序名。topicname表示被調用的應用程序的主題名,如在Microsoft Word中可以取值爲已打開的文檔名。windowhandle爲可選項,表示被調用的應用程序的窗口句柄。

如果該函數執行成功則返回建立的通道的句柄,執行失敗則返回-1,如果通道句柄爲NULL,則返回-9。

下面是調用Microsoft Word的代碼,如果安裝了Microsoft Word,則運行winword.exe,否則運行notepad.exe:

int vi_rtn

string vs_prog,vs_path

// 從註冊表中獲取Microsoft Word的安裝路徑,保存在vs_path中

RegistryGet("HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/App Paths/Winword.exe","Path",RegString!,vs_path)

//判斷是否安裝了Microsoft Word

if vs_path<>"" then

// vs_prog保存winword的有關參數

//如果被調用的應用程序有運行參數,參數和應用程序名之間要有空格

      vs_prog = vs_path+"winword.exe"

//啓動winword

      vi_rtn = run(vs_prog,normal!)

  if vi_rtn = -1 then

        MessageBox("錯誤","無法運行程序!")

     return

  else

//建立通道

        OpenChannel("winword","c:/my documents/example.doc")

  end if

else

   vs_prog = "c:/windows/notepad.exe"

      vi_rtn = run(vs_prog,normal!)

  if vi_rtn = -1 then

        MessageBox("錯誤","無法運行程序!")

     return

  else

        OpenChannel("notepad","c:/my documents/example.txt")

  end if

end if

    用類似的方法就能在用PowerBuilder7.0開發的用戶自己的應用程序中調用Windows系統中包含的大量應用程序,能夠大大提高用戶開發的效率,提升所開發的應用程序的性能。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章