mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add API to load MUI strings from the registry
This commit is contained in:
parent
3b9479763b
commit
7b2c38ee7b
@ -162,6 +162,10 @@ RegGetValue = cwrap(
|
|||||||
'RegGetValueW', LONG, a('key', HKEY), a('sub_key', LPCWSTR, None), a('value_name', LPCWSTR, None), a('flags', DWORD, RRF_RT_ANY),
|
'RegGetValueW', LONG, a('key', HKEY), a('sub_key', LPCWSTR, None), a('value_name', LPCWSTR, None), a('flags', DWORD, RRF_RT_ANY),
|
||||||
a('data_type', LPDWORD, 0), a('data', ctypes.c_void_p, 0), a('size', LPDWORD, 0), errcheck=get_value_errcheck
|
a('data_type', LPDWORD, 0), a('data', ctypes.c_void_p, 0), a('size', LPDWORD, 0), errcheck=get_value_errcheck
|
||||||
)
|
)
|
||||||
|
RegLoadMUIString = cwrap(
|
||||||
|
'RegLoadMUIStringW', LONG, a('key', HKEY), a('value_name', LPCWSTR, None), a('data', LPWSTR, None), a('buf_size', DWORD, 0),
|
||||||
|
a('size', LPDWORD, 0), a('flags', DWORD, 0), a('directory', LPCWSTR, None), errcheck=get_value_errcheck
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def filetime_to_datettime(ft):
|
def filetime_to_datettime(ft):
|
||||||
@ -200,6 +204,25 @@ class Key(object):
|
|||||||
return default
|
return default
|
||||||
return convert_registry_data(data_buf, len_data_buf.value, data_type.value)
|
return convert_registry_data(data_buf, len_data_buf.value, data_type.value)
|
||||||
|
|
||||||
|
def get_mui_string(self, value_name=None, default=None, directory=None, fallback=True):
|
||||||
|
data_buf = ctypes.create_unicode_buffer(1024)
|
||||||
|
len_data_buf = DWORD(len(data_buf))
|
||||||
|
size = DWORD(0)
|
||||||
|
while True:
|
||||||
|
len_data_buf.value = len(data_buf)
|
||||||
|
try:
|
||||||
|
RegLoadMUIString(self.hkey, value_name, data_buf, 2 * len(data_buf), ctypes.byref(size), 0, directory)
|
||||||
|
break
|
||||||
|
except ValueError:
|
||||||
|
data_buf = ctypes.create_unicode_buffer(max(2 * len(data_buf), size // 2))
|
||||||
|
except KeyError:
|
||||||
|
return default
|
||||||
|
except WindowsError as err:
|
||||||
|
if fallback and err.errno == winerror.ERROR_BAD_COMMAND:
|
||||||
|
return self.get(value_name=value_name, default=default)
|
||||||
|
raise
|
||||||
|
return data_buf.value
|
||||||
|
|
||||||
def iterkeynames(self, get_last_write_times=False):
|
def iterkeynames(self, get_last_write_times=False):
|
||||||
' Iterate over the names of all keys in this key '
|
' Iterate over the names of all keys in this key '
|
||||||
name_buf = ctypes.create_unicode_buffer(1024)
|
name_buf = ctypes.create_unicode_buffer(1024)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user