程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用Delphi啟動和關閉外部應用程序

使用Delphi啟動和關閉外部應用程序

編輯:Delphi

Delphi與Windows平台緊密結合,編譯代碼快速高效。作為一種可視化的面向對象開發工具,Delphi可以幫助程序員更輕松、更快速地編寫各種Windows應用程序。而且通過編程可以方便地調用其它語言編寫的動態庫或應用程序,並在不需要時關閉這些外部程序。這一點對許多編程人員非常有用,例如,在采用Delphi進行軟件開發的同時,可能需要調用以前采用其它工具開發的應用程序,以免再次重新編寫代碼,或者需要調用Windows中的記事本和計算器等工具,以便在程序運行過程中記錄信息或進行計算等。

在Delphi中,通過調用一組API函數是可以比較輕松地完成上述要求的。下面本文將以一個實際的例子詳細地介紹一下實現外部應用程序啟動和關閉的具體方法和步驟:

1. 創建一個應用程序

在應用程序的窗體上添加兩個Tbutton組件和一個TopenDialog組件。設置其中一個Tbutton組件的Caption屬性為“啟動外部應用程序”、另一個Tbutton組件的Caption屬性為“關閉已開啟的外部應用程序”。設置TopenDialog組件的Filter屬性為“可執行文件(*.exe)|*.exe”。

2. 實現外部應用程序的啟動功能

⑴ 要啟動外部應用程序,可以通過調用API函數WinExec來實現。該函數用於運行指定的應用程序。下面介紹一下該函數所需的參數和返回值:

UINT WinExec(
LPCSTR lpCmdLine, file://命令行指針
UINT uCmdShow file://應用程序的窗口風格
);

如果成功,返回值大於31。否則可能返回下列結果:

0 系統內存或資源不足
ERROR_BAD_FORMAT 該*.EXE文件無效
ERROR_FILE_NOT_FOUND 沒找到指定的文件
ERROR_PATH_NOT_FOUND 沒找到指定路徑

⑵ 通過編寫標題為“啟動外部應用程序”組件的OnClick事件,來實現外部應用程序的啟動,代碼如下:

procedure TForm1.Button1Click(Sender: TObject);
var
str: string; file://存儲指定的應用程序文件名
begin
if opendialog1.Execute then file://選擇要調用的外部可執行程序
begin
str := opendialog1.FileName; file://獲取可執行文件名
winexec(PChar(str), SW_SHOWNORMAL); file://啟動指定的可執行程序
end;
end;

3. 關閉已開啟的外部應用程序

⑴ 通過調用兩個API函數,可以實現該功能。這兩個函數分別為:

① FindWindow函數 該函數用於查找與指定的類名和窗口名相匹配的高層窗口,如果查找成功,返回非0值,否則返回0。

② SendMessage函數 此函數向一個或多個窗口發送指定的消息。在此通過發送WM_CLOSE消息來關閉指定的外部應用程序。

⑵ 通過編寫標題為“關閉已開啟的外部應用程序”組件的OnClick事件,來關閉已開啟的外部應用程序。代碼如下:

procedure TForm1.Button2Click(Sender: TObject);
var
hWndClose: HWnd; file://存儲指定的外部應用程序窗口句柄
str: String; file://存儲指定的外部應用程序的窗口名
begin
str := InputBox('提示','請輸入應用程序名:',''); file://獲取要關閉的應用程序窗口名
if str <> '' then begin
file://根據窗口名查找要關閉的窗口句柄
hWndClose := FindWindow(nil, PChar(str));
if hWndClose <> 0 then file://如果查找成功,則發送消息,關閉指定的窗口
SendMessage(hWndClose,WM_CLOSE,0,0);
else file://否則,給出提示信息
ShowMessage('沒找到指定的應用程序,所以無法關閉!');
end;
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved