2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« バッチファイルからシフトキーの押し下げ状態を調べる。 | トップページ | スクリプトで、PATHにないアプリを起動する。 »

2007年3月25日 (日)

環境に依存しないProgIDでCreateObject()するには?

CreateObject(ProgID)のProgIDは環境に依存して異なることがあって困ります。
そういうときは、一意なCLSIDを使えばよいわけですが。。。

例えば、"ScriptControl"、HTAやWSFなら、
<object classid=clsid:0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC>
と、書けますが、CreateObject()の場合は?

Set wShell=CreateObject("WScript.Shell")
ProgID=wShell.RegRead("HKCR\CLSID\{0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}\ProgID\")
Set SC=CreateObject(ProgID)

一行では、
Set SC=CreateObject(CreateObject("WScript.Shell").RegRead("HKCR\CLSID\{0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}\ProgID\"))

関数化すると、
Function GetProgID(CLSID)
Dim wShell
Set wShell=CreateObject("WScript.Shell")
GetProgID=wShell.RegRead("HKCR\CLSID\{"&CLSID&"}\ProgID\")
End Function

Set SC=CreateObject(GetProgID("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"))

« バッチファイルからシフトキーの押し下げ状態を調べる。 | トップページ | スクリプトで、PATHにないアプリを起動する。 »