• Stars
    star
    459
  • Rank 95,377 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

C++基础辅助类库,比如异步进行-Thread,安全句柄-CHandle,资源守卫-Guard,XML解析-rapidxml,以及其他注册表、文件基础操作。用于更加高效、安全的进行C++开发。温馨提示:至少需要支持C++0x标准的编译器。

CPPHelper 是一个C++基础辅助类库,目的在于更加高效、安全的进行开发。


使用方法:
1:将CPPHelper复制到工程目录

比如D:\Visual Studio 2015\Projects\MySln\CPPHelper (MySln是我需要编译的工程)

2:在 VC++目录 -- 包含路径 添加 $(SolutionDir)CPPHelper\
3:在 VC++目录 -- 库目录   添加 $(SolutionDir)CPPHelper\$(PlatformShortName)\

4:在stdafx.h 中添加 #include <BaseFunction.h>
5:在stdafx.cpp 中添加 #include <BaseFunction.cpp>

至此,基础类库已经可以正常使用,另外其他Thread等类,请自行在使用时 include


温馨提示:编译器必须支持C++ 0X,并且编码需要设置宽字符!!!!!!




目前该类库有以下几个功能:

///////////////////////////////////////////////rapidxml//////////////////////////////////////////////////////
这是我修改后的一个rapidxml库,所有规范与原版的rapidxml一样,但是此版本完整支持UTF8以及UTF16。并且在执行print时提供了更佳性能。

rapidxml::XMLDocument Document;

//从一个文件路径打开xml,自动进行编码判断
XMLCreateXMLDocumentByFile(L"D:\test.xml",&Document);


//从二进制数据打开XML,自动进行编码判断
XMLCreateXMLDocumentByData(pBinary,cbBinary,&Document);


//从字符串打开XML
XMLCreateXMLDocumentByString(L"<Root></Root>",&Document)


//打开Root/Files节点
auto pFiles= XMLOpenNote(&Document,L"Root/Files");

<Root>
	<Files/>
</Root>

……




///////////////////////////////////////////MsIsoReader////////////////////////////////////////////////////////
这是一个微软的一个ISO读取库,原本它是C#版,我将其移植到了C++上,一般用用过的去。Dism++的直接释放ISO功能也是此库支持









////////////////////////////////////////////Thread类////////////////////////////////////////////////////////

Thread:
异步类,用于执行异步任务。
头文件:Thread.h
使用方法:

Thread([]()
{
	/*你需要异步执行的命令,Thread类自动会完成句柄释放。
	这里是一个Lambda表达式,你可以参考Lambda表达式的使用。
	*/
});



Task:
异步函数,用于执行异步任务,但是其线程创建于线程池,减少程序创建销毁线程的开销。
头文件:Thread.h
使用方法:

Task([]()
{
	/*你需要异步执行的命令。
	这里是一个Lambda表达式,你可以参考Lambda表达式的使用。
	*/
});



ThreadPool:
制定线程池,用于执行大批量任务,合适计算密集型并行计算。
头文件:Thread.h
使用方法:


ThreadPool WorkPool;

//最大十个线程并发,默认值500(微软规定的)
WorkPool.SetThreadMaximum(10);

int Datas[100];


WorkPool.For(Data,100,[](int& Data)
{
	//10线程并发输出Datas中的内容
	wprinf(L"%d\r\n",Data);
});






////////////////////////////////////////////hanlde智能句柄////////////////////////////////////////////////

hanlde:
智能句柄,用于自动关闭各种句柄。
头文件:handle.h
使用方法:

CHKEY - 注册表智能句柄

//自动初始化为NULL
CHKEY Test;

RegOpenKey(HKEY_LOCAL_MACHINE,L"SOFTWARE",&Test);

//你无需特意关闭Test,Test在析构时自动关闭HKEY


CHFile - 文件智能句柄

//自动初始化为INVALID_HANDLE_VALUE
CHFile Test;

Test=CreateFile(……);

//你无需特意关闭Test,Test在析构时自动关闭HANDLE

等等……



/////////////////////////////////////////////////资源守卫///////////////////////////////////////////////
头文件:Guard.h

int Test()
{
	auto pData=new int;

	//RunOnExit中的代码在退出时执行
	RunOnExit([pData]()
	{
		//Test函数结束时,将自动执行此代码
		delete pData;
	});



	//RunOnCrash中的会在程序崩溃时执行
	RunOnCrash([]()
	{
		MessageBox(NULL,L"我的程序崩溃啦",L"Sorry",0);
	});

	return 0;
}




//////////////////////////////////////////////其他/////////////////////////////////////////
1:ComHelper用于辅助编写com接口
2:CabinetHelper用于打开以及创建cab文件
3:DiskHelper用于修改磁盘MBR
4:FileHelper提供基础文件操作,比如文件删除、属性修改、大小计算
5:IniHelper,提供基础的ini读写
6:RegHelper,提供基础的注册表操作
7:StringHelper,提供基础的字符串操作
8:VirtDiskHelper,此库已经弃用,没啥功能
9:WinInetHelper,提供网络下载
10:WinnlsHelper,没什么功能,可以无视
11:StreamEx,没什么功能,通用层数据流交换使用,可以无视

More Repositories

1

Dism-Multi-language

Dism++ Multi-language Support & BUG Report
HTML
14,965
star
2

VC-LTL

Shared to msvcrt.dll and optimize the C/C++ application file size.
C++
1,049
star
3

YY-Thunks

Fix DecodePointer, EncodePointer,RegDeleteKeyEx etc. APIs not found in Windows XP RTM.
C++
533
star
4

VC-LTL5

Shared to msvcrt.dll or ucrtbase.dll and optimize the C/C++ application file size.
C++
476
star
5

MINT

Contains the definitions for the Windows Internal UserMode API from ntdll.dll, samlib.dll and winsta.dll.
C++
357
star
6

YY-Guard

Mitigating DLL preloading attacks.
C++
62
star
7

libkcrt

Provide an easy way to use C Run-time Library from Windows Kernel exported from ntdll.dll in your user-mode applications
C
42
star
8

DismPlusPlus_PluginDevDoc

Dism++插件文档
41
star
9

MSBuildCppCrossToolset

基于MSBuild的C++跨平台工具集,让Linux、MacOS等也支持编译vcxproj。
C#
32
star
10

DISMSDK

Contains the definitions for using Deployment Image Servicing and Management (DISM) from DismApi.dll and DismCore.dll
C
25
star
11

MegaUI

轻量、灵活、跨平台C++ UI库。
22
star
12

woflib

An open source library for operating the Windows Overlay Filter driver.
C
20
star
13

Chuyu-Team.github.io

[WIP] Chuyu Team official website based on GitHub Pages
12
star
14

vc-ltl-samples

Usage samples for the VC-LTL.
Batchfile
12
star
15

covscript-bridge

Covariant Script Experimental Support Plugin, the offical source code sample of Dism++ plugin development.
C++
9
star
16

M2MShim

The static library of Windows API shim for ntdll.dll.
6
star
17

YY.CRT.Handler.Thunks

自动将_invalid_parameter、_purecall转换到SEH异常而不是fastfail退出,方便收集dmp。
C++
6
star
18

LibMaker

初雨团队内部的lib制作工具,仅为内部需求服务,因此不接受任何功能性的PR!
C++
4
star
19

vc-ltl-docs

Documents for the VC-LTL
2
star