创建DLL以拦截更改标题

时间:2015-10-28 14:18:08

标签: windows visual-c++ dll dllimport

我来自Linux背景,希望在Windows平台上的Change the Title Bar of a Windows Executable中实现已接受的解决方案。

我刚刚使用msdn walkthrough

创建了一个DLL

我只想要一个可执行文件加载我的DLL而不重建可执行文件。我知道我需要Implicit Linking。但我对提到的here感到困惑。由于可执行文件不需要从DLL调用任何函数,相反DLL会尝试拦截更改标题消息。

在这种情况下,我应该选择哪种设置允许隐式链接和加载此DLL?

2 个答案:

答案 0 :(得分:0)

曾经有一个名为array:41 [ 28 => "{imapserver}Sent" ... 31 => "{imapserver}Drafts" .... 40 => "{imapserver}INBOX" ] 的注册表项,列出了将自动加载到每个进程中的dll。从Windows Vista开始,现在需要一些难以满足的安全要求,这些要求似乎有些过分。

因此,下一个最简单的方法是使用AppInit_DLLs - 您将创建一个单独的应用程序来监视窗口创建,寻找目标应用程序窗口。当它找到它时,它会挂钩它,这将有双重好处,实际上拦截对WM_SETTEXT的调用,并将你的钩子dll带入目标进程。

这假设目标过程本身没有升高。

答案 1 :(得分:0)

对于刚刚从Linux进入Windows的人来说,这是一个需要了解的重负荷。但是,如果您能够设法理解什么是DLL,钩子,窗口,HWND,窗口消息(WM_)等,那么请尝试阅读本文以增强您的DLL来挂钩作业,阻止WM_SETTEXT消息到" Windows&# 34;并调用SetWindowText Three Ways to Inject Your Code into Another Process。请注意,大多数防病毒软件都不喜欢挂钩应用程序。

顺便说一句,你试图这样做的原因是什么?

如果你只是为了好玩,那么忘记挂钩,尝试使用EnumWindows枚举Window或使用FindWindowEx(),然后只需SendMessage()PostMessage()使用WM_SETTEXT HWND设置所需窗口的标题(没有目的,只是有趣和学习)。