通过* .dll文件调用* .exe文件并提交参数

时间:2012-05-21 14:29:35

标签: c++ vb.net visual-studio-2008 dll rundll32

我正在尝试使用* .dll文件启动* .exe文件,而不是直接调用* .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之类的参数启动* .exe-File(例如,“browser.exe http://www.google.com”)。如何将这些URL添加到* .dll文件中?与通常程序相同的技巧(例如,args = Environment.GetCommandLineArgs())?如何访问它们并将它们转发到实际的* .exe文件呢?

THX, Markus G.

1 个答案:

答案 0 :(得分:1)

由于您正在使用WinApi,请使用原生CreateProcess