如何在winform应用程序中使用dotnetbrowser执行以下操作?
我可以用普通的网页浏览器来做这件事,但我希望它能保持沉默。这就是我尝试使用dotnetbrowser的原因。
dotNetBrowser是一个很好的选择,还是有更好的选择?
这是来自我的测试代码与一个非沉默的网页浏览器。首先,我创建了一个侦听器,用于侦听redirectUri:
var listener = new HttpListener();
listener.Prefixes.Add(redirectURI);
listener.Start();然后在url浏览器中启动url:
Process p = Process.Start(url);已启动的url将向redirectUri发送一个回调。听者会明白的。
var context = await listener.GetContextAsync(); ;
string formData = string.Empty;
using (var body = context.Request.InputStream)
{
using (var reader = new System.IO.StreamReader(body, context.Request.ContentEncoding))
{
formData = reader.ReadToEnd();
}
}
listener.Close();发布于 2021-01-21 10:27:16
我在dotnetbrowser支持站点的帮助下找到了一个解决方案。
这是我的新测试项目中的winform构造函数:
public Form1()
{
webView = new BrowserView() { Dock = DockStyle.Fill };
Task.Run(() =>
{
engine = EngineFactory.Create(new EngineOptions.Builder
{
RenderingMode = RenderingMode.HardwareAccelerated,
LicenseKey = "your license key here"
}
.Build());
browser = engine.CreateBrowser();
})
.ContinueWith(t =>
{
webView.InitializeFrom(browser);
var listener = new HttpListener();
listener.Prefixes.Add(redirectURI);
listener.Start();
browser.Navigation.LoadUrl(url);
var context = listener.GetContextAsync().GetAwaiter().GetResult();
//Get data from redirectUri. You find this code from test example above, but not really relevant for the problem.
var formData = GetRequestPostData(context.Request);
listener.Close();
}, TaskScheduler.FromCurrentSynchronizationContext());
InitializeComponent();
FormClosing += Form1_FormClosing;
Controls.Add(webView);
this.Visible = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
browser?.Dispose();
engine?.Dispose();
}https://stackoverflow.com/questions/65814484
复制相似问题