电竞比分网-中国电竞赛事及体育赛事平台

分享

ShellExecute的各種用法

 Alkaid2015 2017-12-21

一、利用系統(tǒng)默認的郵件收發(fā)器發(fā)送電子郵件
Uses
..., ShellAPI;
Var
lpHwnd: HWND;
lpOperation, lpFile, lpParameters, lpDirectory: String;
Begin
lpHwnd:= GetDesktopWindow();
lpOperation:= 'open';
lpFile:= 'mailto:' + 'Maple119@263.net' + '?' //主郵件地址後以'?'結(jié)束
+ '&cc=' + 'balaba960808@163.com' //抄送
+ '&bcc=' + 'lyf.kibosoft.com' //暗送
+ '&subject=' + '主題'
+ '&body='+ '第一行內(nèi)容' + '%0d' + '第二行內(nèi)容' //主題內(nèi)容以 '%0d' 轉(zhuǎn)行
+ '&File=' + 'D:\Help.rtf'; //附件只對 Outlook Express 有效
lpParameters:= '';
lpDirectory:= '';
ShellExecute(lpHwnd, pChar(lpOperation),
pChar(lpFile), pChar(lpParameters),
pChar(lpDirectory), SW_SHOWNORMAL);
End;
二、打開一個網(wǎng)頁
ShellExecute(0, 'open', 'http://www.google.com', '', '', SW_SHOWNORMAL);
三、打印文檔
ShellExecute(0, 'print', 'D:\Help.rtf', '', '', SW_SHOWNORMAL)
四、利用系統(tǒng)默認的程序打開指定的文件
ShellExecute(0, 'open', 'D:\Help.rtf', '', '', SW_SHOWNORMAL))
五、用指定的程序打開指定的文件
ShellExecute(0, 'open', 'notepad.exe', 'D:\Help.rtf', '', SW_SHOWNORMAL)
六、執(zhí)行快捷方式(.LNK)
ShellExecute(handle,'open','c:\windows\desktop\aaa.lnk','', '', sw_hide); 

WinExec主要運行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW);
ShellExecute不僅可以運行EXE文件,也可以運行已經(jīng)關(guān)聯(lián)的文件。
首先必須引用shellapi.pas單元:uses ShellAPI;

1.標準用法
ShellExecute函數(shù)原型及參數(shù)含義如下:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;
●hWnd:用於指定父窗口句柄。當函數(shù)調(diào)用過程出現(xiàn)錯誤時,它將作為Windows消息窗口的父窗口。例如,可以將其設(shè)置為應(yīng)用程序主窗口句柄,即Application.Handle,也可以將其設(shè)置為桌面窗口句柄(用GetDesktopWindow函數(shù)獲得)。
●Operation:用於指定要進行的操作。其中“open”操作表示執(zhí)行由FileName參數(shù)指定的程序,或打開由FileName參數(shù)指定的文件或文件夾;“print”操作表示打印由FileName參數(shù)指定的文件;“explore”操作表示瀏覽由FileName參數(shù)指定的文件夾。當參數(shù)設(shè)為nil時,表示執(zhí)行默認操作“open”。
●FileName:用於指定要打開的文件名、要執(zhí)行的程序文件名或要瀏覽的文件夾名。
●Parameters:若FileName參數(shù)是一個可執(zhí)行程序,則此參數(shù)指定命令行參數(shù),否則此參數(shù)應(yīng)為nil或PChar(0)。
●Directory:用於指定默認目錄。
●ShowCmd:若FileName參數(shù)是一個可執(zhí)行程序,則此參數(shù)指定程序窗口的初始顯示方式,否則此參數(shù)應(yīng)設(shè)置為0。
若ShellExecute函數(shù)調(diào)用成功,則返回值為被執(zhí)行程序的實例句柄。若返回值小於32,則表示出現(xiàn)錯誤。
上述僅僅是ShellExecute函數(shù)的標準用法,下面將介紹它的特殊用法。

2.特殊用法
如果將FileName參數(shù)設(shè)置為“http:”協(xié)議格式,那麼該函數(shù)將打開默認瀏覽器並鏈接到指定的URL地址。若用戶機器中安裝了多個瀏覽器,則該函數(shù)將根據(jù)Windows 9x/NT注冊表中http協(xié)議處理程序(Protocols Handler)的設(shè)置確定啟動哪個瀏覽器。
格式一:http://網(wǎng)站域名。
如:ShellExecute(handle, ‘open’, http:// ;
www.neu.edu.cn’, nil, nil, SW_SHOWNORMAL);
格式二:http://網(wǎng)站域名/網(wǎng)頁文件名。
如:ShellExecute(handle, ‘open’, http:// ;
, SW_SHOWNORMAL);
如果將FileName參數(shù)設(shè)置為“mailto:”協(xié)議格式,那麼該函數(shù)將啟動默認郵件客戶程序,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape Messanger。若用戶機器中安裝了多個郵件客戶程序,則該函數(shù)將根據(jù)Windows 9x/NT注冊表中mailto協(xié)議處理程序的設(shè)置確定啟動哪個郵件客戶程序。
格式一:mailto:
如:ShellExecute(handle,‘open’, ‘mailto:’, nil, nil, SW_SHOWNORMAL);打開新郵件窗口。
格式二:mailto:用戶賬號@郵件服務(wù)器地址
如:ShellExecute(handle, ‘open’,‘
, nil, nil, SW_SHOWNORMAL);打開新郵件窗口,並自動填入收件人地址。若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。
格式三:mailto:用戶賬號@郵件服務(wù)器地址?subject=郵件主題&body=郵件正文
如:ShellExecute(handle, ‘open’, ‘
?subject=Hello&Body=This is a test’, nil, nil, SW_SHOWNORMAL);打開新郵件窗口,並自動填入收件人地址、郵件主題和郵件正文。若郵件正文包括多行文本,則必須在每行文本之間加入換行轉(zhuǎn)義字符%0a。
例子(delphi):
在一個應(yīng)用程序調(diào)用c:Project1.exe;
ShellExecute(handle, ’open’,’c:Project1.exe’,’字串內(nèi)容’,nil, SW_SHOWNORMAL);
在Project1.exe裡可以調(diào)用:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to paramcount do
if ParamStr(i)〈〉’’ then showmessage(ParamStr(i));
end;

最後的那個參數(shù),為窗口指定可視性方面的一個命令。
請用下述任何一個常數(shù)
SW_HIDE 隱藏窗口,活動狀態(tài)給令一個窗口
SW_MINIMIZE 最小化窗口,活動狀態(tài)給令一個窗口
SW_RESTORE 用原來的大小和位置顯示一個窗口,同時令其進入活動狀態(tài)
SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態(tài)
SW_SHOWMAXIMIZED 最大化窗口,並將其激活
SW_SHOWMINIMIZED 最小化窗口,並將其激活
SW_SHOWMINNOACTIVE 最小化一個窗口,同時不改變活動窗口
SW_SHOWNA 用當前的大小和位置顯示一個窗口,不改變活動窗口
SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個窗口,同時不改變活動窗口
SW_SHOWNORMAL 與SW_RESTORE相同

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多