`
haoliyouyo
  • 浏览: 26731 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

释放DLL 调用DLL

 
阅读更多

  HINSTANCE hDllInst; void CstopApp::CreateDll() { HANDLE f; if( (f=CreateFile( _T("./Skin.dll"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL)) != INVALID_HANDLE_VALUE ) { //MessageBox(NULL, _T("CREATE IT "), _T("got it "), MB_OK );///程序在这里可以成功创建 } else MessageBox(NULL, _T("皮肤文件加载失败!"), _T("not got it "), MB_OK ); LPVOID IoBuffer = (LPVOID)::LoadResource(NULL, FindResource(NULL,MAKEINTRESOURCE(IDR_MDLL1/*你Resource 的ID*/),_T("MDLL"))); if(IoBuffer==NULL) AfxMessageBox(_T("LoadResource error ")); DWORD dwResource = SizeofResource(NULL, FindResource(NULL,MAKEINTRESOURCE(IDR_MDLL1/*你Resource 的ID*/),_T("MDLL"))); DWORD BytesRead; WriteFile(f,IoBuffer,dwResource,&BytesRead,NULL); CloseHandle(f); Sleep(500); hDllInst = LoadLibrary(_T("Skin.DLL")); if(hDllInst) { typedef DWORD (WINAPI *Skin_AttachRes)(BYTE* pShe, int nSize, LPCTSTR strPwd, int nHue, int nSat, int nBri); Skin_AttachRes loadskin = NULL; // youFuntionNameAlias 函数别名 loadskin = (Skin_AttachRes)GetProcAddress(hDllInst,"Skin_Atta chRes"); // youFuntionName 在DLL中声明的函数名 if(loadskin) { HMODULE hModule=::GetModuleHandle(NULL);; if(NULL == hModule) AfxMessageBox(_T("no1")); HRSRC hRsrc = FindResource(hModule,MAKEINTRESOURCE(IDR_SKIN1),_T ("SKIN")); if(NULL == hRsrc) AfxMessageBox(_T("no2")); HGLOBAL hGol = LoadResource(hModule,hRsrc); BYTE* lpData=(BYTE*)LockResource(hGol); DWORD dwSize = SizeofResource(hModule,hRsrc); loadskin(lpData,dwSize,NULL,120,0,0); ::FreeLibrary(hModule); } } } void CstopApp::FreeDll() { if(hDllInst != NULL) { ::FreeLibrary(hDllInst); } }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics