1、WinExec():
WinExec主要運行EXE文件,不能運行其他類型的文件,不用引用特別單元。原型是:
UINT WinExec(exePath,ShowCmd)
參數說明:
--xePath:命令行參數。注意,要用pChar轉化一下。
--ShowCmd:外部程序的運行方式。其取值如下:
----SW_HIDE 隱藏
----SW_MAXIMIZE 最大化
----SW_MINIMIZE 最小化,並把Z order順序在此窗口之後(即窗口下一層)的窗口激活
----SW_RESTORE 激活窗口並還原爲初始化大小 SW_SHOW 以當前大小和狀態激活窗口
----SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態
----SW_SHOWDEFAULT 以默認方式運行
----SW_SHOWMAXIMIZED 激活窗口並最大化
----SW_SHOWMINIMIZED 激活窗口並最小化
----SW_SHOWMINNOACTIVE 最小化但不改變當前激活的窗口
----SW_SHOWNA 以當前狀態顯示窗口但不改變當前激活的窗口
----SW_SHOWNOACTIVATE 以初始化大小顯示窗口但不改變當前激活的窗口
----SW_SHOWNORMAL 激活並顯示窗口,如果是最大(小)化,窗口將會還原。第一次運行程序 時應該使用這個值
如果調用成功,這個函數會返回一個不小於31的值,否則調用失敗,其返回值的意義如下:
--0 系統內存或資源不足
--ERROR_BAD_FORMAT .EXE文件格式無效(比如不是32位應用程序)
--ERROR_FILE_NOT_FOUND 指定的文件設有找到
--ERROR_PATH_NOT_FOUND 指定的路徑沒有找到
示例,我想要用記事本打開"C:\HDC.TXT",以正常方式運行:
WinExec(pChar('notepad.exe C:\HDC.TXT'),SW_SHOWNORMAL);
這個函數和system()非常類似,只能運行.EXE文件,這樣在WINDOWS中有它不盡人意的地方,比如不能用此方法通過關聯的方法打開文件,例如WinExec("1.html",SW_SHOWNA);就不能打開此文檔。
2、ShellExecute() :
不僅可以運行EXE文件,也可以運行系統已經關聯的文件。這個函數和WIN9X中的命令行命令"start"類似,不僅可以對文件進行操作,還可以對HTTP、MAILTO等進行操作。這樣我們可以設計有超級鏈接風格的程序了。ShellExecute的功能要強得多,並且可以完全替代WinExec(),事實上,WinExec()也是爲了和以前版本兼容而保留,所以,我們要儘量使用ShellExecute()。
首先必須引用shellapi.pas單元:uses ShellAPI; 函數原型:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;
參數含義如下:
--hWnd:用於指定父窗口句柄。當函數調用過程出現錯誤時,它將作爲Windows消息窗口的父窗口。例如,可以將其設置爲應用程序主窗口
句柄,即Application.Handle,也可以將其設置爲桌面窗口句柄(用GetDesktopWindow函數獲得)。
--Operation:用於指定要進行的操作。
----open:操作表示執行由FileName參數指定的程序,或打開由FileName參數指定的文件或文件夾;
----print:操作表示打印由FileName參數指定的文件;
----explore:操作表示瀏覽由FileName參數指定的文件夾。
----爲nil時,表示執行默認操作“open”。
--FileName:用於指定要打開的文件名、要執行的程序文件名或要瀏覽的文件夾名。
--Parameters:若FileName參數是一個可執行程序,則此參數指定命令行參數,否則此參數應爲nil或PChar(0)。
--Directory:用於指定默認目錄。
--ShowCmd:若FileName參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置爲0。
----SW_HIDE 隱藏
----SW_MAXIMIZE 最大化
----SW_MINIMIZE 最小化,並把Z order順序在此窗口之後(即窗口下一層)的窗口激活
----SW_RESTORE 激活窗口並還原爲初始化大小 SW_SHOW 以當前大小和狀態激活窗口
----SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態
----SW_SHOWDEFAULT 以默認方式運行
----SW_SHOWMAXIMIZED 激活窗口並最大化
----SW_SHOWMINIMIZED 激活窗口並最小化
----SW_SHOWMINNOACTIVE 最小化但不改變當前激活的窗口
----SW_SHOWNA 以當前狀態顯示窗口但不改變當前激活的窗口
----SW_SHOWNOACTIVATE 以初始化大小顯示窗口但不改變當前激活的窗口
----SW_SHOWNORMAL 激活並顯示窗口,如果是最大(小)化,窗口將會還原。第一次運行程序 時應該使用這個值
若ShellExecute函數調用成功,則返回值爲被執行程序的實例句柄。若返回值小於32,則表示出現錯誤。 剛纔的例子:
WinExec(pChar('notepad.exe C:\HDC.TXT'),SW_SHOWNORMAL);
就可以改變爲(假設窗口的句柄爲Handle)
ShellExecute(Handle,'open','notepad','c:\taoyoyo.txt','',SW_SHOWNORMAL);
此外,還可以不用那麼複雜,因爲.TXT的關聯程序就是記事本,所以只要這樣就可以了:
ShellExecute(Handle,'','c:\taoyoyo.txt','','',SW_SHOWNORMAL);
整理自:https://www.cnblogs.com/semth/p/10494685.html