当前位置:  开发笔记 > 编程语言 > 正文

如何从我的应用程序中打开网页?

如何解决《如何从我的应用程序中打开网页?》经验,为你挑选了5个好方法。

我想让我的WPF应用程序打开默认浏览器并转到某个网页.我怎么做?



1> Inisheer..:
System.Diagnostics.Process.Start("http://www.webpage.com");

许多方法之一.


我也使用过这个,但现在事实证明这不适用于UAC.在我的应用程序中,我在清单中有这个当我在Windows 8下运行应用程序时(你不能再禁用UAC),打开网页时出现以下异常:Win32Exception(0x80004005):未在System.Diagnostics.Process.StartWithShellExecuteEx上注册的类
如果您不小心从用户输入获取URL而不验证它是URI,这可能会在您的应用程序中打开一个相当大的安全漏洞.然后,他们可以在您的系统上启动他们想要的任何应用

2> ajma..:

我一直在使用这一行来启动默认浏览器:

System.Diagnostics.Process.Start("http://www.google.com"); 



3> cdiggins..:

虽然给出了一个很好的答案(使用Process.Start),但将它封装在一个函数中是更安全的,该函数检查传递的字符串确实是一个URI,以避免意外地在机器上启动随机进程.

public static bool IsValidUri(string uri)
{
    if (!Uri.IsWellFormedUriString(uri, UriKind.Absolute))
        return false;
    Uri tmp;
    if (!Uri.TryCreate(uri, UriKind.Absolute, out tmp))
        return false;
    return tmp.Scheme == Uri.UriSchemeHttp || tmp.Scheme == Uri.UriSchemeHttps;
}

public static bool OpenUri(string uri) 
{
    if (!IsValidUri(uri))
        return false;
     System.Diagnostics.Process.Start(uri);
     return true;
}



4> mloskot..:

Microsoft在KB305703文章中解释了它如何使用Visual C#以编程方式启动默认Internet浏览器.

不要忘记查看"故障排除"部分.



5> lvmeijer..:

您无法从提升的应用程序启动网页.这将引发0x800004005异常,可能是因为explorer.exe和浏览器正在运行非提升.

要在非提升的Web浏览器中从提升的应用程序启动网页,请使用Mike Feng制作的 代码.我试图将URL传递给lpApplicationName,但这不起作用.当我使用带有lpApplicationName ="explorer.exe"(或iexplore.exe)和lpCommandLine = url的CreateProcessWithTokenW时也不行.

以下解决方法确实有效:创建一个具有一个任务的小型EXE项目:Process.Start(url),使用CreateProcessWithTokenW来运行此.EXE.在我的Windows 8 RC上,这可以正常工作并在Google Chrome中打开网页.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有