Delphi 使用Internet Explorer强制打开网页

Delphi 使用Internet Explorer强制打开网页,delphi,internet-explorer,shellexecute,Delphi,Internet Explorer,Shellexecute,我需要使用Internet Explorer打开网页,即使它不是预定义的浏览器 (例如,Chrome是预定义的,但我想打开www.thisrunsonlyoneternetexplorer.com) 如何实现这一点?当然,通过ShellExecute我知道如何打开默认浏览器 当然,这必须适用于所有Windows操作系统和所有internet explorer版本,因此我无法对iexplorer.exe的路径进行编码 你能提出一个解决方案吗 注意:如果有一种方法可以通过一些API获得iexplor

我需要使用Internet Explorer打开网页,即使它不是预定义的浏览器

(例如,Chrome是预定义的,但我想打开
www.thisrunsonlyoneternetexplorer.com

如何实现这一点?当然,通过
ShellExecute
我知道如何打开默认浏览器

当然,这必须适用于所有Windows操作系统和所有internet explorer版本,因此我无法对
iexplorer.exe
的路径进行编码

你能提出一个解决方案吗

注意:如果有一种方法可以通过一些API获得iexplorer.exe的路径,那么技巧是先设置该路径,然后使用ShellExecute运行

PATH_TO_INTERNET_EXPLORER_EXE www.ThisRunsOnlyOnInternetExplorer.com

尝试类似ShellExecute的操作(句柄,“打开”,“程序文件%\Internet Explorer\iexplore.exe”http://google.com“,空,开关显示正常)

我认为所有窗口都设置了程序文件


编辑:我删除了其他内容,因为我没有完全理解这个问题。

您不需要使用完全限定的路径。安装IE时,它会在注册表中注册自身。因此,您只需将
iexplore.exe
发送到
ShellExecute()


注意:
CreateProcess()
不使用应用程序路径机制,因此必须使用
ShellExecute()
而不是
CreateProcess()

我以前也遇到过与您相同的问题。我使用Google Chrome作为我的defaut浏览器,并希望强制对某些特定URL使用IE。我找到了一个非常适合我的解决方案。我使用ShellExecuteEx,并将文件类型指定为IE.HTTP或IE.HTTPS

我希望它能有所帮助

填充内存(@vShellExec,SizeOf(TShellExecuteInfo),0);
vShellExec.cbSize:=SizeOf(vShellExec);
vShellExec.fMask:=请参阅\u MASK\u CLASSNAME或参阅\u MASK\u NOCLOSEPROCESS或 请参阅\u掩码\u标志\u否\u UI;
vShellExec.Wnd:=0;
vShellExec.lpFile:=PChar(asURL);
vShellExec.nShow:=SW_ShowNormal;
vShellExec.lpClass:=PChar(sFileType);//使用IE.HTTP或IE.HTTPS
vShellExec.lpVerb:=PChar('Open');


ShellExecuteEx(@vShellExec)

iexplore.exe不是在每个Windows版本的路径上吗?那么您可以只使用ShellExecute
iexplore www.thisrunsonlyoneinternetexplorer.com
。在我的Windows 7计算机上它不在path@Matthijs不管怎样,你是对的大卫澄清了我的问题,没有反驳你这样做的必要性,因为你没有提到细节,请知道这对你的一些用户来说是很烦人的。人们选择他们的浏览器是有原因的,当你忽略他们的选择时,你会增加他们的肾上腺素流量,增加他们每天的压力水平。请认真地意识到这一点。啊……我看到了
ShellExecute(句柄,'open',PChar('iexplore.exe'),PChar('www.thisrunsonlyoneternetexplorer.com'),无,SW_SHOWNORMAL)
有效。但是如果我必须从命令行运行它,我应该做什么?因为从命令行
iexplore.exe www.thisrunsonlyoneternetexplorer.com
不起作用;@user当你从cmd.exe执行此操作时,它不会通过shell和应用程序路径。它会直接转到CreateProcess。如果你从Windows运行对话框执行此操作,则不会当shell重新运行时。但是您询问了如何在Windows程序中执行此操作,因此cmd.exe的问题是偶然的。好奇:MSDN文档说明,如果应用程序可以直接打开URL,则必须定义
UseUrl
DWORD值并将其设置为“1”,否则将下载文档并提供到本地c的路径opy传递给了应用程序。在我的机器上,
iexplore.exe
的条目没有定义
UseUrl
!@David谢谢,我不知道cmd和run之间的这个“微妙”区别。我从未意识到ShellExecute在做Windows run所做的工作。Raymond Chen已经谈到了UseUrl选项:非常有趣!