c# 列舉所有視窗和子視窗

來源:互聯網
上載者:User

標籤:des   style   blog   color   os   re   c   div   

private delegate bool WNDENUMPROC(IntPtr hWnd, int lParam);        [DllImport("user32.dll", ExactSpelling = true)]        private static extern bool EnumChildWindows(IntPtr hwndParent, WNDENUMPROC lpEnumFunc, int lParam);         [DllImport("user32.dll")]        private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, int lParam);        //[DllImport("user32.dll")]         //private static extern IntPtr FindWindowW(string lpClassName, string lpWindowName);         [DllImport("user32.dll")]        private static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);        [DllImport("user32.dll")]        private static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);        public struct WindowInfo        {            public IntPtr hWnd;            public string szWindowName;            public string szClassName;        }        private List<WindowInfo> EnumChildWindowsCallback(IntPtr handle, string name, string classname)        {            List<WindowInfo> wndList = new List<WindowInfo>();            EnumChildWindows(handle,delegate(IntPtr hWnd, int lParam)            {                WindowInfo wnd = new WindowInfo();                StringBuilder sb = new StringBuilder(256);                //get hwnd                 wnd.hWnd = hWnd;                //get window name                 GetWindowTextW(hWnd, sb, sb.Capacity);                wnd.szWindowName = sb.ToString();                //get window class                 GetClassNameW(hWnd, sb, sb.Capacity);                wnd.szClassName = sb.ToString();                //add it into list                 wndList.Add(wnd);                return true;            },0);            return wndList.Where(it => it.szWindowName == name && it.szClassName == classname).ToList();        }         public List<WindowInfo> GetAllDesktopWindows(string name,string classname)        {            List<WindowInfo> wndList = new List<WindowInfo>();            //enum all desktop windows             EnumWindows(delegate(IntPtr hWnd, int lParam)            {                WindowInfo wnd = new WindowInfo();                StringBuilder sb = new StringBuilder(256);                //get hwnd                 wnd.hWnd = hWnd;                //get window name                 GetWindowTextW(hWnd, sb, sb.Capacity);                wnd.szWindowName = sb.ToString();                //get window class                 GetClassNameW(hWnd, sb, sb.Capacity);                wnd.szClassName = sb.ToString();                //add it into list                 wndList.Add(wnd);                return true;            }, 0);            return wndList.Where(it => it.szWindowName == name && it.szClassName ==classname ).ToList();        }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.