Wndows外殼程式設計-呼叫"開啟方式..."對話方塊來開啟文件

weixin_34015860發表於2019-01-07
例: 
在use中加入ShellAPI單元 
 
var 
   FilePath:string; 
   ShellReturn:integer; 
begin 
   FilePath:=檔案路徑+檔名 
   if  FilePath<>''  then 
       begin 
           ShellReturn:=ShellExecute(Handle,PChar('Open'),PChar(filepath),nil,nil,1); 
           if  ShellReturn<=32  then 
               case  ShellReturn  of 
                   0                                          :  messagebox(handle,'系統資源不足,檔案開啟失敗!','失敗',MB_OK+MB_ICONSTOP); 
                   SE_ERR_ASSOCINCOMPLETE:  messagebox(handle,'指定的檔名不符合windows規範','失敗',MB_OK+MB_ICONERROR); 
                   SE_ERR_FNF                        :  messagebox(handle,'指定的檔案沒有找到','失敗',MB_OK+MB_ICONERROR); 
                   SE_ERR_OOM                        :  messagebox(handle,'沒有足夠的記憶體完成操作,檔案開啟失敗!','失敗',MB_OK+MB_ICONSTOP); 
                   SE_ERR_PNF                        :  messagebox(handle,'指定的目錄沒有發現','失敗',MB_OK+MB_ICONERROR); 
                   {當返回值表示該型別檔案未在系統中註冊時,呼叫系統'開啟方式...'對話方塊} 
                   SE_ERR_NOASSOC                :  winexec(PChar('rundll32  shell32,OpenAs_RunDLL  '+FilePath),SW_SHOWDEFAULT); 
                   else 
                       messagebox(handle,'檔案開啟失敗','失敗',MB_OK+MB_ICONERROR); 
               end; 
       end; 
end; 
 
在這裡: 
ShellExecute(Handle,PChar('Open'),PChar(filepath),nil,nil,1);用於直接開啟已註冊過的檔案(也可以是網頁,程式等) 
 
winexec(PChar('rundll32  shell32,OpenAs_RunDLL  '+FilePath),SW_SHOWDEFAULT);用於呼叫系統的'開啟方式...'對話方塊來開啟該檔案

相關文章