rundll32では、単純なAPIをDLLに呼び出すことができます。rundll32.exeを使用してバッチからDLL呼び出し可能ファイルを作成する方法
つの質問:
- この使用のために、エントリポイントが
__cdecl
呼び出し規約、またはいくつかの他の呼び出し規約を使用すべきですか? - 数字のargsまたは文字列だけを渡すことは可能ですか?
rundll32では、単純なAPIをDLLに呼び出すことができます。rundll32.exeを使用してバッチからDLL呼び出し可能ファイルを作成する方法
つの質問:
__cdecl
呼び出し規約、またはいくつかの他の呼び出し規約を使用すべきですか?ます。rundll32.exeを使用しないでください。レイモンド・チェンが言ったよりも、私はそれを言い表せません。What’s the guidance on when to use rundll32? Easy: Don’t use it。
あなたは、これはあなたが必要とするソリューションであることを、ブログのエントリを読んで、まだ確信している場合は、ここでdealがある:エントリポイントが__stdcall
呼び出し規則に従わなければなりません:
void CALLBACK
EntryPointW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow);
末尾W
lpszCmdLine引数がUnicode(UTF-16LE)として渡されるように重要です。 EntryPointはプレースホルダです。任意の有効な記号を使用できます。
例として、あなたはMyFunctionW
と呼ばれるシンボルをエクスポートし、使用して任意のコマンドラインを渡すことができます。
rundll32.exe MyDll.dll,MyFunction 132 C:\WINDOWS\INF\SHELL.INF
しかし、実際に、あなたは他のオプション(例えばPowerShell)を評価する必要があります。利便性は無料ではありません。
エントリポイントが__stdcall
呼び出し規約を使用する必要があります。
void CALLBACK
EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
これは、次のドキュメントで説明されています
[rundll32の使用方法についてのガイダンスは?簡単:使用しないでください](https://blogs.msdn.microsoft.com/oldnewthing/20130104-00/?p=5643)。 –