【问题标题】:Catching window creation message when application is launched启动应用程序时捕获窗口创建消息
【发布时间】:2013-08-23 17:20:24
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 我不知道如何安全/可靠地实施您概述的四个步骤中的任何一个。整个想法听起来非常狡猾。
  • 嗯,我知道如何过滤消息并将它们发回,我主要是在初始窗口创建/绘制需要捕获什么以及如何存储消息方面遇到问题。

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


【解决方案1】:

您要查找的内容实际上存在于 windows 中,它被称为“挂钩”(与晚上的女士们无关)。都是本机win32代码。这是一篇旧文章(11 年前!),它的亮点http://www.codeproject.com/Articles/2082/API-hooking-revealed

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

如果您真的只是对了解消息传递的真正工作原理感兴趣,那么您实际上不需要深入研究挂钩。学习使用 Spy32(或同等工具),并覆盖一些学习可执行文件中的消息处理程序,这些可执行文件相互之间来回写入消息,您将比其他人更了解 windows。

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 2011-02-25
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多