CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

高手帮忙:将这段代码改写成VB的,分不够再加,谢谢!

楼主Snnywf888(AAA)2005-01-13 11:09:05 在 C/C++ / C++ 语言 提问

我是个小虾米,对C++不太熟悉,别笑我啊!呵呵  
  问题点数:100、回复次数:19Top

1 楼Snnywf888(AAA)回复于 2005-01-13 11:10:29 得分 0

C++代码如下:  
  //==============================================================================  
  //   E:\work\SubclassingThunk\1.   Tlb\SubclassingSink.idl  
  //  
  //       Subclassing   Thunk   (SuperClass   V2)   Project  
  //       Portions   copyright   (c)   2002   by   Paul   Caton   <Paul_Caton@hotmail.com>  
  //       Portions   copyright   (c)   2002   by   Vlad   Vissoultchev   <wqweto@myrealbox.com>  
  //  
  //       The   Subclassing   Sink     interface   definition  
  //  
  //   Modifications:  
  //  
  //   2002-09-28         WQW           Initial   implementation   based   on   the   original  
  //                                               iSuperClass.cls  
  //  
  //==============================================================================  
   
  [  
      uuid(63441E51-0F47-4888-B620-88BAC83A4C1F),  
      version(1.0),  
      helpstring("Subclassing/Hooking   sink   interfaces   1.0")  
  ]  
  library   SubclassingSink  
  {  
          importlib("stdole2.tlb");  
   
          interface   ISubclassingSink;  
          interface   IHookingSink;  
           
          typedef   enum   {  
                  WH_MSGFILTER   =   (-1),  
                  WH_JOURNALRECORD   =   0,  
                  WH_JOURNALPLAYBACK   =   1,  
                  WH_KEYBOARD   =   2,  
                  WH_GETMESSAGE   =   3,  
                  WH_CALLWNDPROC   =   4,  
                  WH_CBT   =   5,  
                  WH_SYSMSGFILTER   =   6,  
                  WH_MOUSE   =   7,  
                  WH_HARDWARE   =   8,  
                  WH_DEBUG   =   9,  
                  WH_SHELL   =   10,  
                  WH_FOREGROUNDIDLE   =   11,  
                  WH_CALLWNDPROCRET   =   12,  
                  WH_KEYBOARD_LL   =   13,  
                  WH_MOUSE_LL   =   14  
          }   HookType;  
   
          typedef   enum   {  
                  HCBT_MOVESIZE               =   0,  
                  HCBT_MINMAX                   =   1,  
                  HCBT_QS                           =   2,  
                  HCBT_CREATEWND             =   3,  
                  HCBT_DESTROYWND           =   4,  
                  HCBT_ACTIVATE               =   5,  
                  HCBT_CLICKSKIPPED       =   6,  
                  HCBT_KEYSKIPPED           =   7,  
                  HCBT_SYSCOMMAND           =   8,  
                  HCBT_SETFOCUS               =   9,  
                   
                  PM_NOREMOVE                   =   0x0000,  
                  PM_REMOVE                       =   0x0001,  
                  PM_NOYIELD                     =   0x0002,  
   
                  HC_ACTION                       =   0,  
                  HC_GETNEXT                     =   1,  
                  HC_SKIP                           =   2,  
                  HC_NOREMOVE                   =   3,  
                  HC_NOREM                         =   3,  
                  HC_SYSMODALON               =   4,  
                  HC_SYSMODALOFF             =   5,  
   
                  MSGF_DIALOGBOX             =   0,  
                  MSGF_MESSAGEBOX           =   1,  
                  MSGF_MENU                       =   2,  
                  MSGF_SCROLLBAR             =   5,  
                  MSGF_NEXTWINDOW           =   6,  
                  MSGF_MAX                         =   8,  
                  MSGF_USER                       =   4096,  
                  MSGF_DDEMGR                   =   0x8001,  
   
                  HSHELL_WINDOWCREATED                 =   1,  
                  HSHELL_WINDOWDESTROYED             =   2,  
                  HSHELL_ACTIVATESHELLWINDOW     =   3,  
                  HSHELL_WINDOWACTIVATED             =   4,  
                  HSHELL_GETMINRECT                       =   5,  
                  HSHELL_REDRAW                               =   6,  
                  HSHELL_TASKMAN                             =   7,  
                  HSHELL_LANGUAGE                           =   8  
                   
          }   HookCode;  
   
          typedef   long   LPARAM;  
          typedef   long   WPARAM;  
          typedef   long   LRESULT;  
          typedef   long   UINT;  
          typedef   long   HWND;  
          typedef   long   BOOL;  
          typedef   long   LPVOID;  
          typedef   long   HINSTANCE;  
          typedef   long   HMENU;  
          typedef   LPSTR   LPCTSTR;  
          typedef   long   DWORD;  
          typedef   long   ULONG_PTR;  
   
          typedef   struct   tagPOINTAPI   {    
              LONG   x;    
              LONG   y;    
          }   POINTAPI;  
   
          typedef   struct   _RECT   {    
              LONG   left;    
              LONG   top;    
              LONG   right;    
              LONG   bottom;    
          }   RECT;    
   
          typedef   struct   tagCWPSTRUCT   {    
                  LPARAM     lParam;  
                  WPARAM     wParam;    
                  UINT         message;    
                  HWND         hwnd;    
          }   CWPSTRUCT;  
   
          typedef   struct   tagCWPRETSTRUCT   {    
                  LRESULT   lResult;    
                  LPARAM     lParam;    
                  WPARAM     wParam;    
                  UINT         message;    
                  HWND         hwnd;    
          }   CWPRETSTRUCT;    
   
          typedef   struct   tagCBTACTIVATESTRUCT   {    
                  BOOL   fMouse;    
                  HWND   hWndActive;    
          }   CBTACTIVATESTRUCT;    
   
          typedef   struct   tagCREATESTRUCT   {  
                  LPVOID         lpCreateParams;    
                  HINSTANCE   hInstance;    
                  HMENU           hMenu;    
                  HWND             hwndParent;    
                  int               cy;    
                  int               cx;    
                  int               y;    
                  int               x;    
                  LONG             style;    
                  long             lpszName;    
                  long             lpszClass;    
                  DWORD           dwExStyle;    
          }   CREATESTRUCT;  
   
          typedef   struct   tagCBT_CREATEWND   {    
                  long                 lpcs;    
                  HWND                 hwndInsertAfter;    
          }   CBT_CREATEWND;  
   
          typedef   struct   tagMOUSEHOOKSTRUCT   {    
                  POINTAPI     pt;    
                  HWND             hwnd;    
                  UINT             wHitTestCode;    
                  ULONG_PTR   dwExtraInfo;    
          }   MOUSEHOOKSTRUCT;    
   
          typedef   struct   tagDEBUGHOOKINFO   {    
                  DWORD     idThread;    
                  DWORD     idThreadInstaller;    
                  LPARAM   lParam;    
                  WPARAM   wParam;    
                  int         code;    
          }   DEBUGHOOKINFO;    
   
          typedef   struct   tagMSG   {  
              HWND       hwnd;    
              UINT       message;    
              WPARAM   wParam;    
              LPARAM   lParam;    
              DWORD     time;    
              POINTAPI pt;    
          }   MSG;    
   
          typedef   struct   tagEVENTMSG   {  
                  UINT     message;    
                  UINT     paramL;    
                  UINT     paramH;    
                  DWORD   time;    
                  HWND     hwnd;    
          }   EVENTMSG;    
   
          typedef   struct   tagKBDLLHOOKSTRUCT   {  
                  DWORD           vkCode;  
                  DWORD           scanCode;  
                  DWORD           flags;  
                  DWORD           time;  
                  ULONG_PTR   dwExtraInfo;  
          }   KBDLLHOOKSTRUCT;  
   
          typedef   struct   tagMSLLHOOKSTRUCT   {  
              POINTAPI     pt;  
              DWORD           mouseData;  
              DWORD           flags;  
              DWORD           time;  
              ULONG_PTR   dwExtraInfo;  
          }   MSLLHOOKSTRUCT;  
   
          typedef   enum   {  
                  GWL_WNDPROC                   =   (-4),  
                  GWL_HINSTANCE               =   (-6),  
                  GWL_HWNDPARENT             =   (-8),  
                  GWL_STYLE                       =   (-16),  
                  GWL_EXSTYLE                   =   (-20),  
                  GWL_USERDATA                 =   (-21),  
                  GWL_ID                             =   (-12)  
          }   GWLIndex;  
           
  Top

2 楼BluntBlade(信仰迷离·重构之道,在于Redo/Undo之间)回复于 2005-01-13 11:11:14 得分 0

发错版面了吧?Top

3 楼Snnywf888(AAA)回复于 2005-01-13 11:12:26 得分 0

[  
              odl,  
              uuid(012A34BE-6FB0-418A-A94F-93B74050A680),  
              version(1.0),  
              dual,  
              nonextensible,  
              oleautomation  
          ]  
          interface   ISubclassingSink   :   IDispatch   {  
                          [id(1)]   HRESULT     After(  
                                                  [in,   out]   long*   lReturn,    
                                                  [in]   long   hWnd,    
                                                  [in]   long   uMsg,    
                                                  [in]   long   wParam,    
                                                  [in]   long   lParam);  
                          [id(2)]   HRESULT     Before(  
                                                  [in,   out]   boolean*   bHandled,    
                                                  [in,   out]   long*   lReturn,    
                                                  [in,   out]   long*   hWnd,    
                                                  [in,   out]   long*   uMsg,    
                                                  [in,   out]   long*   wParam,    
                                                  [in,   out]   long*   lParam);  
          };  
   
          [  
              odl,  
              uuid(012A34BF-6FB0-418A-A94F-93B74050A680),  
              version(1.0),  
              dual,  
              nonextensible,  
              oleautomation  
          ]  
          interface   IHookingSink   :   IDispatch   {  
                          [id(1)]   HRESULT     After(  
                                                  [in,   out]   long*   lReturn,    
                                                  [in]   HookCode   nCode,    
                                                  [in]   long   wParam,    
                                                  [in]   long   lParam);  
                          [id(2)]   HRESULT     Before(  
                                                  [in,   out]   boolean*   bHandled,    
                                                  [in,   out]   long*   lReturn,    
                                                  [in,   out]   HookCode*   nCode,    
                                                  [in,   out]   long*   wParam,    
                                                  [in,   out]   long*   lParam);  
          }  
           
  /*      
          [dllname("kernel32")]  
          module   Kernel32   {  
                  [entry("GetModuleHandleA")]  
                  long   _stdcall   GetModuleHandle   ([in]   LPSTR   lpModuleName);  
   
                  [entry("GetProcAddress")]  
                  long   _stdcall   GetProcAddress   (  
                                                  [in]   long   hModule,    
                                                  [in]   LPSTR   lpProcName);  
   
                  [entry("RtlMoveMemory")]  
                  long   _stdcall   CopyMemory   (  
                                                  [in]   long   Destination,    
                                                  [in]   long   Source,  
                                                  [in]   long   Length);  
   
                  [entry("lstrlenA")]  
                  long   _stdcall   lstrlen   ([in]   long   lpsz);  
   
                  [entry("lstrcpyA")]  
                  long   _stdcall   lstrcpy   (  
                                                  [in]   LPSTR   lpDest,  
                                                  [in]   long   lpSou);  
          }  
   
          [dllname("user32")]  
          module   User32   {  
                  [entry("SetWindowsHookExA")]  
                  long   _stdcall   SetWindowsHookEx   (    
                                                  [in]   HookType   idHook,    
                                                  [in]   long   lpfn,  
                                                  [in]   long   hMod,  
                                                  [in]   long   dwThreadId);  
   
                  [entry("UnhookWindowsHookEx")]  
                  long   _stdcall   UnhookWindowsHookEx   ([in]   long   hHook);  
   
                  [entry("GetWindowLongA")]  
                  long   _stdcall   GetWindowLong   (  
                                                  [in]   long   hWnd,  
                                                  [in]   GWLIndex   nIndex);  
   
                  [entry("SetWindowLongA")]  
                  long   _stdcall   SetWindowLong   (  
                                                  [in]   long   hWnd,  
                                                  [in]   GWLIndex   nIndex,  
                                                  [in]   long   dwNewLong);  
   
                  [entry("CallWindowProcA")]  
                  long   _stdcall   CallWindowProc   (  
                                                  [in]   long   lpPrevWndFunc,  
                                                  [in]   long   hWnd,  
                                                  [in]   long   uMsg,  
                                                  [in]   long   wParam,  
                                                  [in]   long   lParam);  
   
          }    
  */  
   
  };Top

