当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 今天单位来了两个上头的人,说迟d会全面用ioffice2003.net。。今天看了他的示范,太强大了,功能多到我都说不出。界面又漂亮,xp的风格。现在只能是领导才有得试用。 :( 不知什么时候才能用上。。 ......
    摘要: 比如: 用户控件有一个按钮 页面调用了用户控件,我现在想能不能按用户控件里的按钮来改变页面其他服务器控件的呢? 怎么写程序? vb.net的程序 ......


啊hook问题

//---------------------------------------------------------------------------    
  #include   <vcl.h>    
  #include   <windows.h>    
  #include   <stdio.h>    
  #pragma   hdrstop    
  //---------------------------------------------------------------------------    
  //---------------------------------------------------------------------------    
   
  #pragma   argsused    
  HHOOK   hook;    
  HINSTANCE   ins;    
  LRESULT   CALLBACK   CBTProc(int   nCode,WPARAM   wParam,LPARAM   lParam);    
  //---------------------------------------------------------------------------    
  int   WINAPI   DllEntryPoint(HINSTANCE   hinst,   unsigned   long   reason,   void*   lpReserved)    
  {    
  if(ins==NULL)   ins=hinst;    
   
  if(reason==DLL_PROCESS_DETACH)    
  {UnhookWindowsHookEx(hook);    
  }    
  return   1;    
  }    
  //---------------------------------------------------------------------------    
  extern   "C"   void   __export   sethook()    
  {    
  if   (hook==NULL)    
  {    
  hook=SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTProc,ins,0);    
  if   (hook==NULL)   MessageBox(NULL,"hook   fail","message",0);    
  }    
  }    
  //------------------------------------------------------------------------------    
  LRESULT   CALLBACK   CBTProc(int   nCode,WPARAM   wParam,LPARAM   lParam)    
  {    
  if(nCode<0)   return   CallNextHookEx(hook,nCode,wParam,lParam);    
  if(nCode==HCBT_CREATEWND)    
  {MessageBox(NULL,"WND   Created!","Hook!",0);//出错的地方    
   
  }    
  return   0;    
  }    
  //--------------------------------------------------------------------------------    
  为了学习hook写的,帮忙看看错在哪里?    
  我是想在捕获到系统创建一个窗口时能弹出一个MessageBox,以检测我的hook是不是起到作用了,但是问题很麻烦,MessageBox总是一个接一个的出来。    
  还有就是,不知道应该怎么调试着样的程序,因为他好象使任何弹出的窗口、菜单都无效了。    
     
   
   
     
 

NO.1   作者: keiy

LRESULT   CALLBACK   CBTProc(int   nCode,WPARAM   wParam,LPARAM   lParam)    
  全就会不停调用的,HOOK程序就像device程序一样,不能用普通方法调试的,  
  要检测我的hook是不是起到作用了可用static   变量试试  
  static   bool   first=false;  
  if(nCode==HCBT_CREATEWND)    
  {  
      if   (!first)  
        {  
              MessageBox(NULL,"WND   Created!","Hook!",0);  
              first=true;  
          }  
   
  }    
  其实你的程序本无错,多个MessageBox就说明HOOK成功了!  
 

NO.2   作者: playguy

不要在HOOK中调用MessageBox等需要用户确认的对话框,会严重影响系统的性能。  
  可以用文件记录下来,再查看结果。  
  MessageBox本身就是一个窗口,也会触发CBTProc的,所以会循环弹出。  
   
  可以去这里看一看,绝对精彩:  
  http://www.aslike.net

NO.3   作者: matq2008

自己再写一个程序与它通信,或是直接写文件看结果


    摘要: 公司在a机(windows nt ip:10.0.0.1),上有oracle和公司数据库。客户机c机与a机在同一局域网中。通过网线连接。 现在要用adsl连接,所以加一b机(ip:218.1.1.20,win2kserver ),在此架vpn,有d机需要通过adsl连接b机,再与a机上的数据库连接。请问该怎么办? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE