2013-08-23 47 views
-1

我想弄清楚如何拦截发送应用程序启动时创建窗口的消息。我想抓住这条消息,并以某种方式保存它,然后在10秒后将其发回。当应用程序启动时捕获窗口创建消息

所以基本上我可以在创建应用程序窗口之前拦截消息,然后自己发回。

目的不是在应用程序中添加10秒的延迟,我只是试图多学习一下消息系统(如何捕获消息并将它发送出去)。我只是不确定我需要什么过滤以捕获另一个应用程序的窗口创建以及如何存储消息,以便我可以将其发回。我不想推迟整个过程的启动,只是创建窗口。

我的应用程序监听记事本正在启动

我的应用程序捕获的信息来创建窗口

我的应用程序商店的消息和延迟窗口创建5-10秒

我的应用程序发送消息发回out和记事本窗口被创建。

任何人都可以帮我完成这一点吗?我在C#,vb.net或C++中尝试这样做没有问题。所以任何帮助都会很棒。

+0

我不知道如何安全/可靠地实施您勾勒的四个步骤中的任何一个。整个想法听起来非常狡猾。 –

+0

嗯,我知道如何过滤消息并将它们发送出去,我主要关心的是我需要为最初的窗口创建/绘制以及如何存储消息捕获什么。 – user1632018

回答

0

你正在寻找的东西实际上存在于窗户中,它被称为“挂钩”(与晚上的女士没有关系)。它都是原生的win32代码。这是一篇旧文章(11年前!),其中亮点http://www.codeproject.com/Articles/2082/API-hooking-revealed

挂钩很难使用,但如果您掌握它,您将在此过程中学到很多东西。这也是编写木马病毒等的好东西,这就是为什么它需要提升特权才能使用。如果没有检查,新版本的Windows可能会锁定文章中提到的一些内容,但如果您拥有完整的权限,我怀疑大部分或全部内容仍然有效。

如果你真的只是在学习消息传递的真正作用感兴趣,你并不需要深入研究钩子。学习使用Spy32(或同等产品),并在一些学习可执行文件中重写消息处理程序,这些可执行文件可以相互之间来回写入消息,并且您将比其他人更了解Windows。

相关问题