我正在尝试使用* .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.
答案 0 :(得分:1)
由于您正在使用WinApi,请使用原生CreateProcess
。