窗口 – 如何显示未注册文件扩展名的“打开方式”对话框?
发布时间:2020-12-15 04:31:09 所属栏目:大数据 来源:网络整理
导读:我想让用户为当前未注册的文件扩展名选择一个关联(打开方式). 目前我告诉API通过使用ShellExecute打开该文件,并返回一个ERROR_NO_ASSOCIATION错误代码. 有没有办法告诉API它应该让用户选择一个新的关联? 解决方法 我用 procedure ShellOpenAs(const AFileNa
我想让用户为当前未注册的文件扩展名选择一个关联(打开方式).
目前我告诉API通过使用ShellExecute打开该文件,并返回一个ERROR_NO_ASSOCIATION错误代码. 有没有办法告诉API它应该让用户选择一个新的关联? 解决方法
我用
procedure ShellOpenAs(const AFileName: string; AHandle: HWND); begin ShellExecute(AHandle,'open',PChar('rundll32.exe'),PChar('shell32.dll,OpenAs_RunDLL ' + AFileName),nil,SW_SHOWNORMAL); end; 编辑(灵感来自大卫的评论和https://stackoverflow.com/a/13229516/1431618): procedure OpenAs_RunDLL(hwnd: HWND; hinst: HINST; lpszCmdLine: LPSTR; nCmdShow: Integer); stdcall; external shell32; procedure ShellOpenAs(AHandle: HWND; const AFileName: string); begin OpenAs_RunDLL(AHandle,HInstance,PChar(AFileName),SW_SHOWNORMAL); end; Windows Vista和更高版本还有SHOpenWithDialog. (我觉得有趣的是,Microsoft写了一个兼容RunDLL的入口点,但直到Vista并没有提供常规的API函数.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |