C#枚举所有的窗体

最近在玩一个游戏,发现开着游戏挂机比较碍事,因此希望做一个程序可以将该游戏隐藏。当时想到两种方法 

      1、直接查找游戏窗口,找到后作处理。2、枚举所有窗口,列表显示,然后再处理。

        我这里按第二种方式做。首先是一些准备工作,如,了解如何调用系统API,见以前的博文。枚举窗口要用的一些

API:EnumWindows,GetWindowText,GetParent,IsWindowVisible.

        EnumWindows:枚举窗口

        GetWindowText:取得窗口标题

      GetParent:取得当前窗体的父窗体(非常重要,用于判断是否为顶级窗体)

      IsWindowVisible:判断窗体是否可见,用于过滤到不可见窗体。

    代码如下:
  1.     namespace HideProcess
  2. {
  3.     public delegate bool CallBack(int hwnd, int y);
  4.     public partial class Form1 : Form
  5.     {


  6.         [DllImport("user32.dll")]

  7.         public static extern int EnumWindows(CallBack x, int y);
  8.         [DllImport("user32")]
  9.         public static extern int GetWindowText(int hwnd, StringBuilder lptrString, int nMaxCount);
  10.         [DllImport("user32")]
  11.         public static extern int GetParent(int hwnd);
  12.         [DllImport("user32")]
  13.         public static extern int IsWindowVisible(int hwnd);

  14.         public  bool Report(int hwnd, int lParam)
  15.         {
  16.             int pHwnd;
  17.             pHwnd = GetParent(hwnd);

  18.             if (pHwnd == 0 && IsWindowVisible(hwnd)==1)
  19.             {
  20.                 StringBuilder sb = new StringBuilder(512);

  21.                 GetWindowText(hwnd, sb, sb.Capacity);
  22.                 if (sb.Length > 0)
  23.                 {
  24.                     this.comboBox1.Items.Add(sb.ToString());
  25.                 }
  26.             }
  27.             return true;
  28.         }      
  29.         public Form1()
  30.         {
  31.             InitializeComponent();
  32.         }

  33.         private void button1_Click(object sender, EventArgs e)
  34.         {
  35.             Process[] ProcArray = Process.GetProcesses();
  36.             comboBox1.Items.Clear();
  37.             EnumWindows(this.Report, 0);
  38.         }
  39.     }
  40. }
复制代码
有一个combobox和button,点击按钮,将所有窗口列举显示在下拉框。接下来的工作就是设置窗体为隐藏。但是有一个缺点

隐藏后无法显示。留待以后解决。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值