Autohotkey 如何使用自动热键向窗口句柄发送消息?

Autohotkey 如何使用自动热键向窗口句柄发送消息?,autohotkey,window-handles,Autohotkey,Window Handles,我正在尝试使用自动热键检测ffdshow当前是否在计算机上运行 有人建议我可以通过向ffdshow窗口句柄发送消息来实现这一点。如果成功,则ffdshow正在运行 根据ffdshow,窗口句柄是32786,根据,我想使用PostMessage,然后检查ErrorLevel 然而,在这一点上,我很难理解文档。我有以下几点: ControlHwnd := 32786 VarContainingID := 32786 PostMessage, 0x00, , , ,ahk_id %ControlHwn

我正在尝试使用自动热键检测ffdshow当前是否在计算机上运行

有人建议我可以通过向ffdshow窗口句柄发送消息来实现这一点。如果成功,则ffdshow正在运行

根据ffdshow,窗口句柄是32786,根据,我想使用PostMessage,然后检查ErrorLevel

然而,在这一点上,我很难理解文档。我有以下几点:

ControlHwnd := 32786
VarContainingID := 32786
PostMessage, 0x00, , , ,ahk_id %ControlHwnd%, ahk_id %VarContainingID%
MsgBox %ErrorLevel%
但它总是报告一个1,指示它无法连接到窗口句柄——即使ffdshow正在运行

我还尝试将PostMessage更改为blocking SendMessage,但总是报告失败


我显然做错了什么,但我不确定到底是什么。有人能帮忙吗?

多亏了布莱克霍利曼和MCL,我发现了这个问题

在仔细研究找到的示例代码后,发现ffdshow有一个名为ffdshow\u remote\u的窗口类

因此,将生成以下代码:

DetectHiddenWindows, On
WinGet, activeid, ID, ahk_class ffdshow_remote_class
MsgBox activeid = %activeid%

如果activeid正在运行,将返回存储在activeid中的ffdshow的hWnd值;如果没有,则返回nothing值。

我觉得奇怪的是,窗口句柄可以有常量值,而不是每次生成新窗口时都由操作系统动态分配。然而,据报道,这是可能的。该文件还说,为了使应用程序能够访问ffdshow,您必须进行一些配置;特别是指定窗口句柄值。你这么做了吗?还有,你为什么要传递ahk_id%VarContainingID%作为窗口文本?仔细查看参数列表!32786看起来更像一个ahk_类,大多数hwnd看起来更像一个十六进制数,如0x12345,您可以在启用“检测隐藏窗口”的情况下使用Winexist来了解窗口是否正在运行,如果使用函数版本,它还将返回窗口句柄。@MCL Yes,我已经启用了远程控制API,用户定义的值已经保留在推荐的32786。考虑BLASHOLYMAN的建议,并尝试与Akkh类32786和Debug窗口进行协作。另外,如果您只想检查ffdshow是否正在运行,是否有可以查找的进程?