首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RunDLL32不执行任何操作

RunDLL32不执行任何操作
EN

Stack Overflow用户
提问于 2020-10-13 05:50:47
回答 1查看 296关注 0票数 0

我正在尝试创建一个可以用RunDLL32执行的动态链接库。我知道RunDLL32运行正常,因为如果我执行以下命令,它会弹出一个消息框:rundll32 printui.dll,PrintUIEntry/。然而,我不能让它执行我创建的DLL,它看起来像这样:

代码语言:javascript
复制
// 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(0, L"Hello1", 0, 0);
        break;
    case DLL_THREAD_ATTACH:
        MessageBox(0, L"Hello2", 0, 0);
        break;
    case DLL_THREAD_DETACH:
        MessageBox(0, L"Hello3", 0, 0);
        break;
    case DLL_PROCESS_DETACH:
        MessageBox(0, L"Hello4", 0, 0);
        break;
    }
    return TRUE;
}

代码编译得很好(在Visual Studio2017中,发布模式为x64),但当我执行

RunDLL32 MyDLL.dll

什么都没发生。没有错误消息,没有输出,也没有消息框。为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2020-10-13 07:20:47

由于您正在编译64位动态链接库,因此请确保您正在运行64位版本的RunDll32:

rundll32.exe equivalent for 64-bit DLLs

每个this page

如果您向Rundll32传递了错误类型的DLL,它可能无法运行,并且不返回任何错误消息。

即使你能让RunDLL32加载你的DLL,you can't safely call MessageBox() in DllMain() at all

除了您的DllMain之外,您还需要export a function for RunDLL32 to execute。您可以在该函数中调用MessageBox(),例如:

代码语言:javascript
复制
// 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
                     )
{
    return TRUE;
}

extern "C" __declspec(dllexport) void CALLBACK MyFunctionW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow)
{
    MessageBoxW(hwnd, lpszCmdLine, L"Hello", MB_OK);
}
代码语言:javascript
复制
rundll32 my.dll,MyFunction "hello world"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64325766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档