/// <summary> /// 将窗口移动到左上角(避免遮挡) /// </summary> private void MoveLeftTopSide() { try { if (curhWnd != null && curhWnd.ToInt32() > 0) { WindowFormAPI.SetForegroundWindow(curhWnd); WindowFormAPI.MoveWindow(curhWnd, 0, 0, 410, 300, true); } } catch (Exception) { } }
private Bitmap GetImage() { try { WindowFormAPI.SetForegroundWindow(curEasyConnect); Rect rect = new Rect(); WindowFormAPI.GetWindowRect(this.imgCodeHandler, out rect); int startX = rect.Left; int startY = rect.Top; int width = rect.Right - rect.Left; int height = rect.Bottom - rect.Top; Bitmap bitmap = GetPartOfImageRec(startX, startY, width, height); return(bitmap); } catch (Exception ex) { SetText(String.Format("\r\n获取验证码失败:{0}", ex.Message)); return(null); } }
/// <summary> /// pin码登陆 /// </summary> public void DoLogin() { try { CloseProcess(); Process.Start(Config.SangforCSClientPath); Thread.Sleep(15000); List <WindowInfo> list = WindowFormAPI.GetAllDesktopWindows().ToList(); List <WindowInfo> newwindows = list.Where(c => c.szWindowName.Contains("EasyConnect")).ToList(); int i = 0; foreach (var item in newwindows) { i++; IntPtr curtab1 = WindowFormAPI.GetDlgItem(item.hWnd, 1002); IntPtr curtab2 = WindowFormAPI.GetDlgItem(item.hWnd, 1086); IntPtr curtab3 = WindowFormAPI.GetDlgItem(item.hWnd, 1091); if (curtab1 != IntPtr.Zero && curtab2 != IntPtr.Zero && curtab3 != IntPtr.Zero) { WindowFormAPI.SetForegroundWindow(item.hWnd); int tab1 = WindowFormAPI.FindWindowEx(item.hWnd.ToInt32(), 0, "SysTabControl32", null); int tab2 = WindowFormAPI.FindWindowEx(item.hWnd.ToInt32(), 1, "SysTabControl32", null); int tab3 = WindowFormAPI.FindWindowEx(item.hWnd.ToInt32(), 2, "SysTabControl32", null); if (tab1 != 0) { IntPtr sureBtn = WindowFormAPI.GetDlgItem(item.hWnd, 1086); this.SubmitBtnHandler = sureBtn; if (!string.IsNullOrEmpty(Config.VPNUser) && !string.IsNullOrEmpty(Config.VPNPassword)) { #region 解析账号密码 IntPtr fatherInt = new IntPtr(tab1); List <int> childWindowList = WindowFormAPI.GetChildWindows(tab1); foreach (var curitem in childWindowList) { IntPtr curIntPtr = new IntPtr(curitem); int itemId = WindowFormAPI.GetDlgCtrlID(curIntPtr); //用户名 if (itemId == 1009) { WindowFormAPI.SetForegroundWindow(item.hWnd); WindowFormAPI.SendMessage(curIntPtr, WindowFormAPI.WM_SETTEXT, IntPtr.Zero, Config.VPNUser); curEasyConnect = curIntPtr; WindowFormAPI.SetForegroundWindow(curIntPtr); curhWnd = item.hWnd; MoveLeftTopSide(); continue; } //密码 if (itemId == 1010) { WindowFormAPI.SetForegroundWindow(item.hWnd); WindowFormAPI.SendMessage(curIntPtr, WindowFormAPI.WM_SETTEXT, IntPtr.Zero, Config.VPNPassword); MoveLeftTopSide(); continue; } //验证码-输入文本框 if (itemId == 1011) { WindowFormAPI.SetForegroundWindow(item.hWnd); MoveLeftTopSide(); this.imgCodeTextHandler = curIntPtr; continue; } //验证码-图片 if (itemId == 1022) { WindowFormAPI.SetForegroundWindow(item.hWnd); this.imgCodeHandler = curIntPtr; MoveLeftTopSide(); continue; } //验证码切换 if (itemId == 1023) { WindowFormAPI.SetForegroundWindow(item.hWnd); this.changeImgCodeBtnHandler = curIntPtr; MoveLeftTopSide(); continue; } } #endregion } Submit(); } } } } catch (Exception ex) { SetText(ex.Message); } }