Windows API —— ShellExcute——打開文件
?
函數原型:
1?????HINSTANCE?ShellExecute(?????????? 2?????????HWND?hwnd,//指向父窗口的窗口句柄。此窗口接收應用程序產生的任何信息框 3?????????LPCTSTR?lpOperation,//要執(zhí)行的操作 4?????????LPCTSTR?lpFile,//要打開或打印的文件或者是要打開或搜索的文件夾。? 5?????????LPCTSTR?lpParameters,//如果是exe文件表示傳遞給他的參數 6?????????LPCTSTR?lpDirectory,//默認目錄,當文件路徑問相對路徑時,如果不再當前目錄則需要指定默認目錄 7?????????INT?nShowCmd//顯示方式 8?????????);
?
?
lpOperation:
?1??edit ?2?啟動編輯器打開文檔 ?3??explore ?4??搜索由參數lpFile指定的文件夾,此文件應是一個文檔文件,? ?5??find ?6??Initiates?a?search?beginning?in?the?directory?specified?by?lpDirectory. ?7??open ?8??此函數打開由參數lpFile指定的文件,此文件可以是一個可執(zhí)行文件或文檔文件,也可是一個文件夾 ?9??print 10??打印由參數lpFile指定的文件,此文件應是一個文檔文件,假如此文件是一個可執(zhí)行文件,則打開此文件 11??NULL 12??此參數可以為空。這種情況下,函數用于打開由參數lpFile指定的文件
?nShowCmd
?1????SW_HIDE???隱藏這個窗體,并激活其他窗體。??? ?2????SW_MAXIMIZE???最大化指定的窗體。??? ?3????SW_MINIMIZE???最小化指定的窗體,并按順序激活最上層的窗體。??? ?4????SW_RESTORE???激活并顯示窗體。如果窗體為最小化或者最大化,窗體恢復到原始大小和位置。應用程序當恢復一個最小化的窗體時將指定標記。??? ?5????SW_SHOW???以當前的大小和位置激活并顯示窗體。??? ?6????SW_SHOWDEFAULT????? ?7????SW_SHOWMAXIMIZED???激活并最大化顯示窗體。??? ?8????SW_SHOWMINIMIZED???激活并最小化現(xiàn)實窗體。??? ?9????SW_SHOWMINNOACTIVE???最小化窗體,保持其激活狀態(tài)。??? 10????SW_SHOWNA???以當前狀態(tài)顯示窗體,保持其激活狀態(tài)。??? 11????SW_SHOWNOACTIVATE???以當前的大小和位置顯示窗體,并保持其激活狀態(tài)。??? 12????SW_SHOWNORMAL???激活并顯示一個窗體。如果窗體為最大化或者最小化,窗體恢復到原始的大小和位置。當窗體第一次顯示的時候,應用程序記錄標記。
?
返回值:HINSTANCE:如果執(zhí)行成功,返回一個大于32的值,否則返回以下值:
?1??0?系統(tǒng)內存或資源已耗盡.? ?2??ERROR_FILE_NOT_FOUND?文件未找到.? ?3??ERROR_PATH_NOT_FOUND?路徑未找到.? ?4??ERROR_BAD_FORMAT?exe文件無效.? ?5??SE_ERR_ACCESSDENIED?操作系統(tǒng)拒絕訪問.? ?6??SE_ERR_ASSOCINCOMPLETE?文件名關聯(lián)不完整或非法.? ?7??SE_ERR_DDEBUSY?動態(tài)數據交換執(zhí)行失敗因為正在執(zhí)行.? ?8??SE_ERR_DDEFAIL?動態(tài)數據交換執(zhí)行失敗.? ?9??SE_ERR_DDETIMEOUT?動態(tài)數據交換執(zhí)行失敗因為超時? 10??SE_ERR_DLLNOTFOUND?指定dll未找到.? 11??SE_ERR_FNF?指定文件未找到.? 12??SE_ERR_NOASSOC?沒有關聯(lián)的應用程序,在嘗試打印不可打印的文件時也會返回該錯誤 13??SE_ERR_OOM?沒有足夠的內存來完成操作.? 14??SE_ERR_PNF?指定路徑為找到.? 15??SE_ERR_SHARE?共享違規(guī).
1????? 2?????//打開網頁 3?????ShellExecute(NULL,?_T("open"),?_T("http://www.vckbase.com"),?NULL,?NULL,?SW_SHOW); 4? 5?????//打開文件 6?????ShellExecute(NULL,?_T("open"),?_T("D:\test.txt"),?NULL,?NULL,?SW_SHOW); 7? 8?????//執(zhí)行程序 9?????ShellExecute(NULL,?_T("open"),?_T("cmd.exe"),?NULL,?NULL,?SW_SHOW);
?