Jacek Caban : shdocvw: Register SHDocVw typelib.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 31 10:38:53 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: e10f5b1d501964b0e07954099c02ab5795496b9e
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=e10f5b1d501964b0e07954099c02ab5795496b9e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jul 31 13:16:54 2006 +0200

shdocvw: Register SHDocVw typelib.

---

 dlls/shdocvw/regsvr.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/dlls/shdocvw/regsvr.c b/dlls/shdocvw/regsvr.c
index 83da050..786262b 100644
--- a/dlls/shdocvw/regsvr.c
+++ b/dlls/shdocvw/regsvr.c
@@ -650,6 +650,29 @@ err:
     return (res == ERROR_SUCCESS) ? S_OK : E_FAIL;
 }
 
+static HRESULT register_typelib(void)
+{
+    ITypeLib *typelib;
+    HRESULT hres;
+
+    static WCHAR wszSHDocVw[] = {'s','h','d','o','c','v','w','.','d','l','l',0};
+
+    hres = LoadTypeLibEx(wszSHDocVw, REGKIND_REGISTER, &typelib);
+    if(FAILED(hres)) {
+        ERR("Could not load typelib: %08lx\n", hres);
+        return hres;
+    }
+
+    ITypeLib_Release(typelib);
+
+    return hres;
+}
+
+static HRESULT unregister_typelib(void)
+{
+    return UnRegisterTypeLib(&LIBID_SHDocVw, 1, 1, LOCALE_SYSTEM_DEFAULT, SYS_WIN32);
+}
+
 /***********************************************************************
  *		DllRegisterServer (SHDOCVW.@)
  */
@@ -664,6 +687,9 @@ HRESULT WINAPI DllRegisterServer(void)
 	hr = register_interfaces(interface_list);
     if (SUCCEEDED(hr))
         hr = register_localserver();
+    if(SUCCEEDED(hr))
+        hr = register_typelib();
+
     return hr;
 }
 
@@ -679,5 +705,8 @@ HRESULT WINAPI DllUnregisterServer(void)
     hr = unregister_coclasses(coclass_list);
     if (SUCCEEDED(hr))
 	hr = unregister_interfaces(interface_list);
+    if(SUCCEEDED(hr))
+        hr = unregister_typelib();
+
     return hr;
 }




More information about the wine-cvs mailing list