0

我试图在 *.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 之类的参数(例如,“ browser.exe http://www.google.com”)来启动 *.exe 文件。如何将此类 URL 添加到 *.dll 文件?与通常程序相同的技巧(例如,args = Environment.GetCommandLineArgs())?那么我如何访问它们并将它们转发到实际的 *.exe 文件呢?

谢谢,马库斯 G.

4

1 回答 1

1

由于您已经在使用 WinApi,因此请使用本机CreateProcess.

于 2012-05-21T14:32:37.660 回答