Esempio n. 1
0
 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();
            }
        }
Esempio n. 3
0
 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();
 }
Esempio n. 6
0
        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();
 }
Esempio n. 9
0
 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();
     }
 }
Esempio n. 10
0
 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
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
 protected internal virtual void HideList()
 {
     Mode = EntryMode.Text;
     if (hook != null) {
         hook.ReleaseHandle();
     }
     hook = null;
     popup.Hide();
 }
        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();
            }
        }
Esempio n. 15
0
        /// <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();
            }
        }
Esempio n. 16
0
        /// <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();
            }
        }
Esempio n. 17
0
 private void MainForm_Load(object sender, EventArgs e)
 {
     ForegroundWindowChanged(null, WinHook.CreateForegroundChangedEventArg());
 }
Esempio n. 18
0
        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
        }
Esempio n. 19
0
        /// <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();
            }
        }
Esempio n. 20
0
        /// <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();
            }
        }