如何WinActivate不遵循传统窗口架构的虚拟键盘程序?

时间:2016-01-08 17:15:05

标签: autohotkey

我有一个名为热虚拟键盘的程序,我正在尝试WinActivate它。因为它的行为始终与Windows屏幕键盘类似,并且它的存在位于图标托盘中,它在后台挂起(通过任务栏无法访问),我无法想办法让我带来它通过AHK前面。

我试过了:

DetectHiddenWindows, on
#h::WinActivate, ahk_class TMainKeyboardForms

但是没有用,它没有把它带到前面。 AHK中是否存在另一种特殊方法,可以将这些类型的特殊窗口带到前面?

here是热门虚拟键盘开发人员在其他编程语言中如何显示其他信息的窗口。

2 个答案:

答案 0 :(得分:1)

AutoHotkey有PostMessage命令,就像该链接中给出的示例一样。主要区别在于没有FindWindow功能。相反,AutoHotkey中的PostMessage使用WinTitle参数识别窗口。您需要发布消息的窗口具有类" TFirstForm"和标题" hvkFirstForm",所以它可以这样匹配:

DetectHiddenWindows On

WM_USER := 0x0400
; Message constants accepted by Hot Virtual Keyboard
WM_CSKEYBOARD := WM_USER + 192
WM_CSKEYBOARDMOVE := WM_USER + 193
WM_CSKEYBOARDRESIZE := WM_USER + 197

; Win+H -> show the keyboard
#h::PostMessage WM_CSKEYBOARD, 1, 0,, hvkFirstForm ahk_class TFirstForm

; Win+J -> Hide the keyboard
#j::PostMessage WM_CSKEYBOARD, 2, 0,, hvkFirstForm ahk_class TFirstForm

答案 1 :(得分:0)

DetectHiddenWindows, on
#h::
    WinShow, ahk_class TMainKeyboardForms
Return