Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

星期四, 8月 30, 2007

Delphi ShellExecute 執行外部程式


uses
ShellAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
// 「執行 notepad」
ShellExecute(Handle, nil, 'notepad', nil, nil, SW_SHOWNORMAL);
// 「打開 word 檔」
ShellExecute(Handle, 'oppen', 'C:\a.doc', nil, nil, SW_SHOWNORMAL);
// 「列印 excel 檔」
ShellExecute(Handle, 'print', 'C:\a.xls', nil, nil, SW_SHOWNORMAL);
// 「開網頁」
ShellExecute(Handle, nil, 'http://www.borland.com/', nil, nil, SW_SHOWNORMAL);
// 「寄信」
ShellExecute(Handle, nil, 'mailto:name@host.com?subject=主旨&body=內文', nil, nil, SW_SHOWNORMAL);
// 「我的電腦」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}', nil, nil, SW_NORMAL);
// 「網路上的芳鄰」
ShellExecute(0, 'open', '::{208D2C60-3AEA-1069-A2D7-08002B30309D}', nil, nil, SW_NORMAL);
// 「我的文件」
ShellExecute(0, 'open', '::{450D8FBA-AD25-11D0-98A8-0800361B1103}', nil, nil, SW_NORMAL);
// 「控制台」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}', nil, nil, SW_NORMAL);
// 「印表機」
ShellExecute(0, 'open', '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}', nil, nil, SW_NORMAL);
end;

end;



指令
WinExec(LPCSTR lpCmdLine,UINT uCmdShow);
lpCmdLine:指令執行字串
此應用程式必須可以執行
目錄及路徑必須正確
自己可以呼叫自己
被呼叫的程式為獨立的執行緒,和呼叫者無關
不可遠端呼叫

uCmdShow:執行模式
包括
SW_HIDE 將程式隱藏
SW_MAXIMIXE 將程式最大化
SW_MINIMIZE 將程式最小化
SW_SHOW 將程式顯示在正確位置
SW_SHOWDEFAULT 將程式顯示在預設位置
SW_SHOWMAXIMIZED 將程式顯示最大化
SW_SHOWMINIMIZED 將程式顯示最小化
SW_SHOWMINNOACTIVATE 將程式顯示最小化,但不Active
SW_SHOWNA 將程式顯示,但Active
SW_SHOWNOACTIVATE 將程式顯示,但不Active
SW_SHOWNORMAL 將程式顯示一般狀態

傳回值
>=31 成功
0 系統沒有記憶體資源
ERROR_BADFORMAT 此程式不是Wind32格式或不是執行檔
ERROR_FILE_NOT_FOUND 該檔案找不到
ERROR_PATH_NOT_FOUND 該路徑找不到

//呼叫計算機
WinExec('Calc.exe',SW_SHOWDEFAULT);
//呼叫命令提示字元
WinExec('Command.com',SW_SHOWDEFAULT);
//呼叫自己範例
WinExec('project1.exe',SW_SHOW);

沒有留言: