1. ホーム
  2. スクリプト・コラム
  3. 腹筋

vbscript で COM クラスの存在を確認するコード

2022-01-01 16:14:38

この記事はLao Liuによって書かれたもので、原著者のニックネームで転載してください。

VBSでは、さまざまなアクションを実行するために、COMクラスが存在するかどうかを判断する必要がある場合があります。
ここでは、関数が Bool 値を返し、COM クラスが存在することを証明する 2 つの基本的なメソッドを紹介します。

1. レジストリ・ルックアップ・メソッド

Function ComExist(ComName)
	Dim WshShell
	Set WshShell = CreateObject("Wscript.Shell")
	On Error Resume Next
	WshShell.RegRead("HKCR\"&ComName&"\")
	ComExist = CBool(Err.Number = 0)
	On Error Goto 0
End Function

Win Script Hostに付属するCOMクラスを使用する方法です。これは、レジストリに直接問い合わせることによって、COMクラスが有効かどうかを判断します。
長所 高速で、オブジェクトを作成する必要がない。
短所:COMクラスによっては、アンインストール残があるため、この関数が誤判定することがあります。WScript.Shellオブジェクトが異常な場合、判定されない。

2. createメソッドを試してみてください。

Function ComExist(ComName)
	On Error Resume Next
	Set CreateTest = CreateObject(ComName)
	ComExist = CBool(Err.Number = 0)
	On Error Goto 0
End Function

この方法は比較的単純で残酷です。ただCOMオブジェクトを作成して、それが動作するかどうかを確認するだけです。
長所 非常に厳格で信頼できる。
短所:作成・破棄時間が長いクラス(Word.Applicationなど)のテストに使用すると、多くの時間がかかり、プロセスの残骸が残ることがあります(Wordオブジェクトを手動で.Quitする必要があるなど)。