4 楼xuzheng318(忧郁王子)回复于 2005-01-13 11:29:11 得分 5

请问楼主,这是什么代码?  
  感觉应该到vc里面看看!Top

5 楼Snnywf888(AAA)回复于 2005-01-14 09:02:33 得分 0

是VC的代码,有会的吗?Top

6 楼goodluckyxl(被人遗忘的狗)回复于 2005-01-14 09:06:02 得分 5

vb   是启蒙语言  
  支持点人气   ^_^Top

7 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2005-01-14 09:20:19 得分 5

都是一些類型定義而已呀。。。  
   
  樓主   是不是想hook   api之類得??Top

8 楼Snnywf888(AAA)回复于 2005-01-14 09:44:29 得分 0

是,快帮帮我呀Top

9 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2005-01-14 09:48:45 得分 5

IDL文法转成VB干什么?Top

10 楼Flood1984(峰子)回复于 2005-01-14 09:49:20 得分 5

IDE开发工具中的语句并不是顺便就能互换的,  
  每种工具都有自己的函数库,  
  想互换哪儿那么容易,重新写来的更快。  
  Top

11 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2005-01-14 09:52:17 得分 70

IDL:  
  typedef   enum   {  
                  WH_MSGFILTER   =   (-1),  
                  WH_JOURNALRECORD   =   0,  
                  WH_JOURNALPLAYBACK   =   1,  
                  WH_KEYBOARD   =   2,  
                  WH_GETMESSAGE   =   3,  
                  WH_CALLWNDPROC   =   4,  
                  WH_CBT   =   5,  
                  WH_SYSMSGFILTER   =   6,  
                  WH_MOUSE   =   7,  
                  WH_HARDWARE   =   8,  
                  WH_DEBUG   =   9,  
                  WH_SHELL   =   10,  
                  WH_FOREGROUNDIDLE   =   11,  
                  WH_CALLWNDPROCRET   =   12,  
                  WH_KEYBOARD_LL   =   13,  
                  WH_MOUSE_LL   =   14  
          }   HookType;  
  -->  
  VB:  
                  public   const   WH_MSGFILTER   =   (-1),  
                  public   const   WH_JOURNALRECORD   =   0,  
                  public   const   WH_JOURNALPLAYBACK   =   1,  
                  public   const   WH_KEYBOARD   =   2,  
                  public   const   WH_GETMESSAGE   =   3,  
                  public   const   WH_CALLWNDPROC   =   4,  
                  public   const   WH_CBT   =   5,  
                  public   const   WH_SYSMSGFILTER   =   6,  
                  public   const   WH_MOUSE   =   7,  
                  public   const   WH_HARDWARE   =   8,  
                  public   const   WH_DEBUG   =   9,  
                  public   const   WH_SHELL   =   10,  
                  public   const   WH_FOREGROUNDIDLE   =   11,  
                  public   const   WH_CALLWNDPROCRET   =   12,  
                  public   const   WH_KEYBOARD_LL   =   13,  
                  public   const   WH_MOUSE_LL   =   14  
  Top

