C#获取当前系统的活动窗体和状态

26 篇文章 0 订阅

目前获取的是句饼和窗体标题和最大化最小化状态.

 

使用

 

dataGridView1.DataSource = Tools.Sys.GetWindows.Load();

 

 

使用静态的方法就可以了.

具体类

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Runtime.InteropServices;
  5. namespace OpenCAD.Tools.Sys
  6. {
  7.    
  8.     /// <summary>
  9.     /// 获取全部窗体
  10.     /// zgke@sina.com
  11.     /// 2008-12-24
  12.     /// </summary>
  13.     public class GetWindows
  14.     {
  15.         public class WindowsInfo
  16.         {
  17.             private IntPtr m_Handle;
  18.             /// <summary>
  19.             /// 句柄
  20.             /// </summary>
  21.             public IntPtr Handle { get { return m_Handle; } set { m_Handle = value; } }
  22.             private string m_Title;
  23.             /// <summary>
  24.             /// 标题
  25.             /// </summary>
  26.             public string Title { get { return m_Title; } set { m_Title = value; } }
  27.             private bool m_IsMinimzed;
  28.             /// <summary>
  29.             /// 是否最小
  30.             /// </summary>
  31.             public bool IsMinimzed { get { return m_IsMinimzed; } set { m_IsMinimzed = value; } }
  32.             private bool m_IsMaximized;
  33.             /// <summary>
  34.             /// 是否最大     
  35.             /// </summary>
  36.             public bool IsMaximized { get { return m_IsMaximized; } set { m_IsMaximized = value; } }
  37.             public WindowsInfo()
  38.             {
  39.                 m_Handle = IntPtr.Zero;
  40.                 m_Title = "";
  41.                 m_IsMinimzed = false;
  42.                 m_IsMaximized = false;
  43.             }
  44.             public WindowsInfo(IntPtr p_Handle, string p_Title, bool p_IsMinimized, bool p_IsMaximized)
  45.             {
  46.                 this.m_Handle = p_Handle;
  47.                 this.m_Title = p_Title;
  48.                 this.m_IsMinimzed = p_IsMinimized;
  49.                 this.m_IsMaximized = p_IsMaximized;
  50.             }
  51.         }
  52.         private static IList<WindowsInfo> _WindowsList = new List<WindowsInfo>();
  53.         private static IntPtr _Statusbar;
  54.         public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);
  55.         private static bool NetEnumWindows(IntPtr p_Handle, int p_Param)
  56.         {
  57.             if (!API.IsWindowVisible(p_Handle))
  58.                 return true;
  59.             StringBuilder _TitleString = new StringBuilder(256);
  60.             API.GetWindowText(p_Handle, _TitleString, 256);
  61.             if (string.IsNullOrEmpty(_TitleString.ToString())) 
  62.             {
  63.                 return true;
  64.             }         
  65.             if (_TitleString.Length != 0 || (_TitleString.Length == 0) || p_Handle != _Statusbar)
  66.             {
  67.                 _WindowsList.Add(new WindowsInfo(p_Handle, _TitleString.ToString(), API.IsIconic(p_Handle), API.IsZoomed(p_Handle)));
  68.             }
  69.             return true;
  70.         }
  71.         public static IList<WindowsInfo> Load()
  72.         {
  73.             _Statusbar = API.FindWindow("Shell_TrayWnd""");
  74.             EnumWindowsProc _EunmWindows = new EnumWindowsProc(NetEnumWindows);
  75.             API.EnumWindows(_EunmWindows, 0);
  76.             return _WindowsList;
  77.         }
  78.         private class API
  79.         {
  80.             [DllImport("user32.dll")]
  81.             public static extern int EnumWindows(GetWindows.EnumWindowsProc ewp, int lParam);
  82.             [DllImport("user32.dll")]
  83.             public static extern bool IsWindowVisible(IntPtr hWnd);
  84.             [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
  85.             public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
  86.             [DllImport("user32.dll")]
  87.             [return: MarshalAs(UnmanagedType.Bool)]
  88.             public static extern bool IsIconic(IntPtr hWnd);
  89.             [DllImport("user32.dll")]
  90.             public static extern bool IsZoomed(IntPtr hWnd);
  91.             [DllImport("user32.dll", SetLastError = true)]
  92.             public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  93.         }
  94.     }
  95.    
  96.     
  97. }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值