[轉]Delphi執行CMD命令

來源:互聯網
上載者:User

標籤:

 

今天看到有人在問用代碼執行CMD命令的問題,就總結一下用法,也算做個備忘。

Delphi中,執行命令或者運行一個程式有2個函數,一個是winexec,一個是shellexecute。這兩個大家應該都見過,其中,winexec比較簡單,可以直接運行一個外部程式,shellexecute則更進階一些,除了可以運行外部exe,還可以執行特殊命令。

下面我們就分別舉例子說明:我們先來看看運行一個exe程式,以記事本為例:

 

WinExec(PChar(‘ notepad .exe‘),SW_NORMAL);//正常模式開啟

WinExec(PChar(‘ notepad .exe‘),SW_HIDE);//隱藏方式開啟

WinExec(PChar(‘notepad.exe‘),SW_SHOWMAXIMIZED);//最大化方式開啟,軟體必須支援最大化運行,否則該參數無效,以NORMAL方式運行

WinExec(PChar(‘notepad.exe‘),SW_SHOWMINIMIZED);//最小化方式開啟

Shellexecute(handle,nil,‘notepad.exe‘,nil,nil,sw_normal);//這個是用shellexecute的方式開啟,注意最後一個參數,和上面一樣

 

使用Shellexecute注意需要uses ShellApi,上面的記事本,因為是在系統目錄下,所以可以直接寫notepad.exe檔案名稱,而不必寫路徑,如果是其他非環境變數中註冊的exe,則需要帶上絕對路徑或者相對路徑

好,上面是最簡單的,下面我們來說說帶參數的運行,大家知道,有些exe程式在啟動並執行時候可以附加參數,這裡以cmd為例說明

比如,我想運行ping命令,去執行ping 192.168.1.1

WinExec(PChar( ‘cmd.exe /c  ping 192.168.1.1‘),SW_SHOWNORMAL);

shellexecute(handle,nil,‘cmd.exe‘,pchar(‘/c ping 192.168.1.1‘),nil,sw_normal);

注意,cmd的命令需要是用/c表示帶參數運行,然後後面跟上具體命令,這樣就可以執行ping命令了。

上面的命令的確可以成功運行,但是有個缺點,那就是cmd在執行完畢後就會自動關閉視窗,如果有時候命令執行的過快,我們根本看不清結果,那麼,有什麼辦法可以讓cmd在執行完畢後不關閉視窗呢?答案是肯定的,我們需要一個額外的命令pause

 WinExec(PChar( ‘cmd.exe /c  ping 192.168.1.1 & pause‘),SW_SHOWNORMAL);

我們注意紅色部分,我們使用一個&符號和pause,pause是批處理中的暫停命令,&符號則表示可以執行多個命令,上面的例子就表明,在執行完ping命令後再執行pause命令,這樣,視窗就不會關閉了。shellexecute同樣支援該方法。

 

下面,我們看看shellexecute其他的一些方法:

開啟網頁:這個太簡單了,大家應該都知道

 ShellExecute(handle, ‘open‘, PChar(‘http://www.baidu.com‘), nil, nil, SW_SHOWNORMAL);//使用預設瀏覽器開啟baidu.com

 ShellExecute(handle, ‘open‘, ‘firefox.exe‘,PChar(‘http://www.baidu.com‘),nil, SW_SHOWNORMAL);//使用Firefox瀏覽器開啟baidu.com

 當然,shellexecute還支援在系統中註冊過的關聯命令。比如發郵件

ShellExecute(handle, ‘open‘,PChar(‘mailto:[email protected]‘),nil,nil, SW_SHOWNORMAL);

執行這句就可以開啟預設郵件用戶端給[email protected]發郵件了,如果我們想帶上主題和內容也很好辦:

 ShellExecute(handle, ‘open‘,PChar(‘mailto:[email protected]?subject=這是郵件主題&[email protected]&body=郵件內文‘),nil,nil, SW_SHOWNORMAL);

上面的就可以自動填寫主題,內容和抄送了,注意,中文需要編碼,否則可能出現亂碼。

[轉]Delphi執行CMD命令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.