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

帮帮我吧 我再一个全局的hook中调用时编译的时候出现了…… 请帮我呀!!!!

楼主wyouken(无心の伤你)2002-12-17 11:09:27 在 C++ Builder / Windows SDK/API 提问

Linker   Error]   Unresolved   external   'WinMain'   referenced   from   D:\PROGRAM   FILES\BORLAND\CBUILDER5\LIB\C0W32.OBJ  
   
   
            我用的是网上的一个dll   大家帮我一下吧  
  //----------------------------------------------------------------------------------------------------  
  extern   "C"   __declspec(dllexport)   void   __stdcall   SetHook(HWND,bool);  
  LRESULT   CALLBACK   HookProc(int   nCode,WPARAM   wParam,LPARAM   lParam)      
    //----------------------------------------------------------------------------------------------------  
  static   HINSTANCE   hInstance;         //   应用实例句柄  
  static   HWND   hWndMain;                       //   MainForm句柄  
  static   HHOOK   hKeyHook;                 //   HOOK句柄  
  static   const   myMessage=2000;       //   自定义消息号  
  static   const   SecondPar=1;                     //   自定义消息第2参数  
    //----------------------------------------------------------------------------------------------------  
  int   WINAPI   DllEntryPoint(HINSTANCE   hinst,   unsigned   long   reason,   void*   lpReserved)  
  {     hInstance=hinst;   return   1;   }  
    //----------------------------------------------------------------------------------------------------  
  void   __stdcall   SetHook(HWND   hMainWin,bool   nCode)      
  {            
    if(nCode)     //   安放HOOK  
        {  
          hWndMain=hMainWin;  
          hKeyHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)HookProc,hInstance,0);  
        }    
    else                   //   卸下HOOK  
          UnhookWindowsHookEx(hKeyHook);  
  }  
    //----------------------------------------------------------------------------------------------------  
  LRESULT   CALLBACK   HookProc(int   nCode,WPARAM   wParam,LPARAM   lParam)      
  {                                              
    EVENTMSG   *keyMSG=(EVENTMSG   *)lParam;  
    if((nCode==HC_ACTION)&&(keyMSG->message==WM_KEYUP))  
            PostMessage(hWndMain,myMessage,(char)(keyMSG->paramL),SecondPar);  
            //   向调用窗体发消息myMessage和虚拟键码(char)(keyMSG->paramL)  
    return((int)CallNextHookEx(hKeyHook,nCode,wParam,lParam));  
  }  
    //----------------------------------------------------------------------------------------------------  
   
  应用代码如下:(调DLL)  
     
  应用代码如下:(调DLL)  
    //----------------------------------------------------------------------------------------------------  
  static   HINSTANCE   hDLL;     //   DLL句柄  
  typedef   void   __stdcall   (*DLLFUN)(HWND,bool);  
  DLLFUN   DLLSetHook;  
  static   const   myMessage=2000;  
  static   const   SecondPar=1;  
    //----------------------------------------------------------------------------------------------------  
  __fastcall   TForm1::TForm1(TComponent*   Owner):TForm(Owner)  
  {}  
    //----------------------------------------------------------------------------------------------------  
  void   __fastcall   TForm1::FormCreate(TObject   *Sender)  
  {  
    hDLL=LoadLibrary((LPCTSTR)"Project1.dll");   //   DLL文件名:Project1.dll  
    if(hDLL==NULL)  
        {   ShowMessage("DLL:   不能加载!程序退出。");   exit(1);   }  
    DLLSetHook   =(DLLFUN)GetProcAddress(hDLL,"SetHook");  
    if(DLLSetHook==NULL)  
        {   ShowMessage("DLL:   函数没找到!程序退出。");   FreeLibrary(hDLL);   exit(1);   }  
    DLLSetHook(this->Handle,true);  
  }  
    //----------------------------------------------------------------------------------------------------  
  void   __fastcall   TForm1::FormClose(TObject   *Sender,   TCloseAction   &Action)  
  {  
    DLLSetHook(NULL,false);     //   卸下HOOK  
    FreeLibrary(hDLL);                             //   卸下DLL  
  }  
    //----------------------------------------------------------------------------------------------------  
  void   __fastcall   TForm1::ApplicationEvents1Message(tagMSG   &Msg,bool   &Handled)  
  {                                                                                   //   BCB5.0   的ApplicationEvents元件  
    if((Msg.message==myMessage)&&(Msg.lParam==SecondPar))  
          ShowMessage("       收到HOOK按键消息!\n\n   【键虚拟码】:"+IntToStr(Msg.wParam));  
  }  
    //---------------------------------------------------------------------------------------------------- 问题点数:20、回复次数:2Top

1 楼kingkee(风再起时)回复于 2002-12-17 15:07:19 得分 20

我有完全正常的,要吗?   发给你,前久刚给网友发过。Top

2 楼wyouken(无心の伤你)回复于 2002-12-17 17:46:43 得分 0

kingkee(风再起时)     我的信箱是wyouken@163.com  
  谢谢!!!!Top

相关问题

  • 如何通过VB利用API调用实现全局HOOK。
  • 高分求救!!!!!关于HOOK的调用(全局)!!!
  • sco上调用syslog()编译出错???
  • VC.NET如何调用VC6.0编译的DLL?
  • C# 编译dll VB调用 可以吗
  • 编译dll后,不能正常调用
  • 关于DLL隐藏调用中,当DLL为全局Hook时,不起作用的问题!!!
  • 又见全局Hook
  • 全局函数: 调用全局函数怎么也说未定义?
  • 如何在vc++中调用delphi编译的DLL

关键词

  • 句柄
  • hinstance
  • static

得分解答快速导航

  • 帖主:wyouken
  • kingkee

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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