c++
RuningPigNO1
c++程序开发,Linux系统开发
展开
-
WIN10安装vc++6.0及打开文件闪退
https://www.jianshu.com/p/6a3fe8e549f4安装包位置:https://download.csdn.net/download/github_37567324/21118912原创 2021-08-17 18:00:35 · 1333 阅读 · 0 评论 -
不同版本的FFmpeg和x264下载地址
在此记录一下:ffmpeg各个版本下载地址x264各个版本下载地址原创 2020-09-24 15:49:01 · 950 阅读 · 0 评论 -
c/c++在服务中获取当前路径
windwos下,想要获取当前工作路径是一件非常简单的事情,但是如果在服务程序中想要获取当前exe所在的工作路径,那么就需要特别处理一下了,下面是我常用的代码,用来获取服务所作的工作目录:void GetAbsoluteDirectory(char *cTopSkyFileName){ int nLen = 0; int i = 0; GetModuleFileName(NULL, ...原创 2020-04-21 14:15:00 · 451 阅读 · 0 评论 -
windows 服务进程中调用UI进程
概述:Windows 服务程序的权限一般只是SYSTEM权限,而UI进程则需要Administrator权限才能正常显示,因此服务进程需要调用UI进程则需要进行提权处理.可使用CreateProcessAsUser 方法创建指定权限的应用程序。提权则需要获取对应权限令牌,一般explorer.exe进程的权限是Administrator,因此我们可以通过 explorer....转载 2020-04-21 10:59:56 · 839 阅读 · 0 评论 -
windows下vs如何将一个控制台程序改成服务(借助NTService类实现)
首先看一下所需要的文件,文件下载可通过我的资源进行下载。总共有7个文件如下图:接下来咱们一起来实际操作一番:添加文件到你的工程中,如下:将你自己原来控制台的函数入口替换成int inter_main(),如下:在myservice.cpp中修改你的服务名称,为你的服务起一个响亮的名字,这里我用的是TestService注意:如果你的源代码使用.cpp写的,那么就...原创 2020-04-16 17:35:59 · 1407 阅读 · 11 评论 -
将视频文件的每一帧都拆分成一个独立的文件(提取文件中的所有关键帧)
将某一个视频文件的每一帧都拆分出来保存成一个独立的文件,如果需要修改I帧,则可以通过FFmpeg修改文件的GOP大小,命令行如下:ffmpeg -i video.mp4 -g 10 gop10.mp4再提取之前需要先做一件事,那就是需要将视频文件改为ES流:ffmpeg -i gop10.mp4 -vcodec copy -an -f rawvideo -vbsf h264_mp4...原创 2020-04-09 11:58:16 · 1500 阅读 · 1 评论 -
mfc 获取网卡名字
void CGetSysInfo::GetInterFaceName(CString &InterfaceName,int pNum){ POSITION pos = Interfaces.FindIndex(pNum); if(pos==NULL) return ; InterfaceName = Interfaces.GetAt(pos); pos = ...原创 2018-04-13 11:03:33 · 1198 阅读 · 1 评论 -
mfc 获取网卡数目
int CGetSysInfo::GetInterFaceCount(){ try { #define DEFAULT_BUFFER_SIZE 40960L unsigned char *data = (unsigned char*)malloc(DEFAULT_BUFFER_SIZE); DWORD type; DWORD size = DEFAULT_B...原创 2018-04-13 11:01:59 · 737 阅读 · 0 评论 -
mfc 判断是否为win10操作系统
BOOL CGetSysInfo::IsFileVersionWindows10OrGreater() { DWORD dwVerInfoSize = GetFileVersionInfoSizeW(L"kernel32.dll", NULL); if (0 != dwVerInfoSize) { LPWSTR pszBuffer = (LPWSTR)_alloca(...原创 2018-04-13 10:59:48 · 1536 阅读 · 0 评论 -
mfc 判断是否为64位操作系统
BOOL CGetSysInfo::IsWow64(){ typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL bIsWow64 = FALSE; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetPr...原创 2018-04-13 10:58:14 · 1066 阅读 · 0 评论 -
mfc 获取操作系统版本,Server Pack版本,系统类型
void CGetSysInfo::GetOSVersion(CString &strOSVersion, CString &strServerVersion){ CString str; OSVERSIONINFOEX osvi; SYSTEM_INFO si; BOOL bOSVersionInfoEx; ZeroMemory(&si, sizeof(SY...原创 2018-04-13 10:57:10 · 1707 阅读 · 0 评论 -
mfc 获取物理内存和虚拟内存
void CGetSysInfo::GetMemoryInfo(CString &dwTotalPhys,CString &dwTotalVirtual){ // TODO: Add extra initialization here MEMORYSTATUS Mem; // get the memory status...原创 2018-04-13 11:05:41 · 918 阅读 · 0 评论 -
mfc 获取CPU名称、内核数目、主频
void CGetSysInfo::GetCpuInfo(CString &chProcessorName,CString &chProcessorType,DWORD &dwNum,DWORD &dwMaxClockSpeed){ CString strPath=_T("HARDWARE\\DESCRIPTION\\System\\CentralProcess...原创 2018-04-13 11:07:14 · 2944 阅读 · 0 评论 -
mfc 获取C盘信息
void CGetSysInfo::GetDiskInfo(DWORD &dwNum,CString chDriveInfo[]){ DWORD DiskCount = 0; //利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。 DWORD DiskInfo = GetLogicalDrives(); ...原创 2018-04-13 11:08:38 · 527 阅读 · 0 评论 -
mfc 获取显卡信息
void CGetSysInfo::GetDisplayCardInfo(DWORD &dwNum,CString chCardName[]){ HKEY keyServ; HKEY keyEnum; HKEY key; HKEY key2; LONG lResult;//LONG型变量-保存函数返回值 //查询"SYSTEM\\CurrentContr...原创 2018-04-13 11:09:39 · 802 阅读 · 0 评论 -
'wchar_t *' to 'const char *'
在Unicode下的CString转const char *的过程中会出现'wchar_t *' to 'const char *'转换失败的情况,查阅资料发现可以直接用另外一个API实现转换:CString m_strInterface(_T("ABCDEFG"));char szIfName[512]={0};size_t converted = 0;wcstombs_s(&co...原创 2018-05-11 11:54:41 · 2174 阅读 · 0 评论 -
适用于Windows下Unicode工程崩溃Dump生成
公司项目中有一个项目用到的是Unicode工程,在添加dump文件生成的时候原来的不能用了,因此鄙人在原来的基础上进行了一部分的修改,使其能够在Unicode工程下发挥作用#ifndef __BRExceptionFilter_H__#define __BRExceptionFilter_H__// Includes#include "imagehlp.h"typedef...原创 2018-04-28 14:54:57 · 244 阅读 · 0 评论 -
windows下C++视频加工处理,批量生成视频文件
最近公司项目测试阶段需要测试数据源,主要是将一个视频文件(标准H264)通过修改分辨率,添加水印,设置自定义GOP,设置profile格式为baseline,将视频中的B帧去除掉,只留下I帧和P帧,最后将文件中的ES流提取出来生成三千个不同的文件。我主要是将文件按照指定的IP区间添加不同的水印,文件名称按照IP区间来定义命令行:修改视屏分辨率:ffmpeg -i input -vf s...原创 2018-07-26 17:01:40 · 1665 阅读 · 0 评论 -
mfc获取计算机名和用户名
两个函数搞定GetComputerName();和GetUserName();函数原型:BOOL WINAPI GetComputerName( __out LPTSTR lpBuffer, __inout LPDWORD lpnSize);BOOL WINAPI GetUserName( __out LPTSTR lpBuffer, __inout LPDWOR...原创 2018-04-13 10:55:09 · 3030 阅读 · 0 评论 -
Windows下利判断远程桌面功能是否启用
本人想查找windows的api来实现判断,但是始终没有找到,因此采用通过注册表的方式来判断(若有哪位知道windows api判断的,烦请留言一下,谢谢),下面是我的代码:BOOL CGetSysInfo::GetLongRangeIsUsed(){ DWORD dwRet = 0; HKEY hKey; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T...原创 2018-04-18 13:31:26 · 1359 阅读 · 0 评论 -
C++利用time_t来实现一个周期性执行程序
void LASARRAY_UnstableTestAfter5Minutes(){ static time_t Old_time = 0; time_t nt; CString strSQL; time(&nt); nt -= Old_time; if((nt/60) >= 1){//此处的1表示间隔时间 time(&Old_time); time(&...原创 2017-05-18 16:43:58 · 2442 阅读 · 0 评论 -
C++调用Cimiss接口返回值
0Query Succeed查询成功无-1No data is retrieved查询成功,没有获取到数据(数据库中无数据)无-1001Missing UserID用户名缺失添加用户名-1002原创 2017-07-26 13:34:49 · 796 阅读 · 0 评论 -
c++基于gSoap开发编译异常
在程序中存在多个gSoap客户端代理类的话,比如我项目中用到的两个NMMAILGgzwSerSoapProxy.h和ZJFaxMangerHttpBindingProxy.h,其中第一个NMMAILGgzwSerSoapProxy.h类是后期添加上去,按照之前的,我还是把三个头文件和两个cpp文件拷贝到项目工程路径下,同时把GgzwSerSoap.nsmap也包含到项目中去,结果编译发现如下错误:原创 2017-09-04 16:11:07 · 491 阅读 · 0 评论 -
c++调用动态库失败解决办法
之前写好的程序今天早上过来发现在服务器上出错了,于是就各种查问题,整整一个早上外加下午两个小时都在查这个问题,最终被我找到了问题;在程序中我发现LoadLibrary()返回的句柄是空的,于是用GetLastError()看了一下,返回值是193,因此可以断定应该是动态库出问题了,所以就用Depends查看了一下程序中依赖的动态库,发现该动态库还缺少另外的一个动态库,导致程序在加载过程中出现了原创 2017-09-04 16:09:44 · 4071 阅读 · 0 评论 -
使用cJSON解析JSON字符串
解析JSON格式 还是在Linux下,使用C语言编程,先实现读文件的功能,然后开始JSON字符串的解析。我们还是一步步来,先从简单的开始,万丈高楼起于平地嘛。 1,下载源码; 可以从如下网站来下载:https://sourceforge.net/projects/cjson/ 。 2,包含cJSON的源码; 下载下来,解压后,从里面找到两个文件(cJSON.c、cJSO转载 2017-09-26 12:00:35 · 729 阅读 · 0 评论 -
c++程序崩溃生成dump文件确定错误位置方法
利用开源类生成dump文件,精确查找程序崩溃点原创 2017-09-19 16:38:04 · 4133 阅读 · 0 评论 -
windows配置FFmpeg注意要点
下载FFmpeg下载地址:https://ffmpeg.zeranoe.com/builds/ 下载的时候注意不论机子是X86还是X64的,下载FFmpeg最好下载32位的,应为如果下载的是64的,因为我的机子是X64的,所以当时就直接下载的64版本的,但是在配置vs环境的时候,各种报错,最后查询资料才发现是需要做一些修改以后才能用,所以我就直接下载的32的版本就没什么问题了。 基于FFmp原创 2017-09-29 15:09:19 · 675 阅读 · 0 评论 -
windows配置SDL出现无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
今天在vs环境下配置SDL的过程中,编译一直出现一个错:无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用找了半天的问题,最后才发现是工程中用到的SDL.dll和SDL.lib版本不一致导致的,换成相同版本就不会出现这个问题。 还有一种情况就是在添加lib的过程中需要把SDLmain.lib也添加到工程中,否则也会出现上面的那个错误。原创 2017-09-30 10:28:49 · 1544 阅读 · 0 评论 -
截取字符串封装函数
在项目开发过程中,经常会用到字符串分割,这里我封装了一个截取字符串的小函数,拿出来和大家共享;CString GetStrParam(CString sInfo, int iPos, CString sSplit)参数说明:CString sInfo:待切割的字符串,例如:CString sInfo = _T("983256531{^}@163{^}com")int iPos:需要截取字符串在源原创 2017-09-22 08:44:25 · 502 阅读 · 0 评论 -
c++创建多级目录
c++创建多级目录实现:BOOL CCommonFunctions::CreateDirectories(const TCHAR *strPathName,BOOL blFile){ CString pathName = strPathName; //不是以"\"结尾的目录则添加"\" if(pathName.Right(1) != _T("\\") && !blFile)原创 2017-09-22 08:48:22 · 843 阅读 · 0 评论 -
FTP文件上传/下载失败
在开发过程中难免遇到需要对FTP文件的上传和下载,在操作FTP的过程中,有几点需要注意:FTP连接方式 FTP连接分为主动方式和被动方式两种,在连接FTP的过程中,要注意需要连接的FTP的连接属性,一般默认都是被动模式,所以在连接的时候,一般两种方式都写上,以免出现不必要的问题。HINTERNET hC = InternetConnect(hInternet, m_cIP.c_原创 2017-10-16 15:31:53 · 7347 阅读 · 0 评论 -
利用Openssl解析pfx(pkcs#12)证书
首先说明一下.pfx格式证书和.p12格式证书是同一个东东通过openssl的命令行能够轻松的将pkcs#12格式的证书解析成pem后缀的证书文件,方便程序调用从pfx中获取CA证书openssl pkcs12 -in client.pfx -password pass:11111111 -nokeys -cacerts -out ca.pem 从pfx中获取客户端证书openssl pkcs1...原创 2018-04-10 16:50:24 · 7281 阅读 · 1 评论 -
unicode下CString转实std::string失败问题解决
在之前的公司项目中用到的编码方式都是用多字节的方式,并没有用到过Unicode,今天在从CString转到string的时候,按照原来多字节的方式std::string str = CString temp("aaa").GetBuffer(0);来转换,发现总是不行,查阅了资料,才发现Unicode下CString是宽字节,而string是窄字节,因此不能用以上的方法进行转换,具体解决方法如下:...原创 2018-03-28 10:37:32 · 960 阅读 · 0 评论 -
windows下通过注册表来获取计算机相关信息
在开发过程中遇到了不少需要获取计算机信息的需求,首先我们可以通过windows的api来完成一部分的需求,但是还有一部分并不能通过api来完成,那么通过注册表来获取是一个不错的办法下面给出的是头文件相关信息:#pragma once#include <vector>struct SoftInfo { //软件名 CString m_strSoftName; //软件版本号...原创 2018-04-17 09:41:26 · 979 阅读 · 0 评论 -
windows下SystemParametersInfo获取屏幕保护始终为TRUE解决办法
用微软的SystemParametersInfo方法请求SPI_GETSCREENSAVEACTIVE来获取屏幕保护程序是否开启,我们会发现当第一次程序启动(计算机屏保未开启的情况下)返回的确实是FALSE,也就是说返回的状态没问题,当你将计算机屏幕保护打开在测试,发现返回的是TRUE,(是不是很开心^_^,不要激动),此时 如果你在将屏幕保护关闭以后,在此启动程序,发现返回的是TRUE(此时内心...原创 2018-04-17 17:21:40 · 1719 阅读 · 1 评论 -
c++httpPost实现
前些天工作中用到了调用Java的http接口,因此在网上查找了一些资料,实现了一个简单的httppost方法,用到的是libcurl库,资源可以在我的资源中下载,具体代码如下:#include #include #include #include "./libcurl/include/curl.h"#include "./libcurl/include/easy.h"...原创 2017-05-22 19:33:01 · 3318 阅读 · 0 评论