private void Overlay_Loaded(object sender, RoutedEventArgs e)
        {
            // Start topmost updater
            _winHook = new WindowHook();
            _winHook.BrawlhallaOpened += (_, __) => MessageBox.Show("bh opened");
            _winHook.WindowFocused    += (_, __) => this.Topmost = true;
            _winHook.LostWindowFocus  += (_, __) => this.Topmost = false;

            // Add ping items
            var config = ConfigManager.GetPingConfig();

            foreach (var server in config.ServersEnabled)
            {
                var item = new PingItem(server.Name, Utilities.GetIPToPingFromName(server.Name), server.XPos, server.YPos);

                (this.Content as Canvas).Children.Add(item);
                item.MoveTo(item.XPos, item.YPos);
            }

            // Create low level mouse hook
            LowLevelMouseHook.Hook();

            // Handle moving of ping items
            LowLevelMouseHook.MouseDown  += Overlay_MouseDown;
            LowLevelMouseHook.MouseMoved += Overlay_MouseMoved;
            LowLevelMouseHook.MouseUp    += Overlay_MouseUp;
        }
Пример #2
0
        public static ActorCommonData GetTarget()
        {
            ActorCommonData acdTarget = null;

            var queryMonster = ActorCommonDataHelper.EnumerateMonsters().Where(x => x.x0D0_WorldPosX > 0 && x.x188_Hitpoints > 00001 && x.x190_TeamId == 10 && x.x184_ActorType == Enigma.D3.Enums.ActorType.Monster && !x.x004_Name.Contains("sandWasp"));

            var queryMonsterQuality = queryMonster
                                      .Where(x => x.x0B8_MonsterQuality > Enigma.D3.Enums.MonsterQuality.Normal)
                                      .OrderBy(x => x.x0B8_MonsterQuality);

            if (queryMonsterQuality.Any())
            {
                var acd = queryMonsterQuality.First();
                WindowHook.SetD3WindowText(string.Format("Target {0} x098_MonsterSnoId:{1}", acd.x004_Name, acd.x098_MonsterSnoId));
                return(acd);
            }


            var queryMonsterLeft = queryMonster
                                   .OrderBy(x => x.x188_Hitpoints);

            if (queryMonsterLeft.Any())
            {
                var acd = queryMonsterLeft.First();
                WindowHook.SetD3WindowText(string.Format("Target {0} x098_MonsterSnoId:{1}", acd.x004_Name, acd.x184_ActorType == Enigma.D3.Enums.ActorType.Monster));
                return(acd);
            }

            WindowHook.SetD3WindowText("Target NULL");
            return(acdTarget);
        }
