例:
在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);用于调用系统的'打开方式...'对话框来打开该文件