mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-16 02:02:53 -07:00
Also updates: - importlib-metadata-0.7 - jaraco-windows - jaraco.classes-1.5 - jaraco.collections-1.6.0 - jaraco.functools-1.20 - jaraco.structures-1.1.2 - jaraco.text-1.10.1 - jaraco.ui-1.6 - more-itertools-4.3.0 - path.py-11.5.0 - six-1.12.0
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""
|
|
jaraco.windows.message
|
|
|
|
Windows Messaging support
|
|
"""
|
|
|
|
import ctypes
|
|
from ctypes.wintypes import HWND, UINT, WPARAM, LPARAM, DWORD, LPVOID
|
|
|
|
import six
|
|
|
|
LRESULT = LPARAM
|
|
|
|
|
|
class LPARAM_wstr(LPARAM):
|
|
"""
|
|
A special instance of LPARAM that can be constructed from a string
|
|
instance (for functions such as SendMessage, whose LPARAM may point to
|
|
a unicode string).
|
|
"""
|
|
@classmethod
|
|
def from_param(cls, param):
|
|
if isinstance(param, six.string_types):
|
|
return LPVOID.from_param(six.text_type(param))
|
|
return LPARAM.from_param(param)
|
|
|
|
|
|
SendMessage = ctypes.windll.user32.SendMessageW
|
|
SendMessage.argtypes = (HWND, UINT, WPARAM, LPARAM_wstr)
|
|
SendMessage.restype = LRESULT
|
|
|
|
HWND_BROADCAST = 0xFFFF
|
|
WM_SETTINGCHANGE = 0x1A
|
|
|
|
# constants from http://msdn.microsoft.com
|
|
# /en-us/library/ms644952%28v=vs.85%29.aspx
|
|
SMTO_ABORTIFHUNG = 0x02
|
|
SMTO_BLOCK = 0x01
|
|
SMTO_NORMAL = 0x00
|
|
SMTO_NOTIMEOUTIFNOTHUNG = 0x08
|
|
SMTO_ERRORONEXIT = 0x20
|
|
|
|
SendMessageTimeout = ctypes.windll.user32.SendMessageTimeoutW
|
|
SendMessageTimeout.argtypes = SendMessage.argtypes + (
|
|
UINT, UINT, ctypes.POINTER(DWORD)
|
|
)
|
|
SendMessageTimeout.restype = LRESULT
|
|
|
|
|
|
def unicode_as_lparam(source):
|
|
pointer = ctypes.cast(ctypes.c_wchar_p(source), ctypes.c_void_p)
|
|
return LPARAM(pointer.value)
|