mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2024-11-14 17:40:24 -08:00
50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
"""
|
|
jaraco.windows.message
|
|
|
|
Windows Messaging support
|
|
"""
|
|
|
|
import ctypes
|
|
from ctypes.wintypes import HWND, UINT, WPARAM, LPARAM, DWORD, LPVOID
|
|
|
|
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, str):
|
|
return LPVOID.from_param(str(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)
|