c# 列举所有窗口和子窗口

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();
        }

c# 列举所有窗口和子窗口,布布扣,bubuko.com

时间: 2024-08-07 00:12:09

c# 列举所有窗口和子窗口的相关文章

js window.open() 父窗口与子窗口的互相调用

javascript 父窗口与子窗口的互相调用 <html> <head></head> <body> 主要实现父子关系的页面 window.opener 是window.open 打开的子页面调用父页面对象 a.html <title>主页面</title> <script type="text/javascript"> /** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */ va

JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

一.Iframe 篇 公共部分 //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID function GetValue(ObjectID,ContentID) { var IsIE = (navigator.appName == 'Microsoft Internet Explorer') if(IsIE) {//如果是IE alert(document.frames(ObjectID).document.getElementById(ContentID).i

总结js(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

http://hi.baidu.com/yashua839/blog/item/131fdb2fe547ef221f3089af.html一.Iframe 篇 //&&&&&&&&&&&&&&&&&&&&公共方法开始&&&&&&&&&&&&&&a

C#中父窗口和子窗口之间控件互操作实例

本文实例讲述了C#中父窗口和子窗口之间控件互操作的方法.分享给大家供大家参考.具体分析如下: 很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异: 第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如: 代码如下: public static yourMainWindow pCurrentWin = null

父窗口与子窗口的层次关系

原文:父窗口与子窗口的层次关系   父窗口与子窗口的层次关系 周银辉 关于子窗体的层级关系总结一下哈,希望能对大家有些帮助 假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow 1,如果弹出窗体(比如SubWindow)仅仅是调用Show方法,并且没有设置其Owner属性: ClassRootWindow { void Foo() { SubWindow sw = newSubWindow(); sw.Show(); } } 那

C# 委托 父窗口与子窗口间传值

1)目标 父窗口与子窗口都有1个Button和1个Label. 目标1:单击父窗口的Button,子窗口的Label将显示父窗口传来的值. 目标2:单击子窗口的Button,父窗口的Label将显示子窗口传来的值. 2)父窗口代码 using System; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp5 { public delegate void ShowMessageS

父窗口控制子窗口弹出和关闭【JSdemo】

[功能说明] 利用window.open()方法实现点击父窗口任意区域控制子窗口打开的关闭的效果 [HTML代码说明] <div class="box" id="box">点击任何区域,子窗口打开</div> [CSS代码说明] /*设置box高度和页面高度一致*/ body{ margin: 0; } html,body{ height: 100%; } .box{ border: 1px solid black; height: 99%;

父窗口取子窗口的 js 数组

现在这个系统,用到了大量的选择器 和 自动完成,凭借我的三寸不烂之手, 将这些选择器 和 自动完成做到了最简化, 一路顺风顺水. 今天下午补充一个页面的选择器, 要取一个复杂的 json 对像,用来填充数据.这个 json 对象包含数组, 取出来后,要转变为本地页面(选择器的父页面)的某个"类"的实例. 我用这个方法来将 json 对象转换为某个"类"的对象: 1 _.automap = function (data, type, writeNotExistsPro

js 父窗口与子窗口交互

showModalDialog 父窗口 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>a.html</title> 5 6 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3&q