0

*.exe ファイルを直接呼び出すのではなく、*.dll ファイルを使用して *.exe ファイルを開始しようとしています。*.dll ファイルは起動できるが、*.exe ファイルは起動できないプログラムに使用されます。

この場合: browser.exe は vb.NET で記述され、browser.dll ファイルは C++ で記述されています (vb.NET の dll スニペットが見つかりませんでした)。

VS2008 によって生成され、私が少し変更した browser.dll (MFC-DLL) のコード スニペットは次のようになります。

[...]
CBrowserStartApp::CBrowserStartApp()
{
    system("start .\\browser.exe");
}

CBrowserStartApp theApp;

BOOL CBrowserStartApp::InitInstance()
{
    CWinApp::InitInstance();
    system("start .\\browser.exe");
    return TRUE;
}

エラーなくコンパイルできます。

面白いことに、Rundll32.exe で dll を起動し、パラメータを追加すると、エラー メッセージが表示されます。その後、プログラムは起動しますが、エラー メッセージはまだ表示されたままです。「Error in browser.dll. Missing Content v」で始めると「Rundll32.exe browser.dll v」と表示されます。パラメータ「v」を省略すると、何も起こりません。エラーも実際のアプリケーションも表示されません。ここで何が間違っていますか?

次の質問は次のとおりです。通常、URL などのパラメーター (" browser.exe http://www.google.com") を使用して *.exe ファイルを開始します。このような URL を *.dll ファイルに追加するにはどうすればよいですか? 通常のプログラムと同じトリック(例args = Environment.GetCommandLineArgs())?それらにアクセスして、実際の *.exe ファイルに転送するにはどうすればよいですか?

Thx、Markus G.

4

1 に答える 1

1

あなたはすでに WinApi を使用しているので、ネイティブを使用してくださいCreateProcess

于 2012-05-21T14:32:37.660 に答える