
编程
文章平均质量分 74
shang_cm
一个希望世界和平喜欢碎碎念的家伙。。。
喜欢技术细节的家伙
展开
-
关于如何使用c++中的try/catch捕获SEH异常并处理
两者区别:C++异常与SEH区别可参考《Windows核心编程第五版》第25章 25.2节(727页)下面取自原文:注意:C++异常和SEH异常不是同一个东西!!!C++使用try,catch作为关键字进行捕获异常(C++标准自己定义的异常)SEH是Windows操作系统自身使用并提供的一种捕获系统异常的方式,使用__try、__except、__finally、__leave作为关键字进行捕获异常(windows系统定义的异常)无法使用C++异常处理捕获SEH异常,同样SEH异常也无法捕原创 2020-12-24 06:02:10 · 2473 阅读 · 0 评论 -
win32实现文件追加
实现原理:打开两个文件,循环读取要追加的文件内容,然后写入到要被追加文件的末尾相关api:CreateFile、SetFilePointerEx、ReadFile、WriteFile微软官方示例:https://docs.microsoft.com/zh-cn/windows/win32/fileio/appending-one-file-to-another-file/*funn...原创 2020-02-09 20:28:20 · 654 阅读 · 0 评论 -
BAT脚本中主动获取管理员权限
直接上代码,也是直接Copy过来的@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin )...转载 2019-12-02 17:47:59 · 1656 阅读 · 0 评论 -
GetWindowText卡住问题分析与解决
GetWindowText卡住问题分析场景复现现象:现象分析原因:场景复现来看这段mfc小代码void CgetwindowtextShutdownDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadStaticEntryPoint, t...原创 2019-12-02 17:03:25 · 2129 阅读 · 0 评论 -
Windows 获取指定PID进程的程序位数
1. 需求背景在使用DLL注入时,进程需要获取目标进程的位数,来决定注入32位/64位的DLL2. 实现原理调用win32 APIIsWow64Process3. 代码如下#include <windows.h>#include <tchar.h>/** 作者: shang_cm* 时间: 2019-10-09* 函数功能: 获取指定PID进程的位...原创 2019-10-09 10:10:40 · 1058 阅读 · 0 评论 -
Windows下获取子进程标准输出
需求来源:项目上有用到需要获取ffmpeg的命令输出,进行解析,而后添加成进度条的形式表现出来因此写了个获取子进程输出的通用工具代码实现原理:创建可继承的匿名管道将其中的写管道,作为createprocss的参数传入,替换子进程的标准输出调用readfile从读管道进行循环读取内容代码如下:#include <windows.h>#include <tchar...原创 2019-08-27 10:54:57 · 2744 阅读 · 0 评论 -
Windows 获取当前系统所有共享目录及名称
1. 命令行方式net share命令2. Win32Api NetShareEnum方式MSDN链接: https://docs.microsoft.com/zh-cn/windows/desktop/api/lmshare/nf-lmshare-netshareenum#include <lm.h>#include <vector>#include...原创 2019-06-18 12:01:12 · 1361 阅读 · 0 评论 -
修改MFC程序任务栏右键信息
如图,修改任务栏右键弹出程序信息字样修改rc文件中VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS 0x1L#else FILEFLAGS 0x0L#endif FILEOS 0x40004L F...原创 2019-03-07 19:58:24 · 1364 阅读 · 0 评论 -
一个通过深度优先方式遍历文件夹(包括子文件夹)的小算法
#include <windows.h>#include <tchar.h>#include <stack>using namespace std;//定义回调函数typedef VOID(* FPTENUMCALLBACK)(LPCTSTR szFullPath, VOID *ptUser);BOOL EnumDirectory(LPCTST...原创 2019-01-26 10:52:42 · 980 阅读 · 0 评论 -
Windows下的字符编码转换
简述各个编码概念ANSI:多种编码方式的集合,ANSI并不是一种真正的编码(规定了字符和二进制字节之间的转换关系)Windows操作系统下,文件保存默认使用ANSI编码在Windows操作系统下,不同的语言对应于ANSI中的不同编码如果当前操作系统语言为中文,则ANSI对应于GB2312/GBK编码;如果当前操作系统语言为韩文,则ANSI对应于Shift_JIS编码如果当前操作系统...原创 2019-01-05 16:39:25 · 2134 阅读 · 0 评论 -
c++编码规范(待续)
客户端编码规范变量的命名举例命名遵循原则注释文件注释函数注释注释代码函数的约定函数的定义变量的命名变量名称 = 作用域+类型+含义作用域命名全局变量g_类成员变量m_静态变量s_进程共享全局变量gg_局部变量无类型命名指针p函数fn无效v句柄h长整型l布尔b浮点...原创 2018-11-20 15:24:13 · 184 阅读 · 0 评论 -
vc统计文件夹大小(非递归)
做项目的遇到一个需要获取指定的文件夹大小的需求,网上找了一通似乎很多都是递归的,因为项目的需要文件夹大小可能很大,遂自己写了一个,感觉还行用起来。 使用堆栈来保存文件夹的路径。 堆栈只要不为空,那就从栈顶弹出一个文件夹路径。 对这个文件夹,进行搜寻,如果这个文件夹下有文件夹,那就将子文件夹路径压入栈顶,如果有文件,那就获取文件大小并累加到size中 直到堆栈为空代表都遍历完毕,返回size...原创 2018-04-02 19:22:13 · 592 阅读 · 1 评论 -
libcurl中CURLOPT_WRITEFUNCTION设置回调函数
文档:Let’s assume for a while that you want to receive data as the URL identifies a remote resource you want to get here. Since you write a sort of application that needs this transfer, I assume that原创 2017-09-11 21:43:13 · 46717 阅读 · 3 评论 -
libcurl使用流程
首先几个关键的函数:curl_global_init(); //全局初始化curl_easy_init(); //初始化一个easy handlecurl_easy_setopt(); //给easy handle设置参数curl_easy_perform(); //执行easy handle,阻塞式的curl_easy_cleanup(); //销原创 2017-09-12 11:29:57 · 1216 阅读 · 0 评论 -
linux下c语言udp连接实例
//// Created by 冰糖葫芦的夏天 on 16-7-15.// server_udp.c#include <sys/socket.h>#include <arpa/inet.h>#include <stdio.h>#include <memory.h>#define LISTENPORT 12345 //定义监听端口号#define LISTENIP "127.0.0原创 2016-07-15 22:55:09 · 1103 阅读 · 0 评论 -
Linux下cmake简易教程
0. CMake介绍:CMake是一个跨平台的构建系统生成工具。它使用平台无关的CMake清单文件CMakeLists.txt,指定工程的构建过程;源码树的每个路径下都有这个文件。CMake产生一个适用于具体平台的构建系统,用户使用这个系统构建自己的工程。一个工程或项目作管理时,咱们在Linux/unix或ELinux下采用Makefile,CodeBlocks,KDevelop,转载 2016-07-19 20:14:32 · 2119 阅读 · 0 评论