我想让我的WPF应用程序打开默认浏览器并转到某个网页.我怎么做?
System.Diagnostics.Process.Start("http://www.webpage.com");
许多方法之一.
我一直在使用这一行来启动默认浏览器:
System.Diagnostics.Process.Start("http://www.google.com");
虽然给出了一个很好的答案(使用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; }
Microsoft在KB305703文章中解释了它如何使用Visual C#以编程方式启动默认Internet浏览器.
不要忘记查看"故障排除"部分.
您无法从提升的应用程序启动网页.这将引发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中打开网页.