【问题标题】:How to Find COM object's dll path by ProgID?如何通过 ProgID 查找 COM 对象的 dll 路径?
【发布时间】:2017-03-22 08:22:37
【问题描述】:

如何通过 ProgID 找到 COM 对象的 dll 路径?

myCOMobject = CreateObject("SomeProgID")

如何使用myCOMobject找到注册的COM Server的dll路径?

【问题讨论】:

    标签: progid


    【解决方案1】:

    也许:

    ?DLL_PATH_FROM_PROGID("s.b") 
    FUNCTION DLL_PATH_FROM_PROGID(PAR_PROGID_STR) 
    LOCAL L_WSSH_OBJ As wscript.Shell 
    L_WSSH_OBJ = CreateObject("wscript.shell") 
    LOCAL L_CLSID_STR 
    L_CLSID_STR = CLSID_FROM_PROGID(PAR_PROGID_STR) 
    L_PATH_TO_DLL_STR = L_WSSH_OBJ.RegRead("HKEY_CLASSES_ROOT\CLSID\" + L_CLSID_STR + "\InProcServer32\") 
    L_ThreadingModel_STR = L_WSSH_OBJ.RegRead("HKEY_CLASSES_ROOT\CLSID\" + L_CLSID_STR + "\InProcServer32\ThreadingModel") 
    RELEASE loWSH 
    RETURN ALLTRIM(L_PATH_TO_DLL_STR) 
    ENDFUNC 
    
    && ?CLSID_FROM_PROGID("s.b") 
    FUNCTION CLSID_FROM_PROGID(PAR_PROGID_STR) 
    *!* '--- Here's the registry path where we'll look up the CLSID which corresponds to the ProgID 
    LOCAL L_CLSID_PATH_STR, L_CLSID_STR 
    L_CLSID_PATH_STR = "HKEY_CLASSES_ROOT\" + PAR_PROGID_STR + "\CLSID\" 
    *!* '--- Create a WScript.Shell object 
    *!* Set oReg = WScript.CreateObject("WScript.Shell") 
    LOCAL L_WSSH_OBJ As wscript.Shell 
    L_WSSH_OBJ = CreateObject("wscript.shell") 
    *!* '--- Read the CLSID from the registry 
    *!* '--- If it doesn't exist, it will fail 
    *!* On Error Resume Next 
    *!* clsid = oReg.RegRead(clsidPath) 
    L_CLSID_STR = ALLTRIM(L_WSSH_OBJ.RegRead(L_CLSID_PATH_STR)) 
    && : L_CLSID_STR = COMCLASSINFO(MyO,4) && after MyO=CreateObject("s.b") 
    *!* If Err.Number <> 0 Then 
    *!* WScript.Echo "Error: Cannot open registry for speficied ProgID." 
    *!* WScript.Echo "Error: Please recheck your ProgID." 
    *!* WScript.Quit 
    *!* End If 
    RELEASE L_WSSH_OBJ 
    RETURN L_CLSID_STR 
    ENDFUNC
    

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2010-10-25
      • 2012-10-13
      • 2012-08-08
      • 2010-11-18
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      相关资源
      最近更新 更多