C#调用API函数EnumWindows枚举窗口的方法

原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928

与C++不同,C#调用API函数需要引入.dll文件,步骤如下:

1. 添加命名空间

using System.Runtime.InteropServices;

2. DllImport调入EnumWindows等函数

[DllImport("user32.dll")]

//EnumWindows函数,EnumWindowsProc 为处理函数

private static extern int EnumWindows(EnumWindowsProc ewp, int lParam);

其他常用函数格式如下:
        [DllImport("user32.dll")]
        private static extern int GetWindowText(int hWnd, StringBuilder title, int size);
        [DllImport("user32.dll")]
        private static extern bool IsWindowVisible(int hWnd);
        [DllImport("user32.dll")]
        private static extern int GetWindowTextLength(int hWnd);
        [DllImport("USER32.DLL")]
        private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
        [DllImport("USER32.DLL")]
        private static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);

3. 申明委托

public delegate bool EnumWindowsProc(int hWnd, int lParam);

4.定义委托函数,ADA_EnumWindowsProc为执行函数,返回true则EnumWindows继续枚举下一个顶级窗口直到枚举完

EnumWindowsProc ewp = new EnumWindowsProc(ADA_EnumWindowsProc);
        EnumWindows(ewp, 0);

5. 实现委托函数

public bool  ADA_EnumWindowsProc(int hWnd, int lParam)
        {
            int cTxtLen, i;
            String cTitle, strtmp;
            if (IsWindowVisible(hWnd)) 
            {

//..........对每一个枚举窗口的处理
                //Get the task name
                cTxtLen = GetWindowTextLength(hWnd) +1;
                StringBuilder text = new StringBuilder(cTxtLen);
                GetWindowText(hWnd, text, cTxtLen);
                cTitle = text.ToString();
                cTitle = cTitle.ToUpper();

//...............
            }

return true;
        }

posted on 2013-08-03 10:47 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3234344.html

C#调用API函数EnumWindows枚举窗口的方法相关推荐

  1. 在C#中调用Win32函数EnumWindows枚举所有窗口。

    原文 http://www.cnblogs.com/mfm11111/archive/2009/06/30/1514322.html 开发旺旺群发软件,难点及重要技术点分析(一) 一.        ...

  2. Delphi中调用API函数经验点滴(二)

    2019独角兽企业重金招聘Python工程师标准>>> 二.弹出模式化对话框 在Delphi中,提供模式化对话框的方法很多,现对几种比较常用的方法做如下比较: 1) 直接调用Wind ...

  3. Vb.net/VB 声明API函数实现父窗口功能

    回想第一次敲机房收费.自己调用了api函数实现了父窗口及其子窗口最小化的功能.现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 事实上细致看两者并没有多大的差别. ...

  4. Python ctypes 调用API函数模拟键盘鼠标事件

    在Python编程中, 有时需要模拟键盘或鼠标事件, 自动操作计算机, 比如玩游戏等. 本文介绍使用ctypes模块调用API函数, 模拟键盘鼠标事件的方法. 目录 1.导入ctypes模块 2.通过 ...

  5. C#中调用API函数RegisterHotKey注册多个系统热键

    转自:http://www.kkee.cn/article.asp?id=84要设置快捷键必须使用user32.dll下面的两个方法. BOOL RegisterHotKey( //注册系统热键的AP ...

  6. 使用c#调用API函数CreateProcess来运行外部程序

    c#调用CreateProcess函数比较麻烦的地方就是该函数的那些参数用c#的语法如何定义,CreateProcess函数位于Kernel32.dll中,原形如下: BOOL CreateProce ...

  7. 通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷

    在winform程序中,有时会选择边框设计会none,但是这样就不能拖拽窗体移动 解决方案有二: 1,判断坐标控制拖拽 2.利用API函数, 下面介绍利用API函数,方便,快捷 #region 移动无 ...

  8. Windows API 函数SendMessage与PostMessage使用方法和常见的坑

    Windows API 函数中 SendMessage 与 PostMessage 用处很大,经常被程序员们使用.对老手们来说,了如知掌,但对新手来说,可能会遇到这样那样的问题.我作为一名老手中的新手 ...

  9. 基于API函数的串口通信(方法讲解)

    用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...

最新文章

  1. LayIM.AspNetCore Middleware 开发日记(一)闲言碎语
  2. 写了个Linux包过滤防火墙
  3. Docker源码分析(十):Docker镜像下载
  4. python云资源管理_python管理云服务器
  5. Python绘制匀加速运动质点的速度-时间图像与位移-时间图像
  6. 普通话转粤语_语音转文字评测:几款语音转文字app,你了解多少?
  7. nginx1.8.0安装
  8. uboot开机logo
  9. 开源免费制造业erp erp5的优点分析
  10. 阿里云服务器地域的选择
  11. 我的程序员之路(13)——2017年度总结
  12. css--盒子的尺寸
  13. 当你学会炒菜的时候,你就学会了大数据
  14. 免费瘫软入院,付费发飙成壮汉,YoMail 想干嘛?
  15. 电影《寒战1》中的管理知识
  16. “2019-04-25T16:00:00.000+000”时间格式转换 (IE兼容问题)
  17. 为什么我要选择Java
  18. 文件服务器 架构,文件服务器架构规划
  19. android 设置联系人头像代码,Android根据电话号码获得联系人头像实例代码
  20. spring security 安全框架改造统一登录oauth2.0方式

热门文章

  1. java_interface的用法_Java注释@interface的用法
  2. mysql数据库任务驱动式教程课后答案_MySQL数据库任务驱动式教程
  3. layui数据表格格式化
  4. DB2 jdbc url 写法
  5. ZUST蓝桥杯校内选拔赛(java,c)安吉校区
  6. 【codevs1380】没有上司的舞会
  7. 列表转化成数组_30. 把数组排成最小的数
  8. rk修改launcher_RK launcher V 0.41 官方版
  9. golangsha1解码_如何阅读Golang的源码?
  10. 华为路由器时间同步_4G网络变WIFI,华为4G路由2 Pro让上网变得更简单