public static extern bool ClientToScreen(IntPtr hWnd, ref POINT pt);
/// <summary> /// 获取成交提示 /// </summary> /// <param name="hWnd"></param> /// <returns></returns> public static String GetEntrustTipsAndClickYes(IntPtr hWnd) { string no = "0"; IntPtr confirmWindow = IntPtr.Zero; Win32API.EnumWindowsProc EnumWindowsProc = delegate(IntPtr p, int lParam) { if (p != IntPtr.Zero) { String text = GetWindowText(p); String clazz = GetClassName(p); if (clazz == "#32770" && text == "") { IntPtr hParent = Win32API.GetParent(p); String pText = GetWindowText(hParent); if(pText == @"网上股票交易系统5.0") { int staticId = 0x03EC; IntPtr pStatic = Win32API.GetDlgItem(p, staticId); if(pStatic != IntPtr.Zero) { confirmWindow = p; byte[] lParamStr = new byte[100]; Win32API.SendMessage(pStatic, Win32Code.WM_GETTEXT, 100, lParamStr); String sText = Encoding.Unicode.GetString(lParamStr); Console.WriteLine("找到委托提示窗口:{0}, 合同:{1}", Convert.ToString(p.ToInt64(), 16), sText); if (sText.Contains("委托已成功提交")) { int i = sText.IndexOf("。"); no = sText.Substring(17, i - 17); int btnYesId = 0x0002; IntPtr btnYes = Win32API.GetDlgItem(p, btnYesId); //int pbId; //Win32API.GetWindowThreadProcessId(btnYes, out pbId); POINT pt = new POINT(); pt.x = 1; pt.y = 1; Win32API.SendMessage(btnYes, Win32Code.WM_SETFOCUS, 0, 0); Win32API.PostMessage(btnYes, Win32Code.WM_MOUSEMOVE, 0, ref pt); Win32API.PostMessage(btnYes, Win32Code.WM_LBUTTONDOWN, 0, ref pt); Win32API.PostMessage(btnYes, Win32Code.WM_LBUTTONUP, 0, ref pt); Win32API.PostMessage(btnYes, Win32Code.WM_LBUTTONDOWN, 0, ref pt); Win32API.PostMessage(btnYes, Win32Code.WM_LBUTTONUP, 0, ref pt); //Win32API.keybd_event(13, 0, 0, pbId); //Win32API.keybd_event(13, 0, 2, pbId); Win32API.SendMessage(btnYes, Win32Code.WM_SETFOCUS, 0, 0); Win32API.SendMessage(btnYes, Win32Code.WM_LBUTTONDOWN, 0, 0); Win32API.SendMessage(btnYes, Win32Code.WM_LBUTTONUP, 0, 0); Win32API.SendMessage(btnYes, Win32Code.WM_LBUTTONDOWN, 0, 0); Win32API.SendMessage(btnYes, Win32Code.WM_LBUTTONUP, 0, 0); } } } } return true; } return false; }; Win32API.EnumChildWindows(IntPtr.Zero, EnumWindowsProc, new IntPtr(100)); return no; }
public static extern bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref POINT pptDst, ref SIZE psize, IntPtr hdcSrc, ref POINT pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref POINT lParam);
public static extern int PostMessage(IntPtr hWnd, int msg, int wParam, ref POINT lParam);