(六)C# QQ讨论组广告群发工具——Windows窗体遍历的实现(附源码)
(六)C# QQ讨论组广告群发工具——Windows窗体遍历的实现(附源码),其实我在前面的文章已提到过如何实现窗体遍历:https://www.wuleba.com/4258.html,windows所有的窗体都是被系统所管理的,系统以句柄的形式去表征这些窗体,我们的目标就是找到这些句柄。
通过msdn可以查询到要获取所有的窗体需借助于EnumDesktopWindows这个api函数去实现,函数原型如下:
1 |
BOOL WINAPI EnumDesktopWindows ( __in_opt HDESK hDesktop, __in WNDENUMPROC lpfn, __in LPARAM lParam ); |
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682615%28v=vs.85%29.aspx
我讲讲这个函数吧:
第一个参数是一个HDESK 类型参数,就是指定桌面的指针,如何获取桌面指针,不在今天的话题之内,当hDesktop参数为空时,默认表示当前桌面
第二个参数WNDENUMPROC声明的函数指针,WNDENUMPROC的声明如下:
1 |
BOOL CALLBACK EnumWindowsProc ( __in HWND hwnd, __in LPARAM lParam ); |
这函数就不解释了窗体句柄加LPARAM参数
第三个参数是传递给回调的lParam值,一般为空就行
在C#中我们这样声明,声明委托:
1 |
public delegate bool EnumDesktopWindowsDelegate (IntPtr hWnd, uint lParam); |
定义API导出函数:
1 |
[DllImport ("user32.dll", EntryPoint = "EnumDesktopWindows", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs (UnmanagedType.Bool)] public static extern bool EnumDesktopWindows (IntPtr hDesktop, EnumDesktopWindowsDelegate lpEnumCallbackFunction, IntPtr lParam); |
当然你也可以分开写:
1 |
WinAPIHelper.EnumDesktopWindows (IntPtr.Zero, new WinAPIHelper.EnumDesktopWindowsDelegate (EnumWindowsProc), IntPtr.Zero); bool EnumWindowsProc (IntPtr hWnd, uint lparam) { if (pids.Contains (WndHelper.GetProcessId (hWnd) ) ) { weas.Add (GetWinArgs (hWnd) ); } return true; } |
通过这方法我们实现对所有窗体的获取。传送门:Rolends
下载说明:① 请不要相信网站的任何广告;② 当你使用手机访问网盘时,网盘会诱导你下载他们的APP,大家不要去下载,直接把浏览器改成“电脑模式/PC模式”访问,然后免费普通下载即可;③ 123云盘限制,必须登录后才能下载,且限制每人每天下载流量1GB,下载 123云盘免流量破解工具
版权声明:
小编:吾乐吧软件站
链接:https://wuleba.com/4310.html
来源:吾乐吧软件站
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。


Canace
第六篇了,还没进入正题,希望作者把握下。支持
Cherise
楼上说得对
吾乐吧软件站
其他几篇文章,大家自己找吾乐吧软件站搜索一下“QQ讨论组广告群发工具”,地址就不发了
比分-www.779a.com|0w4d8y
呵呵,内容写的很到位,感觉很好,收藏一下,…壬辰年(龙)四月初七 2012-4-27