为 Rundll32.exe 编写自己的 dll 的文档? [复制]

Posted

技术标签:

【中文标题】为 Rundll32.exe 编写自己的 dll 的文档? [复制]【英文标题】:Documentation for writting your own dll for Rundll32.exe? [duplicate] 【发布时间】:2012-08-03 04:11:28 【问题描述】:

可能重复:How to use Rundll32 to execute DLL Function?

我在哪里可以找到文档(教程、书籍等)来编写我自己的可以使用 rundll32.exe 运行的 dll?

【问题讨论】:

那里连一个简单的hello world都没有!!! 当然有!它为您提供唯一相关功能的签名。您可以自己添加std::cout << "Hello World!"; 部分。 【参考方案1】:

这是我能想到的最基本的 Hello World 示例,它适用于 rundll.exe。请按照以下步骤操作:

在 Visual Studio 中新建一个 WIN32 DLL 项目(我用的是 VS2010)

在 dllmain.cpp 中添加:

// this shoud ideally go into the .h file I believe
__declspec( dllexport ) void CALLBACK EntryPoint(
       HWND hwnd, 
      HINSTANCE hinst, 
      LPSTR lpszCmdLine, 
      int nCmdShow);

// our hello world function
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)

    int msgboxID = MessageBox(
        NULL,
        L"Hello World from Run32dll",
        L"Hello World",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );

    switch (msgboxID)
    
    case IDCANCEL:
        // TODO: add code
        break;
    case IDTRYAGAIN:
        // TODO: add code
        break;
    case IDCONTINUE:
        // TODO: add code
        break;
    


module.def 文件添加到您的项目中并在其中编辑以下sn-p:

LIBRARY YourDll
EXPORTS
    EntryPoint

编译然后从命令行测试

rundll32 YourDll.dll,EntryPoint

你应该会看到一个带有三个按钮的 MessageBox

在我努力的早期阶段,我使用以下 url 来克服 C++ 问题和 EntryPoint not found

Rundll from user mricicle How messagebox works DependencyWalker Exporting functions Exporting with .def file String literals

【讨论】:

以上是关于为 Rundll32.exe 编写自己的 dll 的文档? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Rundll32

rundll32.exe 等效于 64 位 DLL

RUNDLL32的问题

如何在 Windows 中使用 rundll32.exe 删除文件?

可疑进程描述----rundll32.exe进程详述

rundll32.exe的相关使用语句