1. 程式人生 > >ShellExecute 的使用方法總結

ShellExecute 的使用方法總結

今天來總結一下ShellExecute API  在VC++中程式設計的使用方法:

一、ShellExecute 的基本介紹

ShellExecute的功能是執行一個外部程式(或者是開啟一個已註冊的檔案、開啟一個目錄、列印一個檔案等等),並對外部程式有一定的控制。有幾個API函式都可以實現這些功能,如(),但是在大多數情況下ShellExecute是更多的被使用的,因為該函式的使用方法簡單易用。

二、 ShellExecute 函式的原型

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

  ShellExecute(   hWnd: HWND; {指定父視窗控制代碼, 一般為NULL就可以了}
  Operation: PChar; {指定動作, 譬如: open、print}   FileName: PChar; {指定要開啟的檔案或程式}   Parameters: PChar; {給要開啟的程式指定引數; 如果開啟的是檔案這裡應該是 NULL}   Directory: PChar; {預設目錄, 一般為NULL就可以了}   ShowCmd: Integer {開啟選項}   ):

    返回值: HINST; {執行成功會返回應用程式控制代碼; 如果這個值 <= 32, 表示執行錯誤}

  返回值可能的錯誤有如下數值:

  ERROR_FILE_NOT_FOUND = 2; {檔名錯誤}
  ERROR_PATH_NOT_FOUND = 3; {路徑名錯誤}   ERROR_BAD_FORMAT = 11; {EXE 檔案無效}   SE_ERR_SHARE = 26; {發生共享錯誤}   SE_ERR_ASSOCINCOMPLETE = 27; {檔名不完全或無效}   SE_ERR_DDETIMEOUT = 28; {超時}   SE_ERR_DDEFAIL = 29; {DDE 事務失敗}   SE_ERR_DDEBUSY = 30; {正在處理其他 DDE 事務而不能完成該 DDE 事務}   SE_ERR_NOASSOC = 31; {沒有相關聯的應用程式}

  //ShowCmd 引數可選值:SW_HIDE = 0; {隱藏}

  SW_SHOWNORMAL = 1; {用最近的大小和位置顯示, 啟用}   SW_NORMAL = 1; {同 SW_SHOWNORMAL}   SW_SHOWMINIMIZED = 2; {最小化, 啟用}   SW_SHOWMAXIMIZED = 3; {最大化, 啟用}   SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}   SW_SHOWNOACTIVATE = 4; {用最近的大小和位置顯示, 不啟用}   SW_SHOW = 5; {同 SW_SHOWNORMAL}   SW_MINIMIZE = 6; {最小化, 不啟用}   SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}   SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}   SW_RESTORE = 9; {同 SW_SHOWNORMAL}   SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}   SW_MAX = 10; {同 SW_SHOWNORMAL}

三、 一般使用舉例

  //呼叫計算器

  ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);   //呼叫記事本   ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL);   ●hWnd:用於指定父視窗控制代碼。當函式呼叫過程出現錯誤時,它將作為Windows訊息視窗的父視窗。例如,可以將其設定為應用程式主視窗控制代碼,即Application.Handle,也可以將其設定為桌面視窗控制代碼(用GetDesktopWindow函式獲得)。   ●Operation:用於指定要進行的操作。其中“open”操作表示執行由FileName引數指定的程式,或開啟由FileName引數指定的檔案或資料夾;“print”操作表示列印由FileName引數指定的檔案;“explore”操作表示瀏覽由FileName引數指定的資料夾。當引數設為NULL時,表示執行預設操作“open”。   ●FileName:用於指定要開啟的檔名、要執行的程式檔名或要瀏覽的資料夾名。   ●Parameters:若FileName引數是一個可執行程式,則此引數指定命令列引數,否則此引數應為NULL。   ●Directory:用於指定預設目錄。   ●ShowCmd:若FileName引數是一個可執行程式,則此引數指定程式視窗的初始顯示方式,否則此引數應設定為0。   若ShellExecute函式呼叫成功,則返回值為被執行程式的例項控制代碼。若返回值小於32,則表示出現錯誤。

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

如果將FileName引數設定為“http:”協議格式,那麼該函式將開啟預設瀏覽器並連結到指定的URL地址。若使用者機器中安裝了多個瀏覽器,則該函式將根據Windows 9x/NT登錄檔中http協議處理程式(Protocols Handler)的設定確定啟動哪個瀏覽器。

格式一:http://網站域名。為了相容寬字元和UNICODE,下面的字串加入了_T()

  如:ShellExecute(NULL, _T("open"), _T("http:\\www.baidu.com"), NULL, NULL, SW_SHOWNORMAL);

格式二:http://網站域名/網頁檔名。

  如:ShellExecute(Handle, _T("open"), _T("http://tieba.baidu.com/home/main?id=b51073756e353173756ecd06&fr=userbar"),NULL,NULL,SW_SHOWNORMAL);   如果將FileName引數設定為“mailto:”協議格式,那麼該函式將啟動預設郵件客戶程式,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape Messanger。若使用者機器中安裝了多個郵件客戶程式,則該函式將根據Windows 9x/NT登錄檔中mailto協議處理程式的設定確定啟動哪個郵件客戶程式。

注意如果支援UNICODE編碼的話,要加上_T()

格式一:mailto:

  如:ShellExecute(Handle,"open", "mailto:", NULL, NULL, SW_SHOWNORMAL);開啟新郵件視窗。

格式二:mailto:使用者賬號@郵件伺服器地址

  如:ShellExecute(Handle, "open"," mailto:[email protected]", NULL, NULL, SW_SHOWNORMAL);開啟新郵件視窗,並自動填入收件人地址。若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。

格式三:mailto:使用者賬號@郵件伺服器地址?

 subject=郵件主題&body=郵件正文   如: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相同

