为 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 的文档? [复制]的主要内容,如果未能解决你的问题,请参考以下文章