浅谈如何利用C#枚举所有的窗体

开发 后端
最近在玩一个游戏,发现开着游戏挂机比较碍事,因此希望做一个程序可以将该游戏隐藏。当时想到两种方法,这里为大家讲解一下C#枚举所有的窗体。

C#枚举所有的窗体的两种方法

1、直接查找游戏窗口,找到后作处理。

2、C#枚举所有窗口,列表显示,然后再处理。

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

API:EnumWindows,GetWindowText,GetParent,IsWindowVisible.

EnumWindows:枚举窗口

GetWindowText:取得窗口标题

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

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

C#枚举代码如下:

  1. namespaceHideProcess  
  2. {  
  3. publicdelegateboolCallBack(inthwnd,inty);  
  4. publicpartialclassForm1:Form  
  5. {  
  6.  
  7.  
  8. [DllImport("user32.dll")]  
  9.  
  10. publicstaticexternintEnumWindows(CallBackx,inty);  
  11. [DllImport("user32")]  
  12. publicstaticexternintGetWindowText(inthwnd,StringBuilderlptrString,intnMaxCount);  
  13. [DllImport("user32")]  
  14. publicstaticexternintGetParent(inthwnd);  
  15. [DllImport("user32")]  
  16. publicstaticexternintIsWindowVisible(inthwnd);  
  17.  
  18. publicboolReport(inthwnd,intlParam)  
  19. {  
  20. intpHwnd;  
  21. pHwnd=GetParent(hwnd);  
  22.  
  23. if(pHwnd==0&&IsWindowVisible(hwnd)==1)  
  24. {  
  25. StringBuildersb=newStringBuilder(512);  
  26.  
  27. GetWindowText(hwnd,sb,sb.Capacity);  
  28. if(sb.Length>0)  
  29. {  
  30. this.comboBox1.Items.Add(sb.ToString());  
  31. }  
  32. }  
  33. returntrue;  
  34. }  
  35. publicForm1()  
  36. {  
  37. InitializeComponent();  
  38. }  
  39.  
  40. privatevoidbutton1_Click(objectsender,EventArgse)  
  41. {  
  42. Process[]ProcArray=Process.GetProcesses();  
  43. comboBox1.Items.Clear();  
  44. EnumWindows(this.Report,0);  
  45. }  
  46. }  

有一个combobox和button,点击按钮,将所有窗口列举显示在下拉框。接下来的工作就是设置窗体为隐藏。但是有一个缺点

隐藏后无法显示。留待以后解决。利用C#枚举所有的窗体就讲到这里。

【编辑推荐】

  1. Lambda表达式入门实例
  2. 在C++中使用Lambda函数提高代码性能
  3. 浅谈如何使用Lambda表达式做抽象代表
  4. C#中调用Outlook API发起网络会议
  5. 理解C#中的Lambda表达式
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-08-28 15:58:54

C#窗体里调用

2009-08-28 16:08:28

C#利用资源文件

2009-08-18 10:30:30

C#枚举

2009-09-01 18:06:06

c#保存窗体状态

2009-08-10 14:23:39

C# Setting

2009-08-20 10:10:55

C#透明窗体

2009-06-16 10:20:05

多继承C#

2009-08-20 18:30:33

C# ReaderWr

2011-09-21 10:56:31

C#结构

2009-08-13 10:42:31

C#窗体拖动事件

2009-09-07 06:07:46

C#窗体设计

2009-09-07 06:48:13

C#透明窗体

2009-09-07 04:19:56

C#窗体事件

2009-09-07 06:31:32

C#窗体移动

2009-08-12 11:24:25

C# String对象

2009-08-07 11:26:53

C#数组结构

2009-08-31 09:37:09

C# Employee

2009-08-19 17:12:18

C# Connecti

2009-09-02 15:41:21

C# HTTPWebR

2009-08-06 15:30:23

C#类型系统
点赞
收藏

51CTO技术栈公众号