• 1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数: private delegate bool WNDENUMPROC(IntPtr ...2.然后利用 C# 中的平台调用声明从 USER32.DLL 库中调用 API - EnumWindows,具体参数请参考

    1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数:

    private delegate bool WNDENUMPROC(IntPtr hWnd, int lParam); //IntPtr hWnd用int也可以

    2.然后利用 C# 中的平台调用声明从 USER32.DLL 库中调用 API - EnumWindows,具体参数请参考 MSDN - Win32 API。

    [DllImport("user32.dll")]

    private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, int lParam);

    3.最后实例化委托,调用 EnumWindows。

    EnumWindows(delegate(IntPtr hWnd, int lParam) {……},0);

    private delegate bool WNDENUMPROC(IntPtr hWnd, int lParam);
    
    //用来遍历所有窗口 
           [DllImport("user32.dll")] 
            private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, int lParam);
    
    //获取窗口Text 
            [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; 
            }
    
            public WindowInfo[] GetAllDesktopWindows() 
            { 
    //用来保存窗口对象 列表
                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.ToArray(); 
            }
    展开全文
  • C#得到所有窗口句柄简单实例源码 一个简单的实例 C#得到所有窗口句柄 C#调用api的简单实例
  • C#中一个窗体怎样对另外一个窗体操作,使窗体上的数据得到刷新? 2010-7-8 12:50 提问者: jenemarlin | 悬赏分:5 | 浏览次数:354次 情况是这样的;通过A窗体对B窗体操作.使B窗体的数据得到刷新.但是...
  • C#根据窗体标题名字进行关闭窗体,亲自测试过可以完美运行
  • C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点主窗体窗体采用前面一篇博客设计...
  • C# 如何在窗体项目的类中获得当前窗体的对象. 转载于:https://www.cnblogs.com/154691780/archive/2007/05/12/744274.html
  • C#窗体控件简介 2019-03-26 12:29:28
    C#窗体控件简介-选项卡控件 在Windows应用程序中,选项卡用于将相关的控件集中在一起,放在一个页面中用以显示多种综合信息。选项卡控件通常用于显示多个选项卡,其中每个选项卡均可包含图片和其他控件。选项卡相当...
  • //ShowDialog为当前窗体执行完(关闭后)才能执行其后的代码 if(form2.ShowDialog()==DialogResult.Ok) { //...... } //Form2 //....... this.DialogResult = DialogResult.OK; this.Close();//关闭...
  • 在写程序的时候用到了由子窗体确定参数后返回给父窗体。这就涉及到窗体间传值的问题。C#是不提供窗体间变量和控件的直接相互调用(就是说即使Form1的变量和控件属性都设为Public或者Internal,在Form2种也不能通过 ...
  • C#与halcon窗体控件交互 2020-07-07 23:31:01
    C#与halcon窗体控件交互,可以使用。可以供给大家看看,也是从别处得到的。 C#与halcon窗体控件交互,可以使用。可以供给大家看看,也是从别处得到
  • C#窗体与父窗体交互 2018-11-29 20:17:04
    窗体调用子窗体窗体在创建子窗体后,可以直接通过子窗体对象调用子窗体中的公有属性和方法。 Form2 f2 = new Form2(); string value= f2.value; f2.getValue(); 子窗体调用父窗体窗体可以在类中声明...
  • 问题:MDI窗体中,父窗体控件会覆盖子窗体,网上很多解决方案表面上解决了问题,但失去了MDI窗体的基本特性,并不实用。比较赞成使用子窗体“代替”父窗体控件的方案。思路:不将控件放置在父窗体上,而是放在一个...
  • c# 弹出窗体选择文件代码 2017-05-16 14:42:40
    c# 弹出窗体选择文件代码代码块 private void button2_Click(object sender, EventArgs e) { OpenFileDialog saveFile = new OpenFileDialog(); saveFile.Filter = "所有Csv文件|*.jpg";//设置文件类型
  • //遍历窗体所有控件, foreach (Control control in this.Controls) { //遍历后的操作... control.Enabled = false; } 遍历某个panel的所有控件 foreach (Control control in this.panel4.Controls) { ...
  • 由于控制台应用程序的运行结果都是通过控制台输出的,不能提供良好的用户体验,为此,C#提供了WinForm窗体应用程序。WinForm具有一系列丰富的控件,用于创建基于Windows的应用程序。每一个控件模型都相当于一个类,...
  • C# 透明窗体制作方法 2016-10-31 17:57:13
    制作透明窗体办法有好几种,各有优缺点. 我们先来看看C#本身提供的办法 1:通过设置窗体的 TransparencyKey实现  例:窗体中的白色会变成透明 this.BackColor =Color.White; this.TransparencyKey =...
  • Assembly assembly = Assembly.... // 实例化窗体 Form form = assembly.CreateInstance("XXXXX") as Form; XXXX部分填写命名空间名.类名 不会撩妹的白芒果 比如 以上情况XXXX部分填写Project...
  • 窗体和控件都有KeyDown,KeyUp,KeyPress三个事件,每个事件都会有KeyEventArgs参数传入,只要判断传入参数的KeyChar就可以了,Framework提供了Keys枚举来表示键盘上的各个键。核心判断的代码如下: 1.单键判断 if...
  • 不知道大家有没有碰到在C#中碰到窗体A要关闭但必须得到窗体B的登录验证,登录不成功就关闭B A继续运行。 这种方法网上大家也是各有说词,虽然也可以实现,但个人觉得有点繁琐 也不容易理解。 话不多说,先把代码贴...
  • 获得窗体的句柄可以用GetWindow方法获得窗体标题用GetWindowText方法,显示隐藏某个窗体用ShowWindow方法,给你举个例子using System.Runtime.InteropServices; private const int WS_VISIBLE =268435456;//窗体...
1 2 3 4 5 ... 20
收藏数 31,178
精华内容 12,471