在C#中使用API回调函数的方法

 

在C#中使用API回调函数的方法

就以EnumChildWindowsEnumChildProc为例子:

首先要声明EnumChildProc 为一个回调函数

public delegate bool EnumChildProc(int hwnd, IntPtr lParam);

delegateC#中的回调类型,相当于C++里面的CALLBACK,这样就可以在下面声明EnumChildWindows的时候在参数中使用EnumChildProc来作为一个类型。

声明调用user32.dll中的EnumChildWindows,如下:

[DllImport("user32.dll", EntryPoint = "EnumChildWindows")]

public static extern bool EnumChildWindows(int hwndParent, EnumChildProc EnumFunc, IntPtr lParam);

定义一个和EnumChildProc返回值和参数一样的函数:

bool EnumCP(int hwnd,IntPtr lParam)

        {

            System.Text.StringBuilder sbClassName = new StringBuilder(255);

            GetClassName(hwnd, sbClassName, 255);

            if ("Static" == sbClassName.ToString())

            {                  

                return false;

            }

            return true;

        }

这时就可以使用EnumChildWindows(hwnd, EnumCP, IntPtr.Zero); EnumCP返回true的时候,EnumChildWindow继续进行枚举窗口。当EnumCP返回false的时候,EnumChildWindow停止进行枚举窗口。

上面代码实行的是当找到一个Static类的窗口后,停止枚举。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值