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

C++ 通过*.dll文件调用*.exe文件并提交参数,c++,vb.net,visual-studio-2008,dll,rundll32,C++,Vb.net,Visual Studio 2008,Dll,Rundll32,我试图在*.dll文件的帮助下启动*.exe文件,而不是直接调用*.exe文件。它将用于能够启动*.dll文件但不能启动*.exe文件的程序 这种情况下,BuffSer.EXE是用VB.NET和C++中的BuffSer.DLL文件编写的(我找不到任何关于VB的.NET的DLL代码段)。 由VS2008生成的browser.dll(MFC-dll)的代码段(由我稍微修改)如下所示: [...] CBrowserStartApp::CBrowserStartApp() { system("s

我试图在*.dll文件的帮助下启动*.exe文件,而不是直接调用*.exe文件。它将用于能够启动*.dll文件但不能启动*.exe文件的程序

这种情况下,BuffSer.EXE是用VB.NET和C++中的BuffSer.DLL文件编写的(我找不到任何关于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并添加任何参数,就会出现错误消息。然后程序启动,但错误消息仍然存在。如果我以“
Rundll32.exe browser.dll v
”开头,它会显示“browser.dll中的
错误。缺少内容v
”。如果我省略了参数“v”,什么也不会发生。不会出现错误,实际应用程序也不会出现错误。我做错了什么

我的下一个问题如下:通常我会使用URL(例如“
browser.exe”)等参数启动*.exe文件http://www.google.com
”)。如何将此类URL添加到*.dll文件?与普通程序相同的技巧(例如,
args=Environment.GetCommandLineArgs()
)?如何访问它们并将它们转发到实际的*.exe文件

Thx,
Markus G.

因为您一直在使用WinApi,所以请使用本机
CreateProcess