Archive Browser
Download InternetGetCookieExDemo.zip, last updated 20/01/2019 (34.92 KB)
Download- md5: e0dbdca22a22654e8d8b9bb3dd11a473
- sha1: 7fbbb05f2735750766392cca2bee4256338cf563
- sha256: 1441f79ba3e8b9d3b620dad91c3f7faa9ccafc2b3b4f227713fa03f4f53c4068
using System;
using System.Drawing;
using System.Linq;
using System.Media;
using System.Windows.Forms;
// Reading cookies from Internet Explorer
// https://www.cyotek.com/blog/reading-cookies-from-internet-explorer
// Copyright © 2019 Cyotek Ltd. All Rights Reserved.
// This source code is licensed under the Creative Commons Attribution 4.0 International License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/.
// Found this example useful?
// https://www.paypal.me/cyotek
namespace Cyotek.Demonstrations.InternetGetCookieEx
{
public partial class MainForm : Form
{
#region Fields
private WebBrowser _webBrowser;
#endregion
#region Constructors
public MainForm()
{
this.InitializeComponent();
}
#endregion
#region Methods
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing)
{
components?.Dispose();
if (_webBrowser != null)
{
_webBrowser.CanGoBackChanged -= this.WebBrowserCanGoBackChangedHandler;
_webBrowser.CanGoForwardChanged -= this.WebBrowserCanGoForwardChangedHandler;
_webBrowser.Navigating -= this.WebBrowserNavigatingHandler;
_webBrowser.Navigated -= this.WebBrowserNavigatedHandler;
_webBrowser.DocumentCompleted -= this.WebBrowserDocumentCompletedHandler;
}
}
base.Dispose(disposing);
}
protected void ExecCommand(Action<WebBrowser> command)
{
if (_webBrowser != null)
{
try
{
command(_webBrowser);
}
catch (Exception ex)
{
MessageBox.Show(ex.GetBaseException().Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
SystemSounds.Beep.Play();
}
}
/// <summary>
/// Raises the <see cref="E:System.Windows.Forms.Form.FormClosing"/> event.
/// </summary>
/// <param name="e">A <see cref="T:System.Windows.Forms.FormClosingEventArgs"/> that contains the event data. </param>
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (_webBrowser != null && !_webBrowser.IsDisposed)
{
_webBrowser.CanGoBackChanged -= this.WebBrowserCanGoBackChangedHandler;
_webBrowser.CanGoForwardChanged -= this.WebBrowserCanGoForwardChangedHandler;
_webBrowser.Navigating -= this.WebBrowserNavigatingHandler;
_webBrowser.Navigated -= this.WebBrowserNavigatedHandler;
_webBrowser.DocumentCompleted -= this.WebBrowserDocumentCompletedHandler;
_webBrowser.Parent?.Controls.Remove(_webBrowser);
_webBrowser = null;
}
base.OnFormClosing(e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!this.DesignMode)
{
this.Font = SystemFonts.DialogFont;
}
this.Text = Application.ProductName;
}
/// <param name="e">An <see cref="T:System.EventArgs" /> that contains the event data. </param>
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.ResizeUriEditor();
}
/// <summary>
/// Raises the <see cref="E:System.Windows.Forms.Form.Shown"/> event.
/// </summary>
/// <param name="e">A <see cref="T:System.EventArgs"/> that contains the event data. </param>
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
Uri uri;
uri = new Uri("https://demo.cyotek.com/features/cookies.php");
uriToolStripTextBox.Text = uri.OriginalString;
_webBrowser = this.CreateWebBrowser();
if (_webBrowser != null)
{
splitContainer.Panel1.Controls.Add(_webBrowser);
_webBrowser.Navigate(uri);
}
else
{
MessageBox.Show("Failed to create embedded web browser.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
using (AboutDialog dialog = new AboutDialog())
{
dialog.ShowDialog(this);
}
}
private void browserToolStrip_ItemAdded(object sender, ToolStripItemEventArgs e)
{
this.ResizeUriEditor();
}
private void CheckIfDone()
{
if (_webBrowser != null && !_webBrowser.IsBusy)
{
statusToolStripStatusLabel.Text = string.Empty;
uriToolStripTextBox.Text = _webBrowser.Url.OriginalString;
stopToolStripButton.Enabled = false;
refreshToolStripButton.Enabled = true;
this.ListCookies();
}
}
private void cookiesToolStripMenuItem_Click(object sender, EventArgs e)
{
using (ViewCookiesDialog dialog = new ViewCookiesDialog(_webBrowser.Url))
{
dialog.ShowDialog();
}
}
private WebBrowser CreateWebBrowser()
{
WebBrowser result;
try
{
result = new WebBrowser
{
Dock = DockStyle.Fill,
ScriptErrorsSuppressed = true,
IsWebBrowserContextMenuEnabled = false
};
result.CanGoBackChanged += this.WebBrowserCanGoBackChangedHandler;
result.CanGoForwardChanged += this.WebBrowserCanGoForwardChangedHandler;
result.Navigating += this.WebBrowserNavigatingHandler;
result.Navigated += this.WebBrowserNavigatedHandler;
result.DocumentCompleted += this.WebBrowserDocumentCompletedHandler;
}
catch
{
result = null;
}
return result;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private CookieRetrievalFlags GetFlags()
{
CookieRetrievalFlags flags;
flags = CookieRetrievalFlags.None;
if (includeHTTPOnlyToolStripMenuItem.Checked)
{
flags |= CookieRetrievalFlags.HttpOnly;
}
return flags;
}
private void includeHTTPOnlyToolStripMenuItem_Click(object sender, EventArgs e)
{
includeHTTPOnlyToolStripMenuItem.Checked = !includeHTTPOnlyToolStripMenuItem.Checked;
this.ListCookies();
}
private void ListCookies()
{
this.ListInternetGetCookieEx();
this.ListWebBrowserControlCookies();
}
private void ListInternetGetCookieEx()
{
CookieRetrievalFlags flags;
string cookies;
flags = this.GetFlags();
cookies = Cookies.GetCookies(_webBrowser.Url, flags);
cookiesTextBox.Cookies = cookies;
//CookieContainer container;
//HttpWebRequest request;
//container = new CookieContainer();
//container.SetCookies(_webBrowser.Url, cookies.Replace("; ", ","));
//request = WebRequest.CreateHttp(_webBrowser.Url);
//request.CookieContainer = container;
}
private void ListWebBrowserControlCookies()
{
string cookies;
cookies = _webBrowser?.Document?.Cookie;
instanceCookiesTextBox.Cookies = cookies;
}
private void Navigate(Uri uri)
{
if (uri != null)
{
this.ExecCommand(wb => wb.Navigate(uri));
}
else
{
SystemSounds.Exclamation.Play();
}
}
private void Navigate(string url)
{
Uri uri;
if (!string.IsNullOrEmpty(url) && Uri.TryCreate(url, UriKind.Absolute, out uri))
{
this.ExecCommand(wb => wb.Navigate(uri));
}
else
{
SystemSounds.Exclamation.Play();
}
}
private void navigateBackToolStripButton_Click(object sender, EventArgs e)
{
this.ExecCommand(wb => wb.GoBack());
}
private void navigateForwardToolStripButton_Click(object sender, EventArgs e)
{
this.ExecCommand(wb => wb.GoForward());
}
private void refreshToolStripButton_Click(object sender, EventArgs e)
{
this.Navigate(_webBrowser.Url);
}
private void ResizeUriEditor()
{
if (browserToolStrip != null)
{
int width;
int otherWidth;
otherWidth = browserToolStrip.Items.Cast<ToolStripItem>().Where(item => item != uriToolStripTextBox).Sum(item => item.Width + item.Margin.Horizontal);
width = this.ClientSize.Width - (otherWidth + uriToolStripTextBox.Margin.Horizontal + 8);
uriToolStripTextBox.Width = width;
uriToolStripTextBox.Invalidate();
}
}
private void stopToolStripButton_Click(object sender, EventArgs e)
{
this.ExecCommand(wb => wb.Stop());
}
private void uriToolStripTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
e.Handled = true;
this.Navigate(uriToolStripTextBox.Text);
}
}
private void WebBrowserCanGoBackChangedHandler(object sender, EventArgs e)
{
navigateBackToolStripButton.Enabled = _webBrowser.CanGoBack;
}
private void WebBrowserCanGoForwardChangedHandler(object sender, EventArgs e)
{
navigateForwardToolStripButton.Enabled = _webBrowser.CanGoForward;
}
private void WebBrowserDocumentCompletedHandler(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.CheckIfDone();
}
private void WebBrowserNavigatedHandler(object sender, WebBrowserNavigatedEventArgs e)
{
this.CheckIfDone();
}
private void WebBrowserNavigatingHandler(object sender, WebBrowserNavigatingEventArgs e)
{
stopToolStripButton.Enabled = true;
statusToolStripStatusLabel.Text = e.Url.ToString();
}
#endregion
}
}
Donate
This software may be used free of charge, but as with all free software there are costs involved to develop and maintain.
If this site or its services have saved you time, please consider a donation to help with running costs and timely updates.
Donate