-3

我在这里搜索,但这些问题都没有帮助我,所以是的,我会解释一下:当我的 Dllmain 函数附加到 Visual Studio 项目设置中的进程 (rundll32.exe) 时,它没有被调用我将它更改为附加到 rundll32.exe 它应该在附加时显示一个消息框,但它只是不这样做。我的代码:

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved
                    )
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
       MessageBox(NULL,L"ThumbsUp",L"Attached",MB_ICONINFORMATION);
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
   case DLL_PROCESS_DETACH:
       break;
   }
   return TRUE;
}

谢谢

4

1 回答 1

1

如果使用 rundll32.exe 作为加载程序,则必须使用入口点调用它,如下所示:

在此处输入图像描述

在这种情况下,DllMain 已被调用,但您会收到如下消息框错误:

Error in D:\blah\blahblah.dll
Missing entry: x

这很正常,这是因为您没有从 .dll 导出任何外部可调用函​​数。“x”在这里只是一个占位符,用于强制 rundll32 加载 .dll。如果您真的想使用 rundll32,请阅读以下内容:RunDll32 如何工作?

于 2021-08-17T12:51:25.970 回答