protected virtual void ShowList() { if (popup.Visible == false) { list.SelectedIndex = -1; UpdateList(); Point p = PointToScreen(new Point(0, 0)); p.X += PopupOffset.X; p.Y += Height + PopupOffset.Y; popup.Location = p; if (list.Items.Count > 0) { popup.Show(); if (hook == null) { hook = new WinHook(this); hook.AssignHandle(FindForm().Handle); } Focus(); SelectionStart = Text.Length; } } else { UpdateList(); } }
protected virtual void ShowList() { if (popup.Visible == false) { list.SelectedIndex = -1; UpdateList(); Point p = PointToScreen(new Point(0, 0)); p.X += PopupOffset.X; p.Y += Height + PopupOffset.Y; popup.Location = p; if (list.Items.Count <= 0) { return; } popup.Show(); if (hook == null) { hook = new WinHook(this); var findForm = FindForm(); if (findForm != null) { hook.AssignHandle(findForm.Handle); } } Focus(); } else { UpdateList(); } }
internal static void SetEnable(bool enable) { WinHook.Desktop_Show_Hide(enable); WinHook.CtrlAltDel_Enable_Disable(enable); WinHook.AltTab1_Enable_Disable(enable); WinHook.StartButton_Show_Hide(enable); WinHook.Taskbar_Show_Hide(enable); WinHook.TaskSwitching_Enable_Disable(enable); WinHook.TaskManager_Enable_Disable(enable); }
protected virtual void HideList() { Mode = EntryMode.Text; if (hook != null) { hook.ReleaseHandle(); } hook = null; popup.Hide(); }
protected virtual void HideList() { this.Mode = EntryMode.Text; if (this.hook != null) { this.hook.ReleaseHandle(); } this.hook = null; this.popup.Hide(); }
static void Main() { var window = WinHook.CreateForegroundChangedEventArg().ProcessName; WinHook.ForegroundWindowChanged += (sender, arg) => { window = arg.ProcessName; }; WinHook.MouseChanged += (sender, arg) => { var click = arg.Msg == 513 ? "WM_LBUTTONDOWN" : "WM_LBUTTONUP"; Console.WriteLine($"{window} {click} @ ({arg.X},{arg.Y})"); }; EventLoop.Run(); }
protected virtual void ShowList() { if (this.popup.Visible == false) { this.list.SelectedIndex = -1; this.UpdateList(); Point p = this.PointToScreen(new Point(0, 0)); p.X += this.PopupOffset.X; p.Y += this.Height + this.PopupOffset.Y; this.popup.Location = p; if (this.list.Items.Count > 0) { //this.popup.Show(); ShowWindow(this.popup.Handle, SW_SHOWNOACTIVATE);//显示一个SW_SHOWNOACTIVATE的窗体 //TOPMOST,不获取焦点的方式 SetWindowPos(this.popup.Handle, HWND_TOPMOST, this.popup.Left, this.popup.Top, this.popup.Width, this.popup.Height, SWP_NOACTIVATE); if (this.hook == null) { this.hook = new WinHook(this); if (this.Parent != null) { this.hook.AssignHandle(this.Parent.Handle); } //this.hook.AssignHandle(this.FindForm().Handle); } this.Focus(); } } else { this.UpdateList(); } }
protected virtual void HideList() { this.Mode = EntryMode.Text; if (this.hook != null) this.hook.ReleaseHandle(); this.hook = null; this.popup.Hide(); }
private void ShowList() { if (!this.popup.Visible) { this.list.SelectedIndex = -1; this.UpdateList(); Point point = base.PointToScreen(new Point(0, 0)); point.Y += base.Height; this.popup.Location = point; if (this.list.Items.Count > 0) { this.popup.Show(); if (this.hook == null) { this.hook = new WinHook(this); this.hook.AssignHandle(base.FindForm().Handle); } base.Focus(); } } else { this.UpdateList(); } }
private void HideList() { this.flgAutoCompShow = false; if (this.hook != null) { this.hook.ReleaseHandle(); } this.hook = null; this.popup.Hide(); }
public MTHPartyPoker(int hwnd, ICore core) : base(hwnd, core) { TableName = WindowTitle.Substring(0, WindowTitle.IndexOf('-')); // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)WindowHandle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; // Update children UpdateChildren(); // Check if we're seated bool foundChild = false; foreach (ChildWindow cw in children.Values) if (cw.ControlID == 443 && cw.IsVisible) { foundChild = true; break; } if (foundChild) { isSeated = true; OnSeated(); } else { isSeated = false; OnUnSeated(); } // Check if we're sitting out if (isSeated) { foundChild = false; foreach (ChildWindow cw in children.Values) if (cw.ControlID == 4000 && cw.IsVisible && cw.Text.ToLower().Replace(" ", "") == "iamback") { foundChild = true; break; } if (foundChild) { isSittingOut = true; OnSittingOut(); } else { isSittingOut = false; OnSittingIn(); } } // TODO: Check for requiring action }
protected internal virtual void HideList() { Mode = EntryMode.Text; if (hook != null) { hook.ReleaseHandle(); } hook = null; popup.Hide(); }
/// <summary> /// Inherited constructor, takes care of site specific identification /// </summary> /// <param name="handle"></param> public PartyTable(int handle) : base(handle) { // Set size restrictions MinTableSize = new Size(486, 367); MaxTableSize = new Size(796, 579); TableSizeRatio = MaxTableSize.Width / MaxTableSize.Height; // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)handle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; Log.Write("WinHooker enabled"); // Set keyhook to listen for keys kh = new KeyHook(); kh.HwndParam = (IntPtr)handle; kh.IgnoreCapsLock = true; kh.KeyFilterList = new KeyList(); kh.Messages = new WindowsMessageList(); kh.Messages.AddMessage(KeyboardMessages.WM_CHAR); kh.Messages.AddMessage(KeyboardMessages.WM_KEYUP); kh.Messages.AddMessage(KeyboardMessages.WM_KEYDOWN); kh.Monitor = HookMonitor.HwndAndChildren; kh.OnKeyDown += new KeyDownHookEventHandler(kh_OnKeyDown); kh.HookType = HookTypes.Keyboard; // Add all decimal keys kh.KeyFilterList.AddKey((int)Keys.D0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Decimal, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.OemPeriod, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Oemcomma, KeyFlags.None); // Add blocking keys blockingKeys.Add((int)Keys.D0); blockingKeys.Add((int)Keys.NumPad0); blockingKeys.Add((int)Keys.D1); blockingKeys.Add((int)Keys.NumPad1); blockingKeys.Add((int)Keys.D2); blockingKeys.Add((int)Keys.NumPad2); blockingKeys.Add((int)Keys.D3); blockingKeys.Add((int)Keys.NumPad3); blockingKeys.Add((int)Keys.D4); blockingKeys.Add((int)Keys.NumPad4); blockingKeys.Add((int)Keys.D5); blockingKeys.Add((int)Keys.NumPad5); blockingKeys.Add((int)Keys.D6); blockingKeys.Add((int)Keys.NumPad6); blockingKeys.Add((int)Keys.D7); blockingKeys.Add((int)Keys.NumPad7); blockingKeys.Add((int)Keys.D8); blockingKeys.Add((int)Keys.NumPad8); blockingKeys.Add((int)Keys.D9); blockingKeys.Add((int)Keys.NumPad9); blockingKeys.Add((int)Keys.Decimal); blockingKeys.Add((int)Keys.OemPeriod); blockingKeys.Add((int)Keys.Oemcomma); // Start the hooker! kh.Enabled = true; Log.Write("KeyHooker enabled"); // Determine GameLimit if (name.IndexOf(" - NL ") != -1) gameLimit = TableFactory.GameLimit.NL; else if (name.IndexOf(" - PL ") != -1) gameLimit = TableFactory.GameLimit.PL; else gameLimit = TableFactory.GameLimit.FL; // Determine GameType if (name.IndexOf(" Hold'em") != -1) gameType = TableFactory.GameType.Holdem; else if (name.IndexOf(" Omaha") != -1) gameType = TableFactory.GameType.Omaha; else if (name.IndexOf(" Stud") != -1) gameType = TableFactory.GameType.Stud; // Determine GameForm Regex regexSNG = new Regex(" \\$[0-9]{1,5} Buy-in[ ]*"); Regex regexMTT = new Regex(" Table #[0-9]{1,4} - "); if (regexSNG.IsMatch(name)) gameForm = TableFactory.GameForm.SNG; else if (regexMTT.IsMatch(name)) gameForm = TableFactory.GameForm.MTT; else gameForm = TableFactory.GameForm.Cash; // Set name if (windowTitle.IndexOf(" - ") > -1) name = windowTitle.Substring(0, windowTitle.IndexOf(" - ")); else name = windowTitle; // Determine stakes Regex stakesRegex; Match m; switch (gameForm) { case TableFactory.GameForm.SNG: stakesRegex = new Regex(" \\$(?<buyin>[0-9]{1,5}) Buy-in[ ]*\\."); m = stakesRegex.Match(windowTitle); if (m.Success) stakes = "$" + m.Groups["buyin"] + " + $" + m.Groups["fee"]; break; case TableFactory.GameForm.MTT: break; case TableFactory.GameForm.Cash: switch (gameLimit) { case TableFactory.GameLimit.NL: case TableFactory.GameLimit.PL: stakesRegex = new Regex(" \\$(?<buyin>[0-9]{1,6})"); m = stakesRegex.Match(windowTitle); if (m.Success) stakes = "$" + m.Groups["buyin"]; break; case TableFactory.GameLimit.FL: stakesRegex = new Regex(" \\$(?<sb>[0-9]{1,5})/\\$(?<bb>[0-9]{1,5})"); m = stakesRegex.Match(windowTitle); if (m.Success) stakes = "$" + m.Groups["sb"] + "/$" + m.Groups["bb"]; break; } break; } // Get our children UpdateChildren(); // Check if we're sitting out from the getco! if (!IsSittingOut && IsSittingOutVisible()) { // We're sitting out now, we didn't before IsSittingOut = true; sittingOut(); } }
/// <summary> /// Inherited constructor, takes care of site specific identification /// </summary> /// <param name="handle"></param> public FTPTable(int handle) : base(handle) { // Set size restrictions MinTableSize = new Size(800, 575); MaxTableSize = new Size(800, 575); TableSizeRatio = MaxTableSize.Width / MaxTableSize.Height; // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)handle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; Log.Write("WinHooker enabled"); // Set keyhook to listen for keys kh = new KeyHook(); kh.HwndParam = (IntPtr)handle; kh.IgnoreCapsLock = true; kh.KeyFilterList = new KeyList(); kh.Messages = new WindowsMessageList(); kh.Messages.AddMessage(KeyboardMessages.WM_CHAR); kh.Messages.AddMessage(KeyboardMessages.WM_KEYUP); kh.Messages.AddMessage(KeyboardMessages.WM_KEYDOWN); kh.Monitor = HookMonitor.HwndAndChildren; kh.OnKeyDown += new KeyDownHookEventHandler(kh_OnKeyDown); kh.HookType = HookTypes.Keyboard; // Add all decimal keys kh.KeyFilterList.AddKey((int)Keys.D0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Decimal, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.OemPeriod, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Oemcomma, KeyFlags.None); // Add blocking keys blockingKeys.Add((int)Keys.D0); blockingKeys.Add((int)Keys.NumPad0); blockingKeys.Add((int)Keys.D1); blockingKeys.Add((int)Keys.NumPad1); blockingKeys.Add((int)Keys.D2); blockingKeys.Add((int)Keys.NumPad2); blockingKeys.Add((int)Keys.D3); blockingKeys.Add((int)Keys.NumPad3); blockingKeys.Add((int)Keys.D4); blockingKeys.Add((int)Keys.NumPad4); blockingKeys.Add((int)Keys.D5); blockingKeys.Add((int)Keys.NumPad5); blockingKeys.Add((int)Keys.D6); blockingKeys.Add((int)Keys.NumPad6); blockingKeys.Add((int)Keys.D7); blockingKeys.Add((int)Keys.NumPad7); blockingKeys.Add((int)Keys.D8); blockingKeys.Add((int)Keys.NumPad8); blockingKeys.Add((int)Keys.D9); blockingKeys.Add((int)Keys.NumPad9); blockingKeys.Add((int)Keys.Decimal); blockingKeys.Add((int)Keys.OemPeriod); blockingKeys.Add((int)Keys.Oemcomma); // Start the hooker! kh.Enabled = true; Log.Write("KeyHooker enabled"); // Determine GameLimit if (name.IndexOf(" - No Limit ") != -1) gameLimit = TableFactory.GameLimit.NL; else if (name.IndexOf(" - Pot Limit ") != -1) gameLimit = TableFactory.GameLimit.PL; else gameLimit = TableFactory.GameLimit.FL; // Determine GameType if (name.IndexOf(" Hold'em") != -1) gameType = TableFactory.GameType.Holdem; else if (name.IndexOf(" Omaha") != -1) gameType = TableFactory.GameType.Omaha; // Determine GameForm if (windowTitle.Contains("Sit & Go")) gameForm = TableFactory.GameForm.SNG; else gameForm = TableFactory.GameForm.Unknown; // Get our children UpdateChildren(); // Check if we're sitting out from the getco! if (!IsSittingOut && IsSittingOutVisible()) { // We're sitting out now, we didn't before IsSittingOut = true; sittingOut(); } }
private void MainForm_Load(object sender, EventArgs e) { ForegroundWindowChanged(null, WinHook.CreateForegroundChangedEventArg()); }
public MTHPartyPoker(int hwnd, ICore core) : base(hwnd, core) { TableName = WindowTitle.Substring(0, WindowTitle.IndexOf('-')); // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)WindowHandle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; // Update children UpdateChildren(); // Check if we're seated bool foundChild = false; foreach (ChildWindow cw in children.Values) { if (cw.ControlID == 443 && cw.IsVisible) { foundChild = true; break; } } if (foundChild) { isSeated = true; OnSeated(); } else { isSeated = false; OnUnSeated(); } // Check if we're sitting out if (isSeated) { foundChild = false; foreach (ChildWindow cw in children.Values) { if (cw.ControlID == 4000 && cw.IsVisible && cw.Text.ToLower().Replace(" ", "") == "iamback") { foundChild = true; break; } } if (foundChild) { isSittingOut = true; OnSittingOut(); } else { isSittingOut = false; OnSittingIn(); } } // TODO: Check for requiring action }
/// <summary> /// Inherited constructor, takes care of site specific identification /// </summary> /// <param name="handle"></param> public PartyTable(int handle) : base(handle) { // Set size restrictions MinTableSize = new Size(486, 367); MaxTableSize = new Size(796, 579); TableSizeRatio = MaxTableSize.Width / MaxTableSize.Height; // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)handle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; Log.Write("WinHooker enabled"); // Set keyhook to listen for keys kh = new KeyHook(); kh.HwndParam = (IntPtr)handle; kh.IgnoreCapsLock = true; kh.KeyFilterList = new KeyList(); kh.Messages = new WindowsMessageList(); kh.Messages.AddMessage(KeyboardMessages.WM_CHAR); kh.Messages.AddMessage(KeyboardMessages.WM_KEYUP); kh.Messages.AddMessage(KeyboardMessages.WM_KEYDOWN); kh.Monitor = HookMonitor.HwndAndChildren; kh.OnKeyDown += new KeyDownHookEventHandler(kh_OnKeyDown); kh.HookType = HookTypes.Keyboard; // Add all decimal keys kh.KeyFilterList.AddKey((int)Keys.D0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Decimal, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.OemPeriod, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Oemcomma, KeyFlags.None); // Add blocking keys blockingKeys.Add((int)Keys.D0); blockingKeys.Add((int)Keys.NumPad0); blockingKeys.Add((int)Keys.D1); blockingKeys.Add((int)Keys.NumPad1); blockingKeys.Add((int)Keys.D2); blockingKeys.Add((int)Keys.NumPad2); blockingKeys.Add((int)Keys.D3); blockingKeys.Add((int)Keys.NumPad3); blockingKeys.Add((int)Keys.D4); blockingKeys.Add((int)Keys.NumPad4); blockingKeys.Add((int)Keys.D5); blockingKeys.Add((int)Keys.NumPad5); blockingKeys.Add((int)Keys.D6); blockingKeys.Add((int)Keys.NumPad6); blockingKeys.Add((int)Keys.D7); blockingKeys.Add((int)Keys.NumPad7); blockingKeys.Add((int)Keys.D8); blockingKeys.Add((int)Keys.NumPad8); blockingKeys.Add((int)Keys.D9); blockingKeys.Add((int)Keys.NumPad9); blockingKeys.Add((int)Keys.Decimal); blockingKeys.Add((int)Keys.OemPeriod); blockingKeys.Add((int)Keys.Oemcomma); // Start the hooker! kh.Enabled = true; Log.Write("KeyHooker enabled"); // Determine GameLimit if (name.IndexOf(" - NL ") != -1) { gameLimit = TableFactory.GameLimit.NL; } else if (name.IndexOf(" - PL ") != -1) { gameLimit = TableFactory.GameLimit.PL; } else { gameLimit = TableFactory.GameLimit.FL; } // Determine GameType if (name.IndexOf(" Hold'em") != -1) { gameType = TableFactory.GameType.Holdem; } else if (name.IndexOf(" Omaha") != -1) { gameType = TableFactory.GameType.Omaha; } else if (name.IndexOf(" Stud") != -1) { gameType = TableFactory.GameType.Stud; } // Determine GameForm Regex regexSNG = new Regex(" \\$[0-9]{1,5} Buy-in[ ]*"); Regex regexMTT = new Regex(" Table #[0-9]{1,4} - "); if (regexSNG.IsMatch(name)) { gameForm = TableFactory.GameForm.SNG; } else if (regexMTT.IsMatch(name)) { gameForm = TableFactory.GameForm.MTT; } else { gameForm = TableFactory.GameForm.Cash; } // Set name if (windowTitle.IndexOf(" - ") > -1) { name = windowTitle.Substring(0, windowTitle.IndexOf(" - ")); } else { name = windowTitle; } // Determine stakes Regex stakesRegex; Match m; switch (gameForm) { case TableFactory.GameForm.SNG: stakesRegex = new Regex(" \\$(?<buyin>[0-9]{1,5}) Buy-in[ ]*\\."); m = stakesRegex.Match(windowTitle); if (m.Success) { stakes = "$" + m.Groups["buyin"] + " + $" + m.Groups["fee"]; } break; case TableFactory.GameForm.MTT: break; case TableFactory.GameForm.Cash: switch (gameLimit) { case TableFactory.GameLimit.NL: case TableFactory.GameLimit.PL: stakesRegex = new Regex(" \\$(?<buyin>[0-9]{1,6})"); m = stakesRegex.Match(windowTitle); if (m.Success) { stakes = "$" + m.Groups["buyin"]; } break; case TableFactory.GameLimit.FL: stakesRegex = new Regex(" \\$(?<sb>[0-9]{1,5})/\\$(?<bb>[0-9]{1,5})"); m = stakesRegex.Match(windowTitle); if (m.Success) { stakes = "$" + m.Groups["sb"] + "/$" + m.Groups["bb"]; } break; } break; } // Get our children UpdateChildren(); // Check if we're sitting out from the getco! if (!IsSittingOut && IsSittingOutVisible()) { // We're sitting out now, we didn't before IsSittingOut = true; sittingOut(); } }
/// <summary> /// Inherited constructor, takes care of site specific identification /// </summary> /// <param name="handle"></param> public FTPTable(int handle) : base(handle) { // Set size restrictions MinTableSize = new Size(800, 575); MaxTableSize = new Size(800, 575); TableSizeRatio = MaxTableSize.Width / MaxTableSize.Height; // Set WinHook to listen for show/hide window wh = new WinHook(); wh.HwndParam = (IntPtr)handle; wh.Monitor = HookMonitor.HwndAndChildren; wh.HookType = HookTypes.CallWndProc; wh.Messages = new WindowsMessageList(); wh.Messages.AddMessage(StandardMessages.WM_SHOWWINDOW); wh.OnMessageHook += new MessageHookEventHandler(wh_OnMessageHook); wh.Enabled = true; Log.Write("WinHooker enabled"); // Set keyhook to listen for keys kh = new KeyHook(); kh.HwndParam = (IntPtr)handle; kh.IgnoreCapsLock = true; kh.KeyFilterList = new KeyList(); kh.Messages = new WindowsMessageList(); kh.Messages.AddMessage(KeyboardMessages.WM_CHAR); kh.Messages.AddMessage(KeyboardMessages.WM_KEYUP); kh.Messages.AddMessage(KeyboardMessages.WM_KEYDOWN); kh.Monitor = HookMonitor.HwndAndChildren; kh.OnKeyDown += new KeyDownHookEventHandler(kh_OnKeyDown); kh.HookType = HookTypes.Keyboard; // Add all decimal keys kh.KeyFilterList.AddKey((int)Keys.D0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad0, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad1, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad2, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad3, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad4, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad5, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad6, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad7, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad8, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.D9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.NumPad9, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Decimal, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.OemPeriod, KeyFlags.None); kh.KeyFilterList.AddKey((int)Keys.Oemcomma, KeyFlags.None); // Add blocking keys blockingKeys.Add((int)Keys.D0); blockingKeys.Add((int)Keys.NumPad0); blockingKeys.Add((int)Keys.D1); blockingKeys.Add((int)Keys.NumPad1); blockingKeys.Add((int)Keys.D2); blockingKeys.Add((int)Keys.NumPad2); blockingKeys.Add((int)Keys.D3); blockingKeys.Add((int)Keys.NumPad3); blockingKeys.Add((int)Keys.D4); blockingKeys.Add((int)Keys.NumPad4); blockingKeys.Add((int)Keys.D5); blockingKeys.Add((int)Keys.NumPad5); blockingKeys.Add((int)Keys.D6); blockingKeys.Add((int)Keys.NumPad6); blockingKeys.Add((int)Keys.D7); blockingKeys.Add((int)Keys.NumPad7); blockingKeys.Add((int)Keys.D8); blockingKeys.Add((int)Keys.NumPad8); blockingKeys.Add((int)Keys.D9); blockingKeys.Add((int)Keys.NumPad9); blockingKeys.Add((int)Keys.Decimal); blockingKeys.Add((int)Keys.OemPeriod); blockingKeys.Add((int)Keys.Oemcomma); // Start the hooker! kh.Enabled = true; Log.Write("KeyHooker enabled"); // Determine GameLimit if (name.IndexOf(" - No Limit ") != -1) { gameLimit = TableFactory.GameLimit.NL; } else if (name.IndexOf(" - Pot Limit ") != -1) { gameLimit = TableFactory.GameLimit.PL; } else { gameLimit = TableFactory.GameLimit.FL; } // Determine GameType if (name.IndexOf(" Hold'em") != -1) { gameType = TableFactory.GameType.Holdem; } else if (name.IndexOf(" Omaha") != -1) { gameType = TableFactory.GameType.Omaha; } // Determine GameForm if (windowTitle.Contains("Sit & Go")) { gameForm = TableFactory.GameForm.SNG; } else { gameForm = TableFactory.GameForm.Unknown; } // Get our children UpdateChildren(); // Check if we're sitting out from the getco! if (!IsSittingOut && IsSittingOutVisible()) { // We're sitting out now, we didn't before IsSittingOut = true; sittingOut(); } }