1

重複の可能性:
Rundll32 を使用して DLL 関数を実行する方法は?

rundll32.exe で実行できる独自の dll を作成するためのドキュメント (チュートリアル、書籍など) はどこにありますか?

4

1 に答える 1

6

これは、で動作する、私が思いつくことができる最も基本的なHelloWorldサンプルrundll.exeです。次の手順に従ってください。

VisualStudioで新しいWIN32DLLプロジェクトを開始します(私は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

コンパイルしてから、コマンドラインからテストします。

rundll32 YourDll.dll,EntryPoint

3つのボタンが付いたMessageBoxで迎えられるはずです

次のURLを使用して、C ++の問題と、作業の初期段階で見つからなかったEntryPointを克服しました。

于 2012-08-11T10:22:47.273 に答える