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); }
private WindowProcessHandle GetTargetWindow() => WindowProcessHandle.GetWindows() .FirstOrDefault(w => w.GetWindowName().IndexOf("umamusume", StringComparison.OrdinalIgnoreCase) >= 0);