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);
varstr: 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);
varhwndclose: 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;
Delphi啟動外部程式
無論是用vc還是用delphi,啟動外部程式,呼叫的都是相同的系統中的api函式,如下delphi 所示 登入按鈕 procedure tform1.label loginclick sender tobject begin end delphi啟動其它程式函式 begin 使用winexec也可以...
delphi啟動外部程式執行結束
一 為什麼要啟動外部程式 二 預備知識 啟動外部程式我們可以使用函式winexec shellexecute和shellexecuteex。我推薦大家使用函式shellexecute,因為它既靈活,又簡單。看看下面的例子,用法就清楚了 啟動乙個程式 nil,nil,sw show 啟動記事本 因為記...
使用systemctl命令啟動和關閉mysql
以前都用service命令管理mysql,現在liunx系統公升級了,又有了新的更好的方法管理系統程序,現在我們來學習如何用systemctl命令管理mysql。systemctl是乙個systemd工具,主要負責控制systemd系統和服務管理器。systemd是乙個系統管理守護程序 工具和庫的集...