2011-11-18 325 views
0

即使不是预定义的浏览器,也需要使用Internet Explorer打开网页。强制使用Internet Explorer打开网页

(如Chrome浏览器是预定义的,但我想开www.ThisRunsOnlyOnInternetExplorer.com

如何实现这一目标呢?当然有ShellExecute我知道如何打开默认的浏览器。

当然这必须在所有Windows工作操作系统和所有的Internet Explorer版本,所以我不能harcode的路径iexplorer.exe

您能否提供一个解决方案

注意:?如果有T A方式Ø得到了一些API来IEXPLORER.EXE可能是招路径gtet该路径,然后使用的ShellExecute运行

PATH_TO_INTERNET_EXPLORER_EXE www.ThisRunsOnlyOnInternetExplorer.com 
+0

是不是iexplore.exe在每个Windows版本的路径上?然后你可以使用ShellExecute'iexplore www.ThisRunsOnlyOnInternetExplorer.com'。 –

+0

在我的Windows 7机器上,它不在路径 – LaBracca

+0

@Matthijs你是对的无论如何,大卫明确了我的问题 – LaBracca

回答

5

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

注:CreateProcess()不使用应用程序路径机制,所以你必须使用ShellExecute()而非CreateProcess()

+0

啊......我看到'ShellExecute(Handle,'open',PChar('iexplore.exe'),PChar('ThisRunsOnlyOnInternetExplorer.com'),零,SW_SHOWNORMAL)'的作品。但是如果我不得不从命令行执行这个操作,我应该怎么做?因为从命令行'iexplore.exe www.ThisRunsOnlyOnInternetExplorer.com'不起作用; – LaBracca

+0

@user当您从cmd.exe执行此操作时,不会通过shell和通过应用程序路径进行操作。它直接进入CreateProcess。如果你从Windows运行对话框中执行,那么外壳将重新开始工作。但是您问如何在Windows程序中执行此操作,因此cmd.exe的问题是偶然的。 –

+0

好奇心:MSDN文档说,如果应用程序可以直接打开URL,则必须定义'UseUrl' DWORD值并将其设置为'1',否则文档将被下载并传递到应用程序的本地副本的路径。在我的机器上,'iexplore.exe'的条目没有定义'UseUrl' !. –

1

尝试类似的ShellExecute(手柄,“开放”,为“%ProgramFiles%\ Internet Explorer中\ iexplore.exe“,”http://google.com“,NULL,SW_SHOWNORMAL);

我认为程序文件是为所有窗口设置的。

编辑:我删除了其他的东西,因为我没有完全得到这个问题。

1

我用来和你有同样的问题。我将Google Chrome作为我的默认浏览器,并希望强制使用IE浏览器访问某些特定的网址。我发现了一个适合我的完美解决方案。我使用ShellExecuteEx,并将文件类型指定为IE.HTTP或IE.HTTPS。

我希望它有帮助。 FillMemory(@vShellExec,SizeOf(TShellExecuteInfo),0); FillMemory(@vShellExec,SizeOf(TShellExecuteInfo),0);
vShellExec.cbSize:= SizeOf(vShellExec);
vShellExec.fMask:= SEE_MASK_CLASSNAME或SEE_MASK_NOCLOSEPROCESS或 SEE_MASK_FLAG_NO_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);

相关问题