2016-08-17 20 views
0

rundll32では、単純なAPIをDLLに呼び出すことができます。rundll32.exeを使用してバッチからDLL呼び出し可能ファイルを作成する方法

つの質問:

  • この使用のために、エントリポイントが__cdecl呼び出し規約、またはいくつかの他の呼び出し規約を使用すべきですか?
  • 数字のargsまたは文字列だけを渡すことは可能ですか?
+1

[rundll32の使用方法についてのガイダンスは?簡単:使用しないでください](https://blogs.msdn.microsoft.com/oldnewthing/20130104-00/?p=5643)。 –

答えて

3

ます。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); 

末尾WlpszCmdLine引数がUnicode(UTF-16LE)として渡されるように重要です。 EntryPointはプレースホルダです。任意の有効な記号を使用できます。

例として、あなたはMyFunctionWと呼ばれるシンボルをエクスポートし、使用して任意のコマンドラインを渡すことができます。

rundll32.exe MyDll.dll,MyFunction 132 C:\WINDOWS\INF\SHELL.INF 

しかし、実際に、あなたは他のオプション(例えばPowerShell)を評価する必要があります。利便性は無料ではありません。

2

エントリポイントが__stdcall呼び出し規約を使用する必要があります。

void CALLBACK 
    EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

これは、次のドキュメントで説明されています

NFO: Windows Rundll and Rundll32 Interface

関連する問題