gpt4 book ai didi

python - win32api & pyhook - 如何获取用户的打字语言?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:41 25 4
gpt4 key购买 nike

我安装了pyHook并成功将处理程序附加到键盘事件,但现在我需要查明用户是否正在使用英文布局或其他布局进行键入。我在事件对象中找不到此信息。

如何在 Windows 上找到焦点窗口中的输入语言?我尝试使用 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)

最佳答案

检查this answer对于类似的问题;似乎您需要使用 GetGUIThreadInfo 来确定桌面上当前的事件线程,然后将其传递给 GetKeyboardLayout。

关于python - win32api & pyhook - 如何获取用户的打字语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com