12 楼r_swordsman(取什么样的昵称才有个性又能显示出来而且不能太长?)回复于 2005-01-14 09:55:57 得分 0

转成汇编就容易~~~~换VB难啊~~~~  
  有些特性VB没啊~~~~~Top

13 楼Snnywf888(AAA)回复于 2005-01-14 09:57:30 得分 0

它是枚举类型里的元素,不能提出来吧,应该是这样的吧?  
  Public   Enum   HookType  
        WH_MSGFILTER   =   (-1)  
        WH_JOURNALRECORD   =   0  
        WH_JOURNALPLAYBACK   =   1  
        WH_KEYBOARD   =   2  
        WH_GETMESSAGE   =   3  
        WH_CALLWNDPROC   =   4  
        WH_CBT   =   5  
        WH_SYSMSGFILTER   =   6  
        WH_MOUSE   =   7  
        WH_HARDWARE   =   8  
        WH_DEBUG   =   9  
        WH_SHELL   =   10  
        WH_FOREGROUNDIDLE   =   11  
        WH_CALLWNDPROCRET   =   12  
        WH_KEYBOARD_LL   =   13  
        WH_MOUSE_LL   =   14  
  End   Enum  
   
  Top

14 楼Snnywf888(AAA)回复于 2005-01-14 10:01:51 得分 0

