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

 

    摘要: 今天碰到她了 隔着玻璃 她打的轿车,在安静的放着背景音乐的冷气车里向我招手 我站在公交车里,在充斥着躁声和闷热的汗臭的车里向她尴尬的笑笑 她是我的高中同学,我也是她的高中同学 毕业后,英语出色的她在一家外企做着体面的高级电话接线员(就是通常所讲的技术支持)的工作,按月俸禄,丰衣足食 毕业后,报着理想要做一番事业的我四处奔波在各类所谓软件公司中,有上顿没下顿,节衣缩食 ... 开发部是软件开......
 ·一个sql语句,高手看看    »显示摘要«
    摘要: 一个表: item color amount a red 20 a blue 35 b red 16 b blue 13 怎么用sql语句现实红色数目大于蓝色的item,并显示差直 ......


如何拦截其他应用程序的消息

在一个程序中,需要打开Excel。但是,希望在关闭Excel的时候首先通知启动程序,该如何解决?我以前一直用BCB的,这次用VB.NET,主要代码如下,可就是不能响应.谁知道Spy++和MySpy是怎么做的吗?  
                  m_comExcelApp.Visible   =   True  
                  strCaption   =   m_comExcelApp.Caption.Trim  
                  lMainWnd   =   FindWindow("XLMAIN",   strCaption)         找到启动的Excel  
   
                  Debug.WriteLine("Excel   Handle:"   +   CStr(lMainWnd.ToInt32))  
                  Dim   pid   As   IntPtr  
                  Dim   err   As   IntPtr  
                  If   lMainWnd.ToInt32   <>   0   Then  
                          err   =   GetWindowThreadProcessId(lMainWnd,   pid)       获得Thread   ID  
                  End   If  
   
                  Debug.WriteLine("Excel   Thread   ID:"   +   CStr(err.ToInt32))  
                  Debug.WriteLine("Excel   Process   ID:"   +   CStr(pid.ToInt32))  
   
                  设置钩子  
                  hHook   =   SetWindowsHookEx(WH_CALLWNDPROC,   AddressOf   CBTProc,   pid.ToInt32,   err.ToInt32)  
   
  -------------------  
  In   Module  
  -------------------  
  Public   Declare   Function   CallNextHookEx   Lib   "user32"   (ByVal   hHook   As   Integer,   ByVal   nCode   As   Integer,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Integer)   As   Integer  
   
  Public   Declare   Function   UnhookWindowsHookEx   Lib   "user32"   (ByVal   hHook   As   Integer)   As   Integer  
   
          Public   Declare   Function   SetWindowsHookEx   Lib   "user32"   Alias   "SetWindowsHookExA"   (ByVal   idHook   As   Integer,   ByVal   lpfn   As   HookFuncType,   ByVal   hmod   As   Integer,   ByVal   dwThreadId   As   Integer)   As   Integer  
   
          Public   Declare   Function   PostMessage   Lib   "user32"   Alias   "PostMessageA"   (ByVal   hwnd   As   IntPtr,   ByVal   wMsg   As   Integer,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Integer)   As   Integer  
   
          Public   Delegate   Function   HookFuncType(ByVal   nCode   As   Integer,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Integer)   As   Integer  
   
  Public   Const   WH_KEYBOARD   As   Short   =   2  
  Public   Const   KBH_MASK   As   Integer   =   &H20000000  
  Public   Const   WM_LBUTTONDOWN   As   Short   =   &H201s  
  Public   Const   WM_LBUTTONUP   As   Short   =   &H202s  
          Public   Const   WM_CLOSE   =   &H10  
          Public   Const   WH_CALLWNDPROC   =   4  
   
          Public   hHook   As   Integer  
          钩子进入点  
          Public   Function   CBTProc(ByVal   nCode   As   Integer,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Integer)   As   Integer  
                  MsgBox(".........Capture   ExcelEvent")  
                  If   nCode   >=   0   Then  
                          Process   keys   you   want   to   filter  
                  End   If  
                  CBTProc   =   CallNextHookEx(hHook,   nCode,   wParam,   lParam)  
          End   Function  
 

NO.1   作者: Aweay

to   cwsheng   下面是myspy的hook代码:  
   
  LRESULT   CALLBACK   MsgHookProc1(int   nCode,   WPARAM   wParam,LPARAM   lParam)  
  {  
   
      if   (nCode>=0)  
      {  
          CWPSTRUCT*   mm=(CWPSTRUCT*)lParam;  
          MsgData   data;  
          data.msg=mm->message;  
          data.wparam=(int)mm->wParam;  
          data.lparam=(int)mm->lParam;  
          data.type=1;  
          data.result=0;  
          COPYDATASTRUCT   copydata;  
          copydata.dwData=0;  
          copydata.cbData=sizeof(MsgData);  
          copydata.lpData=&data;  
          if(mm->hwnd==HookStruct->HookedWnd)  
          {  
              SendMessage(HookStruct->ParentWnd,WM_COPYDATA,0,(LPARAM)&copydata);  
   
          }  
      }  
      return(CallNextHookEx(HookStruct->MsgHook1,nCode,wParam,lParam));  
  }  
   
  extern   "C"   __declspec(dllexport)  
  void   DisableMsgHook()  
  {  
    if   (HookStruct->MsgHook1!=NULL)  
      {  
            UnhookWindowsHookEx(HookStruct->MsgHook1);  
            UnhookWindowsHookEx(HookStruct->MsgHook2);  
            UnhookWindowsHookEx(HookStruct->MsgHook3);  
            HookStruct->MsgHook1=NULL;   //   &ETH;&para;&micro;&ocirc;&ETH;&Acirc;&sup1;&sup3;×&Oacute;  
            HookStruct->MsgHook2=NULL;   //   &ETH;&para;&micro;&ocirc;&ETH;&Acirc;&sup1;&sup3;×&Oacute;  
            HookStruct->MsgHook3=NULL;   //   &ETH;&para;&micro;&ocirc;&ETH;&Acirc;&sup1;&sup3;×&Oacute;  
            HookStruct->HookedWnd=NULL;  
            HookStruct->ParentWnd=NULL;  
      }  
  }  
   
  extern   "C"   __declspec(dllexport)  
  void   EnableMsgHook(HWND   hwnd,HWND   parent)  
  {  
      if   (HookStruct->MsgHook1==NULL)  
      {  
          HookStruct->HookedWnd=hwnd;  
          HookStruct->ParentWnd=parent;  
          HookStruct->MsgHook1=SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)MsgHookProc1,DllHinst,0);  
          HookStruct->MsgHook2=SetWindowsHookEx(WH_CALLWNDPROCRET,(HOOKPROC)MsgHookProc2,DllHinst,0);  
          HookStruct->MsgHook3=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)MsgHookProc3,DllHinst,0);  
      }  
  }


    摘要: 提供有用代码的给100分,不够另开帖。 ......
» 本期热门文章:

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