我刚看到HOOK函数中的回调函数,很不理解什么是回调函数,它的意义在哪儿呢?

解决方案 »

  1.   

    回调涵数就是给系统涵数调用的涵数,由自己定义的。跟普通涵数的区别就是要
    符合某种协约; 如下是实例
       function Enumwndproc( Hwindow:Hwnd;param: lparam): boolean  stdcall ;
     var
       buffer1,buffer2:Pchar;
       //FoundCaption:boolean;
      // FoundClname:boolean;
     begin
       result:=true;
       getmem(buffer1,255);
       getmem(buffer2,255);
      try
       if GetWindowText(Hwindow,buffer1,255)>0   then
        if  pos( PwindowstructInfo(param).caption,strpas(buffer1))>0   then
             result := false;  if  GetClassName(hwindow,buffer2,255)>0   then
          if pos( PwindowstructInfo(param).calname,strpas(buffer2))>0    then
              Result := False;  if Result = False then
         PwindowstructInfo(param).wndhandle:=Hwindow; //返回查找到的窗口句柄 
      finally
       freemem(buffer1);
       freemem(buffer2);
     end;
     
     end;这是调用;
      function FindAwindow(caption, clname: string): Thandle;
     var
      wndInfo:Twindowstruct;
    begin
      wndInfo.caption:=caption;
      wndInfo.calname:=clName;
      wndInfo.wndhandle:=0;
      EnumWindows(@Enumwndproc,Lparam(@wndInfo));
      FindAwindow:=wndInfo.wndhandle;
    end;