Пример #1
0
        public static IEnumerable <WindowProcessHandle> GetWindows()
        {
            bool EnumuWindowsProc(IntPtr hWnd, IntPtr lParam)
            {
                if (!IsWindowVisible(hWnd))
                {
                    return(true);
                }

                var window = new WindowProcessHandle(hWnd);

                // 普通のアプリでWindowsNameが空のことはあまりないので除外する
                if (window.GetWindowName() == string.Empty)
                {
                    return(true);
                }

                ((List <WindowProcessHandle>)((GCHandle)lParam).Target).Add(window);
                return(true);
            }

            var list        = new List <WindowProcessHandle>();
            var paramHandle = GCHandle.Alloc(list);

            EnumWindows(EnumuWindowsProc, (IntPtr)paramHandle);
            paramHandle.Free();
            list.Sort((wp1, wp2) => wp1.ProcessName.CompareTo(wp2.ProcessName));
            return(list);
        }
Пример #2
0
 private WindowProcessHandle GetTargetWindow()
 => WindowProcessHandle.GetWindows()
 .FirstOrDefault(w => w.GetWindowName().IndexOf("umamusume", StringComparison.OrdinalIgnoreCase) >= 0);