2012-08-06 1 views
1

Можно создать дубликат:
How to use Rundll32 to execute DLL Function?Документация для написания вашей собственной DLL для Rundll32.exe?

Где я могу найти документацию (учебники, книги и т.д.) писать свои собственные библиотеки DLL, которые могут быть запущены с rundll32.exe?

+0

Там даже не просто привет мир там !!! –

+1

Конечно, есть! Он дает вам подпись единственной функции, которая имеет значение. Вы можете добавить 'std :: cout <<« Hello World! »;' Part самостоятельно. –

ответ

4

Вот самый простой образец Hello World, который я мог бы придумать, который будет работать с rundll.exe. Пожалуйста, следуйте по этим шагам:

Start свежий проект WIN32 DLL в Visual Studio (я использовал VS2010)

В dlllmain.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 файл в свой проект и редактировать следующий фрагмент кода в нем:

LIBRARY YourDll 
EXPORTS 
    EntryPoint 

Compile, а затем проверить из командной строки с

rundll32 YourDll.dll,EntryPoint 

Вы должны быть встречены с MessageBox с тремя кнопками

Я использовал следующий URL, чтобы преодолеть проблемы, C++ и EntryPoint не найден на ранних этапах моих усилий: