gpt4 book ai didi

c# - 找出键盘布局何时更改

转载 作者:可可西里 更新时间:2023-11-01 12:39:25 30 4
gpt4 key购买 nike

我正在编写一个屏幕键盘,并且希望在键盘布局更改后立即重绘我的布局。

目前我打电话:

GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), NULL));

在每次按键时查看布局是否已更改。如果用户通过鼠标更改布局,它不会工作,直到按下键。

我想知道有没有办法得到通知当当前前台窗口的键盘布局改变时,这样我就可以在发生变化时立即重新绘制我的布局。

最佳答案

有办法......

首先您需要注册您的应用程序以捕获前台窗口的变化:
使用 SetWinEventHook使用 EVENT_SYSTEM_FOREGROUND (和 WINEVENT_OUTOFCONTEXT 因为它是 .NET)

如果发生这种情况:使用您的 GetKeyboardLayout 解决方案获取该窗口的当前布局。

然后使用本地Windows Hook (您可能在低级别全局使用它进行键捕获)WH_CALLWNDPROC以及新前台窗口的线程。
WM_INPUTLANGCHANGE向该窗口发送消息以接收对布局的更改。
(您可能希望在另一次前台更改后取消 Hook /重新 Hook )

关于c# - 找出键盘布局何时更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8289492/

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