再问一个可笑的问题:TLB类库文件是用什么工具写出来的?还有IDL文件和它是什么关系?Top

15 楼Snnywf888(AAA)回复于 2005-01-14 10:02:24 得分 0

还有IDL文件是干什么用的?Top

16 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2005-01-14 10:07:26 得分 0

typedef   struct   tagCBTACTIVATESTRUCT   {    
                  BOOL   fMouse;    
                  HWND   hWndActive;    
          }   CBTACTIVATESTRUCT  
   
  --〉  
   
  PUBLIC   TYPE   CBTACTIVATESTRUCT  
          fMouse   as   BOOL  
          hWndActive   as   HWND  
  end   type  
   
  都是举个例子,其他楼主自己做了,没法全做  
   
  还有typedef好像不能翻Top

17 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2005-01-14 10:16:10 得分 0

IDL可以通过使用工具(MIDL?)翻译成接口头文件tlh和库定义文件tlb,好像还能够生成stub和proxy的代码(这个我不太确定,因为米有深究过)。  
  Top

18 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2005-01-14 10:18:29 得分 0

写错了,有些类型不能直接用,要用等价的原类型  
  PUBLIC   TYPE   CBTACTIVATESTRUCT  
          fMouse   as   boolean  
          hWndActive   as   long  
  end   type  
  Top

19 楼yjh1982(血精灵)回复于 2005-01-14 10:21:35 得分 5

VB有枚举么?Top

相关问题

  • 高手帮忙:将这段代码改写成VB的,分不够再加,谢谢!
  • 把C#代码改写为VB代码的问题(关于OnInit的).
  • 请问这段C#代码怎样改写成VB的? ( ...?...: )
  • 请帮忙改写为VB代码,谢谢!!!!!
  • 一段用VB写的加密的代码,谁能帮我用C#改写?
  • vb至代码转换,分不够再加
  • eWebEditor中一代码改写成c#
  • VB代码转Delphi
  • vb->vb.net的代码
  • 这段C语言代码怎样改写成Delphi代码啊

关键词

  • c++
  • 代码
  • wh
  • hshell
  • hcbt
  • typedef
  • long
  • msgf
  • cbtactivatestruct
  • fmouse

得分解答快速导航

  • 帖主:Snnywf888
  • xuzheng318
  • goodluckyxl
  • beyondtkl
  • sandrowjw
  • Flood1984
  • sandrowjw
  • yjh1982

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo