开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3859|回复: 7
收起左侧

[C#源码] 初学C#,写个类试试效果(枚举窗口,取标题,取类名等等)

[复制链接]
结帖率:100% (38/38)
发表于 2013-4-19 21:08:00 | 显示全部楼层 |阅读模式   广东省湛江市
本帖最后由 ltais 于 2013-4-19 21:11 编辑

未命名.jpg
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.InteropServices;

  6. namespace WindowsFormsApplication10
  7. {
  8. public class 类_窗口
  9. {
  10. [DllImport("user32.dll")]

  11. private static extern int EnumWindows(CallBack x, int y); //枚举窗口

  12. public delegate bool CallBack(int hwnd, int y); //委托

  13. [DllImport("user32")]

  14. private static extern int EnumChildWindows(int hwnd,CallBack x,int y); //枚举子窗口

  15. [DllImport("user32")]

  16. private static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); //取类名

  17. [DllImport("user32")]

  18. private static extern int GetWindowText(int hwnd, StringBuilder lptrString, int nMaxCount);//取标题

  19. [DllImport("user32")]

  20. private static extern int GetParent(int hwnd);//取父窗口

  21. [DllImport("user32")]

  22. private static extern int IsWindowVisible(int hwnd);//窗口是否可见

  23. [DllImport("user32")]

  24. private static extern void PostMessage(int hwnd, int a, int b, int c);

  25. List<int> 句柄数组 = new List<int>();

  26. bool 过滤窗口;

  27. public int[] 枚举父窗口(bool 过滤)

  28. {
  29. 过滤窗口 = 过滤;

  30. 句柄数组.Clear();

  31. EnumWindows(Report,0);

  32. int[] i = 句柄数组.ToArray<int>();

  33. return i;

  34. }

  35. private bool Report(int hwnd, int lParam)
  36. {

  37. int pHwnd = GetParent(hwnd);

  38. if (hwnd > 0 & pHwnd== 0 )

  39. {
  40. if (过滤窗口)
  41. {
  42. if (是否可见(hwnd))
  43. {
  44. 句柄数组.Add(hwnd);
  45. }
  46. }

  47. else

  48. {
  49. 句柄数组.Add(hwnd);
  50. }

  51. }

  52. return true;
  53. }
  54. public string 取类名(int hwnd)

  55. {
  56. IntPtr a = new IntPtr(hwnd);

  57. StringBuilder 类名 = new StringBuilder(256);

  58. GetClassName(a, 类名, 256);

  59. return Convert .ToString ( 类名);

  60. }

  61. public string 取标题(int hwnd)
  62. {
  63. StringBuilder a = new StringBuilder(512);

  64. GetWindowText(hwnd, a, a.Capacity);

  65. return Convert .ToString ( a);
  66. }

  67. public void 销毁(int hwnd)

  68. {
  69. PostMessage(hwnd, 16, 0, 0);
  70. }
  71. public bool 是否可见(int hwnd)

  72. {
  73. if (IsWindowVisible(hwnd)==0)
  74. {
  75. return false;
  76. }
  77. else

  78. {
  79. return true;
  80. }

  81. }

  82. public int[] 枚举子窗口(int hwnd)

  83. {
  84. 句柄数组.Clear();

  85. EnumChildWindows(hwnd,Report1,0);

  86. int[] i = 句柄数组.ToArray<int>();

  87. return i;

  88. }

  89. private bool Report1(int hwnd, int lParam)

  90. {
  91. if (hwnd>0)
  92. {
  93. 句柄数组.Add(hwnd);
  94. }

  95. return true;
  96. }
  97. }

  98. }
复制代码

点评

怎么会使用这么多API,,,,小子你的注意调用公约问题哦。。。   四川省成都市  发表于 2013-12-1 18:39
发表于 2017-8-24 22:46:18 | 显示全部楼层   河南省信阳市
我表示看不懂w
回复 支持 反对

使用道具 举报

发表于 2014-4-1 09:36:55 | 显示全部楼层   江苏省宿迁市
学习了,厉害。。
回复 支持 反对

使用道具 举报

发表于 2013-12-1 15:49:49 | 显示全部楼层   广东省汕头市
谢谢分享,收到了
回复 支持 反对

使用道具 举报

发表于 2013-12-1 15:49:10 | 显示全部楼层   广东省汕头市
谢谢分享,收到了
回复 支持 反对

使用道具 举报

结帖率:50% (3/6)
发表于 2013-4-19 23:01:14 | 显示全部楼层   河南省安阳市
学习了,谢谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 5 天

发表于 2013-4-19 21:14:59 | 显示全部楼层   广东省中山市
完全搞不懂。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表