HRSRC hResource = FindResource(NULL,MAKEINTRESOURCE(IDR_BDDLL),_T("DLL")));
DWORD dwSize = SizeofResource(NULL,hResource);
HGLOBAL hGlobal = LoadResource(NULL,hResource);
//获取资源文件在内存中的位置;
LPVOID vResourceAddress = LockResource(hGlobal);
HANDLE hFile=CreateFile(tPath,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if( INVALID_HANDLE_VALUE==hFile)
return;
DWORD lpNumberOfBytesWritten;
WriteFile(hFile,vResourceAddress,dwSize,&lpNumberOfBytesWritten,NULL);
CloseHandle(hFile);
//通过类型定义语句typedef来定义函数指针类型
Typedef BOOL (_stdcall *lpFileEncrypt)(LPCTSTR, LPCTSTR,LPCTSTR, LPCTSTR)
//函数声明
LpFileEncrypt FileEncrypt1;
//获取加密函数File Encrypt的函数指针
FileEncrypt1= (lpFileEncrypt)::GetProcAddress(hdll,"FileEncrypt");
//调用DLL中加密函数File Encrypt对文件加密,user-12345678为软件注册号
FileEncrypt1(加密源文件名,加密生成目标文件名,密码,"user-12345678");
//释放DLL模块
::AfxFreeLibrary(hdll);
DWORD dwSize = SizeofResource(NULL,hResource);
HGLOBAL hGlobal = LoadResource(NULL,hResource);
//获取资源文件在内存中的位置;
LPVOID vResourceAddress = LockResource(hGlobal);
HANDLE hFile=CreateFile(tPath,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if( INVALID_HANDLE_VALUE==hFile)
return;
DWORD lpNumberOfBytesWritten;
WriteFile(hFile,vResourceAddress,dwSize,&lpNumberOfBytesWritten,NULL);
CloseHandle(hFile);
Sleep(200);
1、隐式链接dll
其提供了Reg.h与Reg.lib两个隐式链接所必须的文件,所以可以采用此种方式。
1)在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入Reg.lib。
2)在VC中打开File View一页,选中Header files,单击鼠标右键,然后选中"Add Files to Folder"菜单,在弹出的文件对话框中选中要加入Reg.h,
然后再工程相应的头文件中加入#include "Reg.h".在其中给出了DLL中定义的函数原型及声明
2 显式调用的老路
//装载 如果只提供Reg.dll一个文件,那么须用此种方式。
//通过类型定义语句typedef来定义函数指针类型
Typedef BOOL (_stdcall *lpFileEncrypt)(LPCTSTR, LPCTSTR,LPCTSTR, LPCTSTR)
//函数声明
LpFileEncrypt FileEncrypt1;
//获取加密函数File Encrypt的函数指针
FileEncrypt1= (lpFileEncrypt)::GetProcAddress(hdll,"FileEncrypt");
//调用DLL中加密函数File Encrypt对文件加密,user-12345678为软件注册号
FileEncrypt1(加密源文件名,加密生成目标文件名,密码,"user-12345678");
//释放DLL模块
::AfxFreeLibrary(hdll);