从C++程序中启动IE

4

我有一个用C++编写的程序,用于进行一些计算机诊断。在程序退出之前,我需要它启动Internet Explorer并导航到特定的URL。我该如何从C++中实现这个功能? 谢谢。

7个回答

9

您好,我假设您在谈论MSVC++...


// I do not recommend this... but will work for you
system("\"%ProgramFiles%\\Internet Explorer\\iexplore.exe\"");


// I would use this instead... give users what they want
#include <windows.h>

void main()
{
     ShellExecute(NULL, "open", "https://dev59.com/SkfSa4cB1Zd3GeqPBffe", NULL, NULL, SW_SHOWNORMAL);
} 

1
这将启动默认浏览器,可能是IE? - Joakim Elofsson
谢谢,但这会启动默认浏览器,可能不是IE。 - Jon
你是在使用一些自定义插件或者其他什么东西吗?如果有程序打开除了Firefox之外的任何东西,我会感到非常不爽。现在用户有选择的权利啊 ;) - Kladskull
在这里...我添加了一种适用于Internet Explorer的方法,尽管我不喜欢这样做,哈哈。 - Kladskull
确实。这是为了雇主验证员工的机器。需要使用IE浏览器。 - Jon
3
获取路径的另一种方式是从注册表中获取,注册表路径为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE,默认值是可执行文件的路径。 - Joakim Elofsson

3

您是否真的需要启动IE或者只是在浏览器中展示内容?ShellExecute函数将会启动默认配置的任何浏览器。请按照以下方式调用:

ShellExecute(NULL, "open", szURL, NULL, NULL, SW_SHOW);

不要将桌面窗口作为父窗口。如果您不希望有父窗口,请传递NULL。我已更新了此处的代码;如果您在自己的程序中使用它,请修复它。 - Cody Gray

3
include <windows.h>

int main()
{
  ShellExecute(0, "open",
                  "C:\\progra~1\\intern~1\\iexplore.exe",
                  "http://www.foo.com",
                  "",
                  SW_MAXIMIZE); 
  return 0;
}

3

如果你真的需要启动Internet Explorer,你还应该考虑使用CoCreateInstance(CLSID_InternetExplorer, ...),然后进行导航。根据你想要做什么,这可能是更好的选择。


2

如果iexplore在路径上,则只需使用标准C ++

#include <stdlib.h>

...
string foo ("iexplore.exe http://example.com");
system(foo.c_str());

如果不在路径上,您需要想办法找出路径并将整个路径传递给系统调用。
string foo ("path\\to\\iexplore.exe http://example.com");
system(foo.c_str());

查看我的上面帖子...你应该使用genenv或%ProgramFiles%。 - Kladskull
+1 这个答案比我的更好。期望iexplore.exe在路径上(什么情况下不是?),并使用system()进行通用调用。 - user447688
非常烦人,iexplore在我的XP上不在PATH路径中。 :-( - Glen
这样会让cmd.exe保持打开状态,直到我关闭那个窗口程序才会继续执行。也许有其他方法可以避免这种情况,使得这个选项不那么令人不满意... - Rotem Varon

2
我和 Glen、John 一起,只是我更喜欢使用 CreateProcess。这样你就有一个进程句柄可以操作了。例如在完成后可以 关闭 IE,或使用一个线程来监视 IE 的终止(使用进程句柄的 WaitForSingleObject)以便进行重新启动,或者将程序关机。

0

尝试这个 system("\"C:\Program Files\Internet Explorer\iexplore\" http://www.shail.com"); 完美运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接