永发信息网

c#调用sdk时,求教回调函数如何处理

答案:1  悬赏:70  手机版
解决时间 2021-03-20 02:59
  • 提问者网友:niaiwoma
  • 2021-03-20 00:00
c#调用sdk时,求教回调函数如何处理
最佳答案
  • 五星知识达人网友:冷風如刀
  • 2021-03-20 00:55
回调函数用.NET中的委托处理
比如SDK中有个查找所有窗口的函数:
[DllImport("user32")]
private static extern bool EnumWindows(DelegateEnumWindow ew, int lParam);
上面的参数ew就是一个委托(回调函数),再看这个参数的声明:
delegate bool DelegateEnumWindow(IntPtr hWnd, int lParam);

再看调用:
DelegateEnumWindow dew = new DelegateEnumWindow(CallBackProc);//实例化委托
EnumWindows(dew, 0);//调用API

再看CallBacProc的定义:
private bool CallBackProc(IntPtr hWnd, int lParam)
{
//在这里实现自己的查找逻辑,比如窗口的类名为XXXXX.
StringBuilder sb = new StringBuilder(256);
GetWindowText(hWnd, sb, sb.Capacity);
if(sb.ToString() == "XXX")
{
Console.WriteLine(" 找到了"); return true;
}
return false;
}

CallBackProc函数是由系统自动调用(调用者是EnumWindows函数),而不是由程序员调用
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