1
我安裝了pyHook併成功將處理程序附加到鍵盤事件,但現在我需要確定用戶是否正在輸入英文版面或其他版面。我無法在事件對象中找到這些信息。win32api&pyhook - 如何獲取用戶的打字語言?
如何在窗口中找到關注窗口中的打字語言是什麼?我試着玩GetKeyboardLayout沒有成功(無論我輸入英文還是使用不同語言,它總是返回相同的值 - 在我的情況下是希伯來語)。
感謝
解決由於BrendanMcK的參考。
Python代碼:
from ctypes import windll, c_ulong, byref, sizeof, Structure
user32 = windll.user32
class RECT(Structure):
_fields_ = [
("left", c_ulong),
("top", c_ulong),
("right", c_ulong),
("bottom", c_ulong)];
class GUITHREADINFO(Structure):
_fields_ = [
("cbSize", c_ulong),
("flags", c_ulong),
("hwndActive", c_ulong),
("hwndFocus", c_ulong),
("hwndCapture", c_ulong),
("hwndMenuOwner", c_ulong),
("hwndMoveSize", c_ulong),
("hwndCaret", c_ulong),
("rcCaret", RECT)
]
def get_layout():
guiThreadInfo = GUITHREADINFO(cbSize=sizeof(GUITHREADINFO))
user32.GetGUIThreadInfo(0, byref(guiThreadInfo))
dwThread = user32.GetWindowThreadProcessId(guiThreadInfo.hwndCaret, 0)
return user32.GetKeyboardLayout(dwThread)
不要在您的問題中發佈答案。改爲提交答案。這可以讓其他人對它投票,並且你接受它。結果是更好的用戶體驗,使未來的訪問者更容易找到好的答案。 – IInspectable