启动应用程序时捕获窗口创建消息

时间:2013-08-23 17:20:25

标签: c# c++ .net windows vb.net

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

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

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

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

我的应用程序捕获消息以创建窗口

我的应用程序存储消息并将窗口创建延迟5-10秒

我的应用程序发回消息并创建记事本窗口。

任何人都可以帮我完成这个吗?尝试在C#,vb.net或C ++中执行此操作没有问题。所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

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

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

如果您真的只是想了解消息传递是如何工作的,那么您根本不需要深入研究。学习使用Spy32(或等效的),并覆盖一些学习可执行文件中的消息处理程序,这些可执行文件可以相互来回写入消息,您将了解更多关于窗口的信息,而不仅仅是关于其他所有人。