]> git.sesse.net Git - vlc/commitdiff
python-ctypes: improve win32 initialization (contrib from <mmuellen@gmx.de>)
authorOlivier Aubert <olivier.aubert@liris.cnrs.fr>
Mon, 10 Aug 2009 08:07:00 +0000 (10:07 +0200)
committerOlivier Aubert <olivier.aubert@liris.cnrs.fr>
Mon, 10 Aug 2009 08:07:00 +0000 (10:07 +0200)
bindings/python-ctypes/header.py

index e81c6f8fdcef805254eeeab1f5cf2d2c2fc49e00..4f4c870ade32bebe6f3215c1745387a7bffc5056 100755 (executable)
@@ -46,11 +46,26 @@ elif sys.platform == 'win32':
     plugin_path=None
     path=ctypes.util.find_library('libvlc.dll')
     if path is None:
-        # Try a standard location.
-        p='c:\\Program Files\\VideoLAN\\VLC\\libvlc.dll'
-        if os.path.exists(p):
-            plugin_path=os.path.dirname(p)
-            os.chdir(plugin_path)
+        # Try to use registry settings
+        import _winreg
+        plugin_path_found = None
+        subkey, name = 'Software\\VideoLAN\\VLC','InstallDir'
+        for hkey in _winreg.HKEY_LOCAL_MACHINE, _winreg.HKEY_CURRENT_USER:
+            try:
+                reg = _winreg.OpenKey(hkey, subkey)
+                plugin_path_found, type_id = _winreg.QueryValueEx(reg, name)
+                _winreg.CloseKey(reg)
+                break
+            except _winreg.error:
+                pass
+        if plugin_path_found:
+            plugin_path = plugin_path_found
+        else:
+            # Try a standard location.
+            p='c:\\Program Files\\VideoLAN\\VLC\\libvlc.dll'
+            if os.path.exists(p):
+                plugin_path=os.path.dirname(p)
+        os.chdir(plugin_path)
         # If chdir failed, this will not work and raise an exception
         path='libvlc.dll'
     else: