c# - 如何从进程开始捕获所有应用程序/窗口消息?

标签 c# .net hook pinvoke messaging

<分区>

我想弄清楚如何从它在 c# 中启动时捕获进程/窗口的所有窗口消息。这个过程不是我自己的,所以我需要使用某种钩子(Hook)。我的目标是从初始窗口创建之前开始实时捕获所有消息,直到应用程序退出并将所有消息输出到文本框或文件。所以基本上从应用程序执行的那一刻起。

因为我想从它启动时就捕获它,所以我可能没有窗口句柄,因为它们还没有句柄。所以我猜想这可能很棘手。

他们的应用程序是否可以供我引用?我只想要来自应用程序的所有消息。

最佳答案

My goal is to start capturing all messages in real time from before the initial window creation, to the applications exit and output all messages to a textbox or file.

听起来您想要“实时”监控注册表、文件系统、进程等事件。

Process Monitor所有这些都已经完成,您可以使用 EasyHook 连接到它

Since I want to capture it from the time it was launched, I probably wont have a window handle as their will be no handle yet. So I am geussing it could be tricky.

这篇代码项目文章有一种方法可以防止执行任何未出现在允许在特定机器上运行的软件列表中的程序。也许你可以调整它以满足你的需要。 http://www.codeproject.com/Articles/11985/Hooking-the-native-API-and-controlling-process-cre

如果您想要一种低级方法,我建议您阅读 Hooks and Dlls .

关于c# - 如何从进程开始捕获所有应用程序/窗口消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680488/

相关文章:

c# - EF 代码优先 - 配置没有共享 PK/FK 的一对零或一关系

c# - FastMember 用法

vba - Windows API WH_MOUSE hook 在模态模式下在 VBA 用户窗体上成功,但在无模式模式下失败

python - PyTorch 警告关于在前向包含多个 autograd 节点时使用非完整后向钩子(Hook)

c# - Functors() 为类重载

c# - 禁止 NTLM 身份验证对话框

asp.net - Visual Studio 2013。您没有足够的权限访问计算机上的 IIS 网站

c# - Simple Injector 是否支持 MVC 4 ASP.NET Web API?

.net - DebugDiag 能否像 Visual Studio 2013 一样生成带有 "inclusive size"的报告

c++ - 鼠标锁定水平/垂直移动