2011-02-18 16 views
3

特定のバージョンのFlash Playerがインストールされているかどうかを自分のコードから確認したいと思います。 私はバージョン10.2.161.23とフラッシュプレーヤーを検索する場合、私は、次のコードのレジストリで特定のバージョンのFlash PlayerがC#にインストールされているかどうかを確認する方法。

using Microsoft.Win32 

RegistryKey RK = Registry.CurrentUser.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Macromedia\\FlashPlayer"); 

if (RK != null) 
{ 
    // It's there 
} 
else 
{ 
    // It's not there 
} 

を使用した場所

は "HKEY_LOCAL_MACHINE \ SOFTWARE \ Macromediaの"

を持っています2つのフォルダ:

  1. FlashPlayerおよび
  2. FlashPlayerActiveX。

しかし、上記のコードは機能しません。

特定のバージョンのFlash Playerがシステムにインストールされているかどうかを確認する方法を教えてください。USING C#.NET

答えて

3

Adob​​e ShockwaveFlash.ShockwaveFlashをインスタンス化できるかどうかを調べるために、VBScriptでテストするためのAdobe Flashの検出コード(旧10)。 <メジャーバージョン>テストするメジャーバージョンの場合は、HKCRのキーを確認することができます。 HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash.10

SWFObjectは、バージョンレスのオブジェクト名であるShockwaveFlash.ShockwaveFlashをインスタンス化し、その$versionプロパティを照会します。これをC#で行うには:

// Look up flash object type from registry 
var type = Type.GetTypeFromProgID("ShockwaveFlash.ShockwaveFlash"); 
if (type == null) 
{ 
    // No flash 
    return; 
} 

// Create a flash object to query 
// (should probably try/catch around CreateInstance) 
var flashObject = Activator.CreateInstance(type); 
var versionString = flashObject.GetType() 
         .InvokeMember("GetVariable", BindingFlags.InvokeMethod, 
            null, flashObject, new object[] {"$version"}) 
        as string; 
// e.g. "WIN 10,2,152,26" 

// Clean up allocated COM Object 
Marshal.ReleaseComObject(flashObject); 
+0

しかし、私はC#.NETではjavascriptではなく必要です。どのようにC#.NETでこれを達成する。 – codeLover

+0

私の質問がばかげていると申し訳ありません。私はこれに新しいです。 this.Canで "BindingFlags.InvokeMethod"とは何ですか?他のパラメータを親切に説明できますか?事前に感謝します。 – codeLover

+1

これらは、.NET Reflectionで使用される[Type.InvokeMethod](http://msdn.microsoft.com/en-us/library/66btctbe.aspx)のパラメータです。何が起こっているのか:事前に構築されたCOM相互運用コンポーネントを持たないCOMオブジェクトに対して、メソッド 'GetVariable(" $ version ")'を呼び出す必要があります。 (これは実際にはCOMオブジェクトのIDispatchメソッドかもしれません)。これを行う最も簡単な方法は、リフレクションを使用することです。GetVariableを呼び出します。これはメソッドではなくプロパティ(BindingFlags)です。デフォルトのリフレクションバインダ(null)を使用します。このメソッドをflashObjectで呼び出す。単一のパラメータ "$ version"を渡します。これは、必要な変数です。 – Rup