delphi呼叫cmd的兩種方法

2021-09-30 03:24:17 字數 3895 閱讀 3037

delphi呼叫cmd的兩種方法

2023年10月01日 星期三 12:22

1

var

s:string;

begin

s:='cmd.exe /c '+edit1.text+' >c:/1.txt';

winexec(pchar(s),sw_hide);

sleep(2000);

memo1.lines.loadfromfile('c:/1.txt');

2

shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);

winexec主要執行exe檔案。如:winexec(』notepad.exe readme.txt』, sw_show);?

shellexecute不僅可以執行exe檔案,也可以執行已經關聯的檔案。

首先必須引用shellapi.pas單元:uses shellapi;?

1.標準用法?

shellexecute函式原型及引數含義如下:?

function shellexecute(hwnd: hwnd; operation, filename, parameters,directory: pchar; showcmd: integer): hinst; stdcall;?

●operation:用於指定要進行的操作。其中「open」操作表示執行由filename引數指定的程式,或開啟由filename引數指定的檔案或資料夾;「print」操作表示列印由filename引數指定的檔案;「explore」操作表示瀏覽由filename引數指定的資料夾。當引數設為nil時,表示執行預設操作「open」。?

●filename:用於指定要開啟的檔名、要執行的程式檔名或要瀏覽的資料夾名。?

●parameters:若filename引數是乙個可執行程式,則此引數指定命令列引數,否則此引數應為nil或pchar(0)。?

●directory:用於指定預設目錄。?

●showcmd:若filename引數是乙個可執行程式,則此引數指定程式視窗的初始顯示方式,否則此引數應設定為0。?

若shellexecute函式呼叫成功,則返回值為被執行程式的例項控制代碼。若返回值小於32,則表示出現錯誤。?

上述僅僅是shellexecute函式的標準用法,下面將介紹它的特殊用法。?

2.特殊用法?

如果將filename引數設定為「http:」協議格式,那麼該函式將開啟預設瀏覽器並鏈結到指定的url位址。若使用者機器中安裝了多個瀏覽器,則該函式將根據windows 9x/nt登錄檔中http協議處理程式(protocols handler)的設定確定啟動哪個瀏覽器。?

格式一:

http://**網域名稱。?

如:shellexecute(handle, 『open』,

格式二:

http://**網域名稱/網頁檔名。?

如:shellexecute(handle, 『open』,

如果將filename引數設定為「mailto:」協議格式,那麼該函式將啟動預設郵件客戶程式,如microsoft outlook(也包括microsoft outlook exdivss)或netscape messanger。若使用者機器中安裝了多個郵件客戶程式,則該函式將根據windows 9x/nt登錄檔中mailto協議處理程式的設定確定啟動哪個郵件客戶程式。?

格式一:mailto:?

如:shellexecute(handle,『open』, 『mailto:』, nil, nil, sw_shownormal);開啟新郵件視窗。?

如:shellexecute(handle, 『open』,『 mailto:[email protected]』, nil, nil, sw_shownormal);開啟新郵件視窗,並自動填入收件人位址。若指定多個收件人位址,則收件人位址之間必須用分號或逗號分隔開(下同)。?

如:shellexecute(handle, 『open』, 『 mailto:[email protected]?subject=hello&body=this is a test』, nil, nil, sw_shownormal);開啟新郵件視窗,並自動填入收件人位址、郵件主題和郵件正文。若郵件正文包括多行文字,則必須在每行文字之間加入換行轉義字元%0a。?

例子( delphi):?

在乙個應用程式呼叫c:project1.exe;?

shellexecute(handle, 』open』,』c:project1.exe』,』字串內容』,nil, sw_shownormal);?

在project1.exe裡可以呼叫:?

procedure tform1.formcreate(sender: tobject);?

var i:integer;?

begin?

for i:=1 to paramcount do?

if paramstr(i)〈〉』』 then showmessage(paramstr(i));?

end;

最後的那個引數,為視窗指定可視性方面的乙個命令。?

請用下述任何乙個常數?

sw_hide 隱藏視窗,活動狀態給令乙個視窗?

sw_minimize 最小化視窗,活動狀態給令乙個視窗?

sw_restore 用原來的大小和位置顯示乙個視窗,同時令其進入活動狀態?

sw_show 用當前的大小和位置顯示乙個視窗,同時令其進入活動狀態?

sw_showmaximized 最大化視窗,並將其啟用?

sw_showminimized 最小化視窗,並將其啟用?

sw_showminnoactive 最小化乙個視窗,同時不改變活動視窗?

sw_showna 用當前的大小和位置顯示乙個視窗,不改變活動視窗?

sw_shownoactivate 用最近的大小和位置顯示乙個視窗,同時不改變活動視窗?

sw_shownormal 與sw_restore相同》最近想用

delphi做乙個apache+mysql的整合環境用到以下一些知識

>

>

delphi呼叫cmd檔案用這個函式

>

>winexec()函式

>

>例:我要呼叫'e:/call.cmd這個檔案

>

>winexec('e:/call.cmd',sw_hide);

>

>sw_show表示以當前大小啟用執行後的程式視窗並顯示它。

>

>

>正在裝載資料……

>

>

>第二個引數是控制程式主視窗的顯示方式

>第二個引數可能的取值為 :

>sw_hide //程式啟動後隱藏主視窗

>sw_maximize //最大化執行

>sw_minimize //最小化執行

>sw_restore //將最大化或最小化的視窗恢復正常

>sw_show //以當前位置和大小顯示主視窗

>sw_showmaximized //啟用視窗並以最大化執行

>sw_showminimized //啟用視窗並以最小化執行

>sw_showminnoactive //最小化執行,但不啟用

>sw_shownoactivate //以上一次的視窗大小執行,但不啟用

>sw_shownormal //普通方式,一般執行時採用這個?有三個api函式可以執行可執行檔案winexec、shellexecute和createprocess。createprocess因為使用複雜,比較少用。?

delphi 呼叫dll兩種方式

1 外部宣告 在delphi中外部宣告是訪問外部例程最容易和最常用的方式,有兩種宣告方式 通過名字 通過索引號。舉例如下 在mydll.dll中有兩個函式和乙個過程,則其外部宣告可以寫成 function test1 integer external mydll 直接通過名稱呼叫test1 注意名稱...

C 中呼叫cmd兩種方式

兩種方式各有優缺,第一種方式不用exit,返回值中比較好處理,第二種方式對長 多 雜的命令支援比第一種好。在實際程式設計中根據具體的情況合理的選用,增加程式設計效率。第一種 public static string runcmd string command 第二種 public static st...

確保呼叫物件的Dispose 方法的兩種方式

在 執行結束之前釋放資源是很重要的,一般的資源物件都有dispose 方法 有些物件是close 方法 來完成釋放資源的功能,c 中有兩種方式能確保此方式能正確的呼叫,一種是通過try finally 實現,一種是通過using實現。下面通過sqlconnection conn物件來說明。1 通過t...