我已经为user32.dll创建了一个代理,用于替换lpCaption,文本为“MessageBoxA”,“MessageBoxW”代替MessageBoxA和MessageBoxW,正如您可能已经猜到的那样。
我使用来自here的wrappit.cpp来生成初始代码,在进行修改之后,使用以下代码编译它:
cl user32.cpp /link /dll /def:user32.def /out:user32.dll
它编译得很好,但是我写的小MessageBox测试程序没有显示修改后的标题,就像程序使用dll重定向一样。测试程序通过MessageBoxA函数显示MessageBox。我尝试用以下方法编译测试程序:
cl testWin.cpp
和:cl /MD testWin.cpp
我的猜测是我可能没有链接到user32.dll,如果是这样,那么我的问题是“我连接测试程序的方式有问题吗?”
如果我正确链接,我不确定我是谁,那么我的问题是“为什么dll重定向不会发生?”
我读过的关于Windows上DLL / COM重定向的msdn文章建议在同一目录中创建一个名为“testWin.exe.local”的空文件,但这似乎不会影响结果。
如果我能提供可能对您有所帮助的任何其他信息,请与我联系。
我上传了我的项目here。
存档只包含源文件,没有二进制文件。