我在VC6中怎么引进来一个DLL文件,并且使用他?具体怎么用呀,我刚学,不懂,请大家帮忙.谢谢!!

解决方案 »

  1.   

    在setting-->link中包含该动态库对应的lib文件,在工程中include动态库的.h文件。将dll文件放在工程目录中,就可以使用了。
    也可以用LoadLibrary动态载入
    也可以用#import静态连接一个动态库文件。比如ado的msado15.dll。一般就是直接引入的
      

  2.   

    怎么在setting-->link中包含该动态库对应的lib文件呀?我的这个里面没有我的对应的LIB文件呀,怎么添加??
      

  3.   

    我贴一个例子吧
    (1).选择MFC AppWizard(DLL)创建项目ActiveKey,并选择MFC Extension DLL(共享MFC拷贝)类型。
      (2).插入新文件ActiveKey.h,在其中输入如下代码:
       #ifndef _KEYDLL_H
       #define _KEYDLL_H
       class AFX_EXT_CLASS CKeyHook:public CObject
       {
        public:
     CKeyHook();
     ~CKeyHook();
     HHOOK Start(); //安装钩子
     BOOL Stop(); //卸载钩子
       };
       #endif  
      (3).在ActiveKey.cpp文件中加入声明"#include ActiveKey.h"。
      (4).在ActiveKey.cpp文件中加入共享数据段,代码如下:
       //Shared data section
       #pragma data_seg("sharedata")
       HHOOK glhHook=NULL; //钩子句柄。
       HINSTANCE glhInstance=NULL; //DLL实例句柄。
       #pragma data_seg()  
      (5).在ActiveKey.def文件中设置共享数据段属性,代码如下:
       SETCTIONS
       shareddata READ WRITE SHARED 
      (6).在ActiveKey.cpp文件中加入CkeyHook类的实现代码和钩子函数代码:
       //键盘钩子处理函数。
       extern "C" LRESULT WINAPI KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
       {
       if( nCode >= 0 )
       {
       if( wParam == 0X79 )//当按下F10键时,激活外挂。
     {
      //外挂实现代码。
    CPoint newPoint,oldPoint;
       GetCursorPos(&oldPoint);
       newPoint.x = oldPoint.x+40;
       newPoint.y = oldPoint.y+10;
       SetCursorPos(newPoint.x,newPoint.y);
       mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟按下鼠标左键。
      mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模拟放开鼠标左键。
      keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); //按下SHIFT键。
      keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//按下R键。
      keybd_event(0x52,MapVirtualKey(0x52,0),KEYEVENTF_KEYUP,0);//放开R键。
      keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);//放开SHIFT键。
          SetCursorPos(oldPoint.x,oldPoint.y);
     }
       }
       return CallNextHookEx(glhHook,nCode,wParam,lParam);
       }
       CKeyHook::CKeyHook(){}
       CKeyHook::~CKeyHook()
       { 
       if( glhHook )
    Stop();
       }
       //安装全局钩子。
       HHOOK CKeyHook::Start()
       { 
    glhHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);//设置键盘钩子。
    return glhHook;
    }
       //卸载全局钩子。
       BOOL CKeyHook::Stop()
       {
       BOOL bResult = TRUE;
     if( glhHook )
       bResult = UnhookWindowsHookEx(glhHook);//卸载键盘钩子。
       return bResult;
       }  
      (7).修改DllMain函数,代码如下:
       extern "C" int APIENTRY
       DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
       {
    //如果使用lpReserved参数则删除下面这行 
    UNREFERENCED_PARAMETER(lpReserved);
    if (dwReason == DLL_PROCESS_ATTACH)
    {
      TRACE0("NOtePadHOOK.DLL Initializing!\n");
       //扩展DLL仅初始化一次 
      if (!AfxInitExtensionModule(ActiveKeyDLL, hInstance))
    return 0;
      new CDynLinkLibrary(ActiveKeyDLL);
          //把DLL加入动态MFC类库中 
      glhInstance = hInstance;
      //插入保存DLL实例句柄 
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
      TRACE0("NotePadHOOK.DLL Terminating!\n");
      //终止这个链接库前调用它 
      AfxTermExtensionModule(ActiveKeyDLL);
    }
    return 1; 
       } 
      (8).编译项目ActiveKey,生成ActiveKey.DLL和ActiveKey.lib。
      接着,我们还需要创建一个外壳程序将全局钩子安装了Windows系统中,这个外壳程序编写步骤如下:
      (1).创建一个对话框模式的应用程序,项目名为Simulate。
      (2).在主对话框中加入一个按钮,使用ClassWizard为其创建CLICK事件。
      (3).将ActiveKey项目Debug目录下的ActiveKey.DLL和ActiveKey.lib拷贝到Simulate项目目录下。
      (4).从“工程”菜单中选择“设置”,弹出Project Setting对话框,选择Link标签,在“对象/库模块”中输入ActiveKey.lib。
      (5).将ActiveKey项目中的ActiveKey.h头文件加入到Simulate项目中,并在Stdafx.h中加入#include ActiveKey.h。
      (6).在按钮单击事件函数输入如下代码:
       void CSimulateDlg::OnButton1() 
       {
    // TODO: Add your control notification handler code here
    if( !bSetup )
    {
    m_hook.Start();//激活全局钩子。
    }
    else
    {
    m_hook.Stop();//撤消全局钩子。
    }
    bSetup = !bSetup;
       }  
      (7).编译项目,并运行程序
      

  4.   

    人家说了,没有lib,与.h,只有一个dll