根据网上提供代码,可以用鼠标获取指定窗体句柄,
现在想遍历指定窗体上所有控件的句柄,希望提供代码,
找了一天的帖子了,请勿发参考链接,直接上代码。小白。。。
![](https://profile-avatar.csdnimg.cn/cb2ca8c5e7324a69935586a840547319_z474243930.jpg!4)
c#已知窗体句柄,如何遍历出所有控件句柄
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- z474243930 2017-12-01 03:46关注
答案出来了:https://zhidao.baidu.com/question/1575352645104568900.html
说到做到,发代码,链接为源地址,下面我备注一下而已List<string> list = new List<string>(); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam); [DllImport("user32.dll")] public static extern int GetWindowText(int hWnd, IntPtr lpString, int nMaxCount); private void toolStripButton5_Click(object sender, EventArgs e) { list.Clear(); EnumChildWindows(this.Handle, this.EnumWindowsMethod, IntPtr.Zero); //这里得到了所有的子窗口list.Count; //this.Handle改成你已得到的窗体句柄 } private bool EnumWindowsMethod(int hWnd, int lParam) { IntPtr lpString = Marshal.AllocHGlobal(200); GetWindowText(hWnd, lpString, 200);//这里获得控件text var text = Marshal.PtrToStringAnsi(lpString); if (!string.IsNullOrWhiteSpace(text)) list.Add(text);//添加到list,如果要获得句柄就新建list添加hWnd return true; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