浅谈如何利用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. [DllImport("user32.dll")]
  7. publicstaticexternintEnumWindows(CallBackx,inty);
  8. [DllImport("user32")]
  9. publicstaticexternintGetWindowText(inthwnd,StringBuilderlptrString,intnMaxCount);
  10. [DllImport("user32")]
  11. publicstaticexternintGetParent(inthwnd);
  12. [DllImport("user32")]
  13. publicstaticexternintIsWindowVisible(inthwnd);
  14. publicboolReport(inthwnd,intlParam)
  15. {
  16. intpHwnd;
  17. pHwnd=GetParent(hwnd);
  18. if(pHwnd==0&&IsWindowVisible(hwnd)==1)
  19. {
  20. StringBuildersb=newStringBuilder(512);
  21. GetWindowText(hwnd,sb,sb.Capacity);
  22. if(sb.Length>0)
  23. {
  24. this.comboBox1.Items.Add(sb.ToString());
  25. }
  26. }
  27. returntrue;
  28. }
  29. publicForm1()
  30. {
  31. InitializeComponent();
  32. }
  33. privatevoidbutton1_Click(objectsender,EventArgse)
  34. {
  35. Process[]ProcArray=Process.GetProcesses();
  36. comboBox1.Items.Clear();
  37. EnumWindows(this.Report,0);
  38. }
  39. }
  40. }

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

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

标题名称:浅谈如何利用C#枚举所有的窗体
标题路径:http://www.mswzjz.cn/qtweb/news37/318137.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能