私たちは、ローカルの(Windows)ハードディスクにインストールするFlashチュートリアルビデオをアプリケーションとともに提供しています。私たちのアプリは、ShellExecuteを使って、埋め込まれているHTMLファイル(htmlファイルに関連付けられているブラウザであれば)を開きます。Windowsのhtmlファイルに関連付けられたブラウザとしてChromeを検出する
どうやらローカルファイルを再生するために失敗したChromeのより最近のFlashプレーヤーのバグがあります(ただし、Web上のファイルが細かいですが。)
(率直に言って、私はこのバグがされていないことを驚いていますGoogle以外の場所からFlashをプレイしている人はほとんどいませんか?)
Chromeのabout:プラグイン画面については回避策がありますが、ユーザーにそれを依頼してはいけません。回避策の説明は次のとおりです。http://techsmith.custhelp.com/app/answers/detail/a_id/3518
私はhtmlファイルIEを開くオプションをユーザーに提供したいと考えています。 Chromeがデフォルトブラウザの場合は、「私たちのチュートリアル動画が再生できない場合は、このチェックボックスをオンにするとIEで試してみてください」のような恥ずかしいメッセージが表示されます。
このXE2コード(2年前の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;
HKEY_CLASSES_ROOT \ Shell \ Open \ Commandは、HTMLファイルを開くために使用するプログラムをWindowsシェルに指示します。ユーザーがインターネットのブラウズに使用するものを確認するには、HKEY_CLASSES_ROOT \ .htmlをチェックします。 – cleong
Flashを含むローカルHTMLファイルを開くことは、主要な3つのブラウザすべてで面倒です。 IEは醜い警告メッセージをスローします。 SWFが間違った瞬間にFlashのセキュリティ警告ウィンドウをトリガーするようなことをすると、Firefoxがクラッシュする可能性があります。悪夢のもの。 – cleong
これはバグではなく、セキュリティホールです。彼らはそれを閉じました。 –