Browser.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using System;
  2. using System.Diagnostics;
  3. using System.Windows.Forms;
  4. using UAS_Web.tool;
  5. using CefSharp;
  6. using CefSharp.WinForms;
  7. using System.Text.RegularExpressions;
  8. using System.Collections.Generic;
  9. using System.Net;
  10. using System.Text;
  11. using System.IO;
  12. using System.Web;
  13. using System.Threading;
  14. namespace UAS_Web
  15. {
  16. public partial class Browser : Form
  17. {
  18. private ChromiumWebBrowser webBrowser;
  19. public Browser()
  20. {
  21. InitializeComponent();
  22. Text = "";
  23. string path = "http://119.145.34.88:8099/mes/vendbarcode/relogin.action";
  24. // string path = "http://113.108.109.210:8099/ERP/vendbarcode/loginSuc.action";
  25. //string path = "http://stwecig.vicp.io:8099/ERP/vendbarcode/relogin.action";
  26. this.SetStyle(ControlStyles.UserPaint|ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
  27. webBrowser = new ChromiumWebBrowser(path)
  28. {
  29. Dock = DockStyle.Fill
  30. };
  31. CheckForIllegalCrossThreadCalls = false;
  32. webBrowser.MenuHandler = new MenuHandler();
  33. webBrowser.RequestHandler = new RequestHandler();
  34. webBrowser.DownloadHandler = new DownLoadFile();
  35. Controls.Add(webBrowser);
  36. webBrowser.LoadError += WebBrowser_LoadError;
  37. webBrowser.FrameLoadEnd += FrameLoadEnd;
  38. webBrowser.FrameLoadStart += WebBrowser_FrameLoadStart;
  39. webBrowser.KeyboardHandler = new CEFKeyBoardHander();
  40. }
  41. private void WebBrowser_FrameLoadStart(object sender, FrameLoadStartEventArgs e)
  42. {
  43. }
  44. void FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
  45. {
  46. Thread.Sleep(500);
  47. var cookiemanager = CefSharp.Cef.GetGlobalCookieManager();
  48. CookieVisitor visitor = new CookieVisitor();
  49. visitor.SendCookie += visitor_SendCookie;
  50. cookiemanager.VisitAllCookies(visitor);
  51. if (e.Url.Contains("vendbarcode/login.jsp") || e.Url.Contains("relogin.action"))
  52. {
  53. e.Browser.FocusedFrame.EvaluateScriptAsync("document.getElementById('username').value = '" + BaseUtil.GetCacheData("username") + "';document.getElementById('password').value = '" + BaseUtil.GetCacheData("password") + "';document.getElementById('master').innerHTML = '" + BaseUtil.GetCacheData("master_fun") + "';document.getElementById('master1').value = '" + BaseUtil.GetCacheData("master_name") + "';", new TimeSpan(600000));
  54. return;
  55. }
  56. }
  57. private void visitor_SendCookie(CefSharp.Cookie obj)
  58. {
  59. if (obj.Path.Contains("vendbarcode"))
  60. {
  61. if (obj.Name == "username")
  62. BaseUtil.SetCacheData("username", HttpUtility.UrlDecode(obj.Value));
  63. if (obj.Name == "password")
  64. BaseUtil.SetCacheData("password", HttpUtility.UrlDecode(obj.Value));
  65. if (obj.Name == "master_name")
  66. BaseUtil.SetCacheData("master_name", HttpUtility.UrlDecode(obj.Value));
  67. if (obj.Name == "master_fun")
  68. BaseUtil.SetCacheData("master_fun", HttpUtility.UrlDecode(obj.Value));
  69. }
  70. }
  71. private void WebBrowser_LoadError(object sender, LoadErrorEventArgs e)
  72. {
  73. ////指定放大镜
  74. //if (e.FailedUrl.Contains("vendbarcode/batchdelivery.jsp?whoami=Delivery!Deal#"))
  75. // return;
  76. //if (e.FailedUrl.Contains("common/excel"))
  77. // return;
  78. //if (e.FailedUrl.Contains("common/downloadbyId.action"))
  79. // return;
  80. //MessageBox.Show("当前网络无法访问" + e.ErrorText);
  81. }
  82. private void Browser_FormClosing(object sender, FormClosingEventArgs e)
  83. {
  84. webBrowser.GetBrowser().CloseBrowser(true);
  85. Process.GetCurrentProcess().Kill();
  86. }
  87. private void Browser_Load(object sender, EventArgs e)
  88. {
  89. Process[] pro = Process.GetProcessesByName("UAS_Web");
  90. for (int i = 0; i < pro.Length; i++)
  91. {
  92. if (pro[i].Id != Process.GetCurrentProcess().Id)
  93. {
  94. pro[i].Kill();
  95. }
  96. }
  97. textBox1.Text = webBrowser.Address;
  98. }
  99. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  100. {
  101. if (e.KeyCode == Keys.Enter)
  102. {
  103. webBrowser.Load(textBox1.Text);
  104. }
  105. }
  106. }
  107. public class CEFKeyBoardHander : IKeyboardHandler
  108. {
  109. public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
  110. {
  111. if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
  112. {
  113. var key = (Keys)windowsKeyCode;
  114. switch (key)
  115. {
  116. case Keys.F12:
  117. browser.ShowDevTools();
  118. break;
  119. }
  120. }
  121. return false;
  122. }
  123. public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
  124. {
  125. return false;
  126. }
  127. }
  128. }