`
danke54
  • 浏览: 20476 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

VC集成dll到资源中(也可是其他文件)

    博客分类:
  • VC
VC 
阅读更多
g_MakeResourceFromExe用于释放资源DLL与SYS中ID为IDR_DLL1的WinIo32.dll
和ID为IDR_SYS1的WinIo32.sys.ReleaseExe用于将文件属性置为只读,隐藏,归档
主要代码如下:
bool CtestDlg::g_MakeResourceFromExe(CString szExPathName, CString szResName, int nResID)
{
	HRSRC hSrc = FindResource(NULL,MAKEINTRESOURCE(nResID),szResName);
	if(hSrc == NULL) return false;
	HGLOBAL hGlobal = LoadResource(NULL,hSrc);
	if(hGlobal == NULL) return false;
	LPVOID lp = LockResource(hGlobal);
	DWORD dwSize = SizeofResource(NULL,hSrc);
	CFile file;
	if(file.Open(szExPathName,CFile::modeCreate|CFile::modeWrite))
	{
		file.Write(lp,dwSize);
		file.Close();
	}
	FreeResource(hGlobal);
	return true;
}

void CtestDlg::ReleaseDLL()
{//从资源DLL中自释放WinIo32.dll自定义资源类型,ID=IDR_DLL1
	CString rc_dll = _T("WinIo32.dll");
	CString rc_sys = _T("WinIo32.sys");
	CFileFind find;
	if(!find.FindFile(rc_dll))
	{
		g_MakeResourceFromExe(rc_dll,_T("DLL"),IDR_DLL1);
		//改变WinIo32.dll的属性:只读,隐藏,归档
		DWORD dwAttributes = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_READONLY;
		SetFileAttributes(rc_dll,dwAttributes);  
	}

	if(!find.FindFile(rc_sys))
	{
		g_MakeResourceFromExe(rc_sys,_T("SYS"),IDR_SYS1);
		//改变WinIo32.dll的属性:只读,隐藏,归档
		DWORD dwAttributes = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_READONLY;
		SetFileAttributes(rc_sys,dwAttributes);  
	}
	find.Close();
}
代码中再动态加载WinIo32.dll.并且找到dll中的方法进行调用.主要方法如下:
typedef int (_stdcall *InitializeWinIoFun)();
InitializeWinIoFun InitializeWinIo = 0;

typedef int (_stdcall *GetPortValFun)(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
//typedef int (__cdecl *MYPROC)(short int* , short int* , short );  
GetPortValFun GetPortVal = 0;

typedef int (_stdcall *ShutdownWinIoFun)();
ShutdownWinIoFun ShutdownWinIo = 0;

HMODULE hDllInst = ::LoadLibrary(_T("WinIo32.dll"));

if (hDllInst)
	{
		InitializeWinIo = (InitializeWinIoFun)GetProcAddress(hDllInst, "InitializeWinIo");
		GetPortVal = (GetPortValFun)GetProcAddress(hDllInst, "GetPortVal");
		ShutdownWinIo = (ShutdownWinIoFun)GetProcAddress(hDllInst, "ShutdownWinIo");
	}
 
	int   bResult   =   InitializeWinIo(); 

 

分享到:
评论

相关推荐

    Microsoft Visual C++(VC运行库)运行库

    VC运行库不仅包括“.dll文件”,还可能包括其他类型的资源,如静态链接库(.lib文件)和其他相关元数据。开发人员在构建和使用VC运行库时,需要根据程序的具体需求选择合适的版本,并确保它们与程序的其他组件正确...

    vc++ 应用源码包_6

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    VC编程助手

    中文名: VC助手 10.6.1842英文名: Visual Assist X 10.6.1842资源格式: 压缩包版本: 10.6.1842发行时间: 2011年02月03日制作发行: ...VA_X_Setup1842.zip压缩安装后,拷贝va_x.dll到安装目录覆盖同名文件即可破解.

    Whole.Tomato.Visual.Assist.X.10.7.1925.0 2012年12月14日 破解补丁 dll Cracked 最新破解版

     Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。  Visual Assist X是一款...

    vc++ 开发实例源码包

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_1

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_2

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_5

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_3

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    ExcellentCompare 0.2.1安装文件及源代码

    shell编程,集成到资源管理器右键菜单 可以比较值、公式、批注。 基于关键列比较和逐行比较 在 excel 窗口中画椭圆 文件拖动 工程文件关联 ============================== 配套的 ocx/dll 说明 ============...

    易语言5.0正式版破解补丁(打开验证易文件,运行验证即可)

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被静态...

    Visual C++开发经验技巧宝典(第3章)

    0149 从其他文件中抓取资源 74 0150 生成自定义的关键字 74 0151 利用Visual C++修改可执行文件的图标 74 0152 如何使用源代码浏览工具 74 0153 在一个工作区中管理多个工程 75 0154 如何将控件分组 75 ...

    Whole.Tomato.Visual.Assist.X.10.7.1925.0 破解补丁 dll Cracked 最新破解版

     Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。  Visual Assist X是一款...

    Microsoft MFCTaskbar for c++示例

    有时人们说vc呢也指它的内部编译器,集成开发环境必须有一个编译器内核,要不有什么用,例如DevC++其中一个编译器内核就是gcc。 MFC除了是一个类库以外,还是一个框架,你应该试过,在vc++里新建一个MFC的工程,开发...

    文本语音朗读组件系统

    6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。...

    易语言5.0正式版破解补丁

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    锐浪报表Grid++Report5.3

    13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)...

    Grid++Report5.6报表开发工具

    13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)...

Global site tag (gtag.js) - Google Analytics