コード例 #1
0
        public IntPtr SendMessage(UInt32 msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr hwnd = Handle;

            if (hwnd != IntPtr.Zero)
            {
                return(Win32Helpers.SendMessage(hwnd, msg, wParam, lParam));
            }
            else
            {
                return(IntPtr.Zero);
            }
        }
コード例 #2
0
        public bool PostMessage(UInt32 msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr hwnd = Handle;

            if (hwnd != IntPtr.Zero)
            {
                return(Win32Helpers.PostMessage(hwnd, msg, wParam, lParam));
            }
            else
            {
                return(false);
            }
        }
コード例 #3
0
        public List <Window> FindAllWindows(IntPtr handler = default(IntPtr))
        {
            List <IntPtr> hwnds = new List <IntPtr>();

            IntPtr mainWindowHwnd;

            if (handler == IntPtr.Zero)
            {
                System.Threading.Thread.Sleep(200);
                mainWindowHwnd = _process.MainWindowHandle;
            }
            else
            {
                mainWindowHwnd = handler;
            }

            hwnds.Add(mainWindowHwnd);
            hwnds.AddRange(_process.GetAllWindows());

            List <Window> allChildWindows = new List <Window>();

            var menu = new Menu(IntPtr.Zero, Win32Helpers.GetMenu(mainWindowHwnd), mainWindowHandle: mainWindowHwnd);

            foreach (var childWindow in allChildWindows.ToList())
            {
                allChildWindows.AddRange(childWindow.FindAllWindows());
            }

            allChildWindows.OrderBy(w => (int)w.Handler);

            allChildWindows.RemoveAll(w => string.IsNullOrEmpty(w.Text));

            foreach (var window in allChildWindows)
            {
                Console.WriteLine(window.Text);
            }

            return(allChildWindows);
        }
コード例 #4
0
        public bool PostThreadMessage(UInt32 msg, IntPtr wParam, IntPtr lParam, bool ensureTargetThreadHasWindow = true)
        {
            uint   targetThreadId = 0;
            IntPtr hwnd           = Handle;

            if (ensureTargetThreadHasWindow)
            {
                uint processId = 0;
                if (hwnd != IntPtr.Zero)
                {
                    targetThreadId = Win32Helpers.GetWindowThreadProcessId(hwnd, out processId);
                }
            }

            if (targetThreadId != 0)
            {
                return(Win32Helpers.PostThreadMessage(targetThreadId, msg, wParam, lParam));
            }
            else
            {
                return(false);
            }
        }