Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/scheme/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 嗅探进程中的窗口消息_Winapi - Fatal编程技术网

Winapi 嗅探进程中的窗口消息

Winapi 嗅探进程中的窗口消息,winapi,Winapi,我不太熟悉直接为Win32编写代码,所以请耐心听我说 我需要为应用程序(After Effects)编写一个C插件,该应用程序可以执行某些操作,例如访问剪贴板 我想知道它是否还可以嗅探消息循环中的键盘笔划,从而允许我实现自己的键盘快捷键,这是应用程序不允许干净地扩展的。这对我来说非常重要 我确实有主应用程序窗口句柄-您可以从API中简单地获得它 我是否可以在Windows中注册一个回调,以便在每次消息循环事件中调用,以便调用PeekMessage或其他内容?您可以使用函数setWindowsSu

我不太熟悉直接为Win32编写代码,所以请耐心听我说

我需要为应用程序(After Effects)编写一个C插件,该应用程序可以执行某些操作,例如访问剪贴板

我想知道它是否还可以嗅探消息循环中的键盘笔划,从而允许我实现自己的键盘快捷键,这是应用程序不允许干净地扩展的。这对我来说非常重要

我确实有主应用程序窗口句柄-您可以从API中简单地获得它


我是否可以在Windows中注册一个回调,以便在每次消息循环事件中调用,以便调用PeekMessage或其他内容?

您可以使用函数
setWindowsSubClass
。请在此处阅读:


不要重新实现。根据应用程序的不同,您最好使用AutoHotkey之类的工具,而不是自己编写代码?@JonathanPotter这也可能是一个选项,我会看一看-谢谢。@IInspectable RegisterHotKey在某些键盘笔划的消息队列中发布事件。这与我的问题没有多大关系,我的问题是首先无法获取队列中的消息。因此,此替换过程仅接收消息,这些消息使其到达相关窗口。未调度的消息或调度到其他窗口的消息将丢失。对于这个特定的场景,a更合适。@IInspectable,你所说的听起来是一个更好的答案。在这种情况下,发布第二个答案比冒犯他人更合适。最初的帖子并不清楚什么是可用的,什么是应该处理的,在哪里处理。很可能我的推荐就足够了。既然答案被接受了,看来我的建议奏效了。我发布了技术上正确的信息,这些信息起到了作用。那么,怎么了?我可能会在几天内删除这条评论。我的回答在技术上没有任何错误。子类化可用于过滤过程中的消息,尤其是当目标窗口句柄可用时。这种方法的优点之一是相对容易学习和实现。尤其是当开发人员不熟悉Win32的详细信息时。对窗口进行子类化一点也不容易,即使使用了公共控件版本6中引入的基础结构。另一方面,设置进程内钩子是很简单的。当使用此API时,发布链接而不提供理由至少是不完整的。考虑到这个问题特别需要热键处理(通常在不发送消息的情况下实现)使得这个答案——一般来说——在技术上是不正确的。