185 return status == win32con.STILL_ACTIVE |
185 return status == win32con.STILL_ACTIVE |
186 except pywintypes.error, details: |
186 except pywintypes.error, details: |
187 return details[0] != winerror.ERROR_INVALID_PARAMETER |
187 return details[0] != winerror.ERROR_INVALID_PARAMETER |
188 return True |
188 return True |
189 |
189 |
|
190 def lookup_reg(key, valname=None, scope=None): |
|
191 ''' Look up a key/value name in the Windows registry. |
|
192 |
|
193 valname: value name. If unspecified, the default value for the key |
|
194 is used. |
|
195 scope: optionally specify scope for registry lookup, this can be |
|
196 a sequence of scopes to look up in order. Default (CURRENT_USER, |
|
197 LOCAL_MACHINE). |
|
198 ''' |
|
199 try: |
|
200 from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, \ |
|
201 QueryValueEx, OpenKey |
|
202 except ImportError: |
|
203 return None |
|
204 |
|
205 def query_val(scope, key): |
|
206 try: |
|
207 keyhandle = OpenKey(scope, key) |
|
208 return QueryValueEx(keyhandle, valname)[0] |
|
209 except EnvironmentError: |
|
210 return None |
|
211 |
|
212 if scope is None: |
|
213 scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE) |
|
214 elif not isinstance(scope, (list, tuple)): |
|
215 scope = (scope,) |
|
216 for s in scope: |
|
217 val = query_val(s, key, valname) |
|
218 if val is not None: |
|
219 return val |
|
220 |
190 def system_rcpath_win32(): |
221 def system_rcpath_win32(): |
191 '''return default os-specific hgrc search path''' |
222 '''return default os-specific hgrc search path''' |
192 proc = win32api.GetCurrentProcess() |
223 proc = win32api.GetCurrentProcess() |
193 try: |
224 try: |
194 # This will fail on windows < NT |
225 # This will fail on windows < NT |