相關推薦

ShellExecute 的使用方法總結

今天來總結一下ShellExecute API  在VC++中程式設計的使用方法: 一、ShellExecute 的基本介紹 ShellExecute的功能是執行一個外部程式(或者是開啟一個已註冊的檔案、開啟一個目錄、列印一個檔案等等),並對外部程式有一定的控制。有幾個AP

javascript字符串方法總結

大小寫 comm 其他 tolower 匹配 一行 ror 運算 轉換 一、單引號字符串內部可以使用雙引號,雙引號字符串內部也可以使用單引號 "hello ‘world‘" ‘welcome "to" js‘ 二、多行和轉義 如果要在單引號字符串的內部,使用單引號(或者

web測試中的測試點和測試方法總結

動態 小數 圖片尺寸 提示信息 方便 margin style 容錯性 字符型 測試是一種思維,包括情感思維和智力思維,情感思維主要體現在一句俗語:思想決定行動上(要懷疑一切),智力思維主要體現在測試用例的設計上。具有了這樣的思想,就會找出更多的bug。 一、輸入框

C# Winform 跨線程更新UI控件常用方法總結(轉)

sum tex ase adc 而是 this obj 出現 turn 出處:http://www.tuicool.com/articles/FNzURb 概述 C#Winform編程中,跨線程直接更新UI控件的做法是不正確的,會時常出現“線程間操作無效: 從不是創建控件的

ECMAScript面向對象(二)——之創建對象方法總結

擴展 console 動態 原型 struct 私有屬性 true asc 一份 創建對象的方法 工廠模式 缺點:無法識別對象的類型,因為根本沒有定義新的對象類型 // 工廠模式創建對象 //定義 function createPerson(name,age,

day2 字符串常用方法總結

mes 一個 並且 lun int() join() eba false 換行符 字符串在Python中是常用的功能,我們知道,字符串在Python中存儲的形式是以字符數組的形式存在,比如"alex"在內存中的存儲形式是:["a","l","e","x"],因為我們

zabbix   監控平臺搭建過程中的報錯與解決方法總結

監控 zabbix 運維自動化1.php option post_max_size 2.php option max_execution_time 3.php option max_input_time 4.php time zone 5.php bcm

C# 各種導出的方法總結

src view str inf object ret temp ksh 驅動程序 第一種:使用 Microsoft.Office.Interop.Excel.dll 首先需要安裝 office 的 excel,然後再找到 Microsoft.Office.Interop.

python os模塊功能和方法總結

isp 通用 工作 相同 使用 結束 所有 erro 大量 1 os.sep 可以取代操作系統特定的路徑分割符 2 os.linesep 字符串給出當前平臺使用的行終止符。例如,Windows使用‘\r\n‘,Linux使用‘\n‘ 而Mac使用‘\r‘。

display:inline-block; 去除間隙的方法 總結

remove col rdp 設備 狀態 zha targe style div 個人常用: 如: <ul> <li><a href="#" >實時數據</a></li> <li>&l

C#把datetime類型的日期轉化成年月日或其他格式方法總結

localtime ash diff time() com color 月份 大小 -s 日期格式:yyyyMMdd HH:mm:ss(註意此字符串的字母大小寫很嚴格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小時(24小時制) mm:

shell 輸出100個+方法總結

shell 輸出100個+方法總結python -c "print(‘+‘*100)"head -c 100 /dev/zero |awk ‘gsub(/./,"+")‘perl -le "print(q(+)x100)"println("+"*100)輸出50個=的方法echo "" | sed ‘:a;

接口、抽象類、抽象方法、虛方法總結

blog 方法 實例 類名 class 訪問修飾符 檢查 spa code 一、接口   1、定義     1.1、訪問修飾符 interface 接口名{成員可以為屬性、方法、事件、索引器}     1.2、示例代碼     public delegate void D

C# 各種導入 Excel 文件的數據的方法總結

占用 guid 保存 null amp nbsp 字符串 count str 在導入之前都需要將上傳的文件保存到服務器,所以避免重復的寫這些代碼,先貼出上傳文件並保存到服務器指定路徑的代碼。 protected void btnImport_Click(object s

數組去重的方法總結

doctype 是否 bsp cti fun [0 logs war href <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

計算兩張圖片相似度的方法總結

title rac 相似度 無法 tween hive any 明顯 embed python工具包-pyssim 簡介 python工具包,用來計算圖像之間的結構相似性 (Structural Similarity Image Metric: SSIM)。結構相似性介紹

JQuery控制radio選中和不選中方法總結

use 獲取 class rop als trade val pro put 一、設置選中方法 代碼如下: $("input[name=‘名字‘]").get(0).checked=true; $("input[name=‘名字‘]").attr(‘checked‘,

C#將Word轉換成PDF方法總結(基於Office和WPS兩種方案)

path ebs htm soft off ros exc 標題 總結  有時候,我們需要在線上預覽word文檔,當然我們可以用NPOI抽出Word中的文字和表格,然後顯示到網頁上面,但是這樣會丟失掉Word中原有的格式和圖片。一個比較好的辦法就是將word轉換成pdf,然

遠程桌面連接MySQL遇到的問題及解決方法總結

許可授權 fire ble 連接 配置 image iptable 問題 分享 背景提要:想用Delphi做一個可以連接Mysql數據庫的桌面應用程序。其中遇到了一些讓自己很苦惱的問題。因為自己是新手,Delphi用的不熟,FireDAC這個連接數據庫裏控件更是沒有接觸

Java中獲取資源文件的方法總結

tco doget 技術 resource images 磁盤 response linux exception 這裏總結3中方法獲取資源文件的 ServletContext Class ClassLoader 文件的位置 1. ServletC