我们通过我们的应用程序提供安装在本地 (Windows) 硬盘上的 Flash 教程视频。我们的应用程序使用 ShellExecute 打开嵌入它们的 html 文件(在与 html 文件关联的任何浏览器中)。
显然,Chrome 最新的 Flash 播放器存在一个错误,无法播放本地文件(但网络上的文件很好。)
(坦率地说,我很惊讶谷歌没有修复这个错误。对我来说似乎是一个大问题......但也许没有多少人从网络以外的地方玩 Flash?)
Chrome 中的 about:plugins 屏幕上有一个解决方法,但我们不能要求我们的用户这样做。以下是解决方法的讨论:http: //techsmith.custhelp.com/app/answers/detail/a_id/3518
我想为我的用户提供一个选项来打开我们的 html 文件 IE。 如果 Chrome 是他们的默认浏览器,那么我会显示一个复选框,上面写着令人尴尬的内容,例如“如果我们的教程视频无法播放,请选中此框以在 IE 中尝试它们。”
这个 XE2 代码(从两年前的 SO: link开始)仍然合理吗?
if pos('CHROME', UpperCase(GetAssociation('C:\Path\File.html')) > 0 then
// Chrome is the default browser
function GetAssociation(const DocFileName: string): string;
var
FileClass: string;
Reg: TRegistry;
begin
Result := '';
Reg := TRegistry.Create(KEY_EXECUTE);
Reg.RootKey := HKEY_CLASSES_ROOT;
FileClass := '';
if Reg.OpenKeyReadOnly(ExtractFileExt(DocFileName)) then
begin
FileClass := Reg.ReadString('');
Reg.CloseKey;
end;
if FileClass <> '' then begin
if Reg.OpenKeyReadOnly(FileClass + '\Shell\Open\Command') then
begin
Result := Reg.ReadString('');
Reg.CloseKey;
end;
end;
Reg.Free;
end;