动态链接库和钩子(一)

Eddy 发布于2009-11-23 10:54:14 分类: 程序设计 已浏览loading 网友评论0条 我要评论

VC6新建一个Win32 Dynamic-Link Library工程,Dll代码:

#include "stdafx.h"
#include "eddy1.h"
#include <stdio.h>

HMODULE g_hModule;
BOOL APIENTRY DllMain( HANDLE hModule,              //本模块句柄
                       DWORD  ul_reason_for_call,   //调用原因
                       LPVOID lpReserved            //保留
      )
{
    switch (ul_reason_for_call)
 {
  case DLL_PROCESS_ATTACH:       //表示动态链接库刚被某个进程加载
   g_hModule = (HMODULE)hModule;
   break;
    }
    return TRUE;
}

// 自定义导出函数
void fnEddy1(LPCTSTR pszContent)
{
 int ch = '\\';
 char sz[MAX_PATH];
 GetModuleFileName(g_hModule,sz,MAX_PATH);
 MessageBox(NULL,pszContent,strrchr(sz,ch)+1,MB_OK);
}

为了将函数导出供其他模块使用,在eddy1.h文件中加入如下声明:
//声明要导出的函数
EDDY1_API void fnEddy1(LPCTSTR pszContent);

调用Dll(有两种方式,动态和静态,下面是静态调用)
新建一个Win32 Console Application,代码如下:

#include "stdafx.h"
#include "eddy1.h"
//指明连接到库
#pragma comment (lib,"eddy1")
int main(int argc, char* argv[])
{
 fnEddy1("我来自一个Dll!");
 return 0;
}

注意:运行此程序时需要dll文件和exe文件在同一目录。另外,编译前需要把dll工程中编译生成的eddy1.h和eddy1.lib文件copy到当前工程目录下。

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/133.html     欢迎订阅Eddy Blog

关于 VC  动态链接库  的相关文章

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言