我来自Linux背景,希望在Windows平台上的Change the Title Bar of a Windows Executable中实现已接受的解决方案。
我刚刚使用msdn walkthrough
创建了一个DLL我只想要一个可执行文件加载我的DLL而不重建可执行文件。我知道我需要Implicit Linking。但我对提到的here感到困惑。由于可执行文件不需要从DLL调用任何函数,相反DLL会尝试拦截更改标题消息。
在这种情况下,我应该选择哪种设置允许隐式链接和加载此DLL?
答案 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设置所需窗口的标题(没有目的,只是有趣和学习)。