2011-06-29 30 views
2

如何在受用户名/密码对话框保护的新浏览器窗口中打开URL并自动填充这些字段(或者甚至更好地将凭据传递给浏览器)?WPF在具有凭据的浏览器中打开URL

注意我需要在新的浏览器窗口中打开它,而不是一个WPF WebControl。

目前我使用的LaunchUriOrFileAction在打开新的浏览器窗口时工作正常,但我需要自动填充凭据。

默认浏览器将为客户端的IE8。所以http://user:[email protected]旧的方式不会工作。

由于

回答

3

以下解决方案使用web浏览器控件打开一个新的IE浏览器窗口。它的工作原理,但有几个limitiations:

  • 很明显,它只能打开IE浏览器 - 这不会,如果你想让它打开Firefox
  • 新的浏览器窗口出现在后台工作,以闪烁的按钮在任务栏
  • 浏览器实际上并不记得凭证,以便用户会得到提示,如果他们试图导航到另一个密码保护的网页

void OpenIEToAuthenticatedUrl(string url, string username, string password) 
{ 
    using (WebBrowser browser = new WebBrowser()) { 
    string userPass = username + ":" + password; 
    string encodedUserPass = Convert.ToBase64String(
     Encoding.ASCII.GetBytes(userPass) 
    ); 

    browser.Navigate(
     url, 
     Guid.NewGuid().ToString(), // Force a new window by passing a unique frame name 
     null, // No POST data 
     "Authorization: Basic " + encodedUserPass 
    ); 
    } 
} 

... 

OpenIEToAuthenticatedUrl(
    "http://example.com/", 
    "user", "pass" 
); 
+0

谢谢,它至少有一个开始,IE的问题很好,但背景窗口是个问题 – Mark

相关问题