Пример #3
0
        /// <summary>
        ///     Start to watch
        /// </summary>
        public void Start()
        {
            lock (accesslock)
            {
                if (!isRunning)
                {
                    activeWindows = new Dictionary <IntPtr, WindowData>();
                    prevTimeApp   = DateTime.Now;

                    taskCancellationTokenSource = new CancellationTokenSource();
                    appQueue = new AsyncConcurrentQueue <object>(taskCancellationTokenSource.Token);

                    //This needs to run on UI thread context
                    //So use task factory with the shared UI message pump thread
                    Task.Factory.StartNew(() =>
                    {
                        windowHook = new WindowHook(factory);
                        windowHook.WindowCreated   += WindowCreated;
                        windowHook.WindowDestroyed += WindowDestroyed;
                        windowHook.WindowActivated += WindowActivated;
                    },
                                          CancellationToken.None,
                                          TaskCreationOptions.None,
                                          factory.GetTaskScheduler()).Wait();

                    lastEventWasLaunched = false;
                    lastHwndLaunched     = IntPtr.Zero;

                    Task.Factory.StartNew(() => AppConsumer());
                    isRunning = true;
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 初始化
        /// </summary>
        void Init()
        {
            this.Title = Config.g_title;//标题
            WindowHook.RepairWindowBehavior(this);

            //充电监控
            Frame cim = (Frame)FindName("frame_cim");

            cim.Content = m_cim;
            OpenCIM();
            //配电监控
            Frame pdm = (Frame)FindName("frame_pdm");

            pdm.Content = m_pdm;
            //安防监控
            Frame sem = (Frame)FindName("frame_sem");

            sem.Content = m_sem;
            //消防监控
            Frame ffm = (Frame)FindName("frame_ffm");

            ffm.Content = m_ffm;

            TCPStar();
        }
Пример #5
0
        private void SetWindow()
        {
            var captureDevice = VideoSettings.CaptureDevice;

            var item = windowsComboBox.SelectedItem;

            if (item != null)
            {
                var tag = ((ComboBoxItem)item).Tag;
                if (tag != null)
                {
                    WindowDescription window = tag as WindowDescription;
                    if (window != null)
                    {
                        var windowCapture = (WindowCaptureDevice)captureDevice;
                        windowCapture.ClientRect = window.clientRect;
                        windowCapture.Resolution = window.clientRect.Size;

                        windowCapture.hWnd        = window.hWnd;
                        windowCapture.ProcName    = window.processName;
                        windowCapture.WindowClass = window.windowClass;
                        windowCapture.WindowTitle = window.windowTitle;

                        if (windowForm == null)
                        {
                            windowForm = new SelectAreaForm(true, false)
                            {
                                StartPosition = FormStartPosition.Manual,
                                Locked        = true,
                            };
                        }

                        windowForm.Visible = false;

                        if (windowHook != null)
                        {
                            windowHook.Close();
                        }

                        windowHook = new WindowHook();


                        windowHook.LocationChanged += WindowHook_LocationChanged;
                        windowHook.WindowClosed    += WindowHook_WindowClosed;
                        windowHook.VisibleChanged  += WindowHook_VisibleChanged;

                        windowHook.Setup(windowCapture.hWnd);

                        var rect = windowHook.GetCurrentWindowRect();

                        SetWindowsPosition(rect);

                        windowForm.Visible = true;
                    }
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Performs sciter initialization
        /// </summary>
        private void InitializeSciter()
        {
            Hook.HandleDestroyed += delegate
            {
                HandleInternal = IntPtr.Zero;
                Hook           = null;
            };

            // Processing WM_CREATE through sciter
            bool handled = false;

            SciterHostApi.SciterProcND(Handle, User32.WM_CREATE, IntPtr.Zero, IntPtr.Zero, ref handled);
            SciterHostApi.SciterSetCallback(Handle, Host);
        }
Пример #7
0
        private void GHook_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.NumPad1)
            {
                IsBotRunning = true;
                WindowHook.SetD3WindowText("Dev Running");
                StartSimpleRun();
            }

            if (e.KeyCode == Keys.NumPad2)
            {
                IsBotRunning = false;
                WindowHook.SetD3WindowText("Dev Stopped");
            }
        }
Пример #8
0
        private void HookWindow(IntPtr handle)
        {
            if (hook != null)
            {
                hook.ReleaseHandle();
            }

            //
            hook = new WindowHook(handle);

            // ウィンドウフック
            hook.WindowProc += (_sender, _e) =>
            {
                Message message = (_e as WindowProcEventArgs).Message;
                WindowsMessage winmessage = (WindowsMessage)message.Msg;
                System.Console.WriteLine("Msg : {0}\t{1}\t{2}", winmessage, message.WParam, message.LParam);
            };
        }
Пример #9
0
        private void CloseWindowHook()
        {
            if (windowHook != null)
            {
                windowHook.LocationChanged -= WindowHook_LocationChanged;
                windowHook.VisibleChanged  -= WindowHook_VisibleChanged;
                windowHook.WindowClosed    -= WindowHook_WindowClosed;

                windowHook.Close();
                windowHook = null;
            }

            if (windowForm != null)
            {
                windowForm.Visible  = false;
                windowForm.Location = Point.Empty;
                windowForm.Size     = Size.Empty;
            }
        }
Пример #10
0
        /// <summary>
        /// Attaches SciterView to the existing window
        /// </summary>
        public static SciterView Attach(IntPtr handle, ISciterHost host)
        {
            #region Parameters checking
            if (handle == IntPtr.Zero)
            {
                throw new ArgumentException("handle");
            }
            if (host == null)
            {
                throw new ArgumentNullException("host");
            }
            #endregion

            SciterView view = new SciterView();
            view.Host           = host;
            view.HandleInternal = handle;
            view.Hook           = WindowHook.Install(handle, view.ProcessMessage);
            view.InitializeSciter();

            return(view);
        }
Пример #11
0
        /// <summary>
        /// 初始化
        /// </summary>
        void Init()
        {
            this.Title = Config.g_title;//标题
            WindowHook.RepairWindowBehavior(this);

            if (!File.Exists(Config.g_root + "\\config.ini"))
            {
                using (StreamWriter sw = File.CreateText(Config.g_root + "\\config.ini"))
                {
                }
            }
            else
            {
                List <string> list = new List <string>();
                using (StreamReader sr = new StreamReader(Config.g_root + "\\config.ini"))
                {
                    while (!sr.EndOfStream)
                    {
                        list.Add(sr.ReadLine());
                    }
                }
                for (int i = 0; i < list.Count; i++)
                {
                    string[] arr = list[i].Split(':');
                    switch (arr[0])
                    {
                    case "check_remember_checked":
                        m_check_remember_checked = bool.Parse(arr[1]);
                        break;

                    case "text_name_text":
                        m_text_name_text = arr[1];
                        break;
                    }
                }
            }
            check_remember.IsChecked = m_check_remember_checked;
            text_name.Text           = m_text_name_text;
        }
Пример #12
0
        public MainWindow()
        {
            InitializeComponent();


            this.KeyboardHook();


            Engine.Create();

            WindowHook.SetD3WindowText("Dev Stopped");

            this.LoadLocalData();
            this.LoadBuffManager();
            this.LoadUIHandlers();
            this.LoadActors();

            //new System.Threading.Thread(() =>
            //{
            //    while (true)
            //    {
            //        this.RefreshDebugInfo();
            //        System.Threading.Thread.Sleep(10000000);
            //    }
            //}).Start();


            //new System.Threading.Thread(() =>
            //{
            //    while (true)
            //    {
            //        if (IsBotRunning)
            //            StartSimpleRun();
            //        System.Threading.Thread.Sleep(1000);
            //    }
            //}).Start();
        }
Пример #13
0
        public void init()
        {
            if (working)
            {
                throw new Exception("La clase ya ha sido inicializada");
            }
            working = true;
            lapiz   = new Pen(Color.Red);

            IWindowEventListener escuchadorTeclado = WindowEventListener.getInstance(this);

            hookWindow = new WindowHook(this.handlerTarget, escuchadorTeclado); //Bug, simplemente no tengo permiso para instalar un hook en un proceso especifico.


            /*
             * new Thread //Este hilo en segundo plano se encarga de ir consultando el tamaño de la ventana objetivo y en caso de existir modificación, notificarnoslo
             *  (
             *      () =>
             *      {
             *          RECT rect;
             *          Thread.CurrentThread.IsBackground = true;
             *          Thread.CurrentThread.Name = "movedWindowListener";
             *          while (this.working)
             *          {
             *              GetWindowRect(this.handlerTarget, out rect);
             *              if (this.ctrlTargetRect != rect)
             *              {
             *                  this.ctrlTargetRect = rect;
             *                  this.adjust();
             *              }
             *              Thread.Sleep(500);
             *          }
             *      }
             *  ).Start();
             */
        }
        /// <summary>
        ///     The remove hook.
        /// </summary>
        /// <param name="winProc">
        ///     The win proc.
        /// </param>
        public void RemoveHook(WindowHook winProc)
        {
            Contract.Requires<ArgumentNullException>(winProc != null, "winProc");

            EnsureSource();
            UiSynchronize.Synchronize.Invoke(() => _source.RemoveHook(Create(winProc)));
        }
Пример #15
0
 public static extern IntPtr SetWindowsHookExW([In, MarshalAs(I4)] WindowHook idHook, [In] HookProc lpfn, [In] IntPtr hmod, [In, MarshalAs(U4)] uint dwThreadId);
Пример #16
0
 internal static KeyEventFlags ConvertFlags(WindowHook.LLKHF flags)
 {
     KeyEventFlags newFlags = KeyEventFlags.None;
     if (WinAPI.WindowHook.LLKHF.UP == (WinAPI.WindowHook.LLKHF.UP & flags))
     {
         newFlags |= KeyEventFlags.KEYEVENTF_KEYUP;
     }
     if (WinAPI.WindowHook.LLKHF.EXTENDED == (WinAPI.WindowHook.LLKHF.EXTENDED & flags))
     {
         newFlags |= KeyEventFlags.KEYEVENTF_EXTENDEDKEY;
     }
     return newFlags;
 }
Пример #17
0
        public static bool FocusCheck()
        {
            string title = WindowHook.GetActiveWindowTitle();

            return(!string.IsNullOrEmpty(title) && title.Contains("Conquer"));
        }
 /// <summary>
 ///     The remove hook.
 /// </summary>
 /// <param name="winProc">
 ///     The win proc.
 /// </param>
 public void RemoveHook(WindowHook winProc)
 {
     Contract.Requires<ArgumentNullException>(winProc != null, "winProc");
 }