自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不定期更新的博客

记录自己的小代码

  • 博客(34)
  • 收藏
  • 关注

原创 使用_NT_SYMBOL_PATH在启动VS前设置PDB路径

由于公司相关项目的开发管理方式,导致公司会存在多个分支的版本正在开发/测试中。在这样的背景下,我的日常工作中有时会出现存在某个分支的项目软件的某个功能出现了问题需要我去排查解决,而我当前并不在该分支上开发。于是只能安装出问题的包,然后使用VS的附加进程去DEBUG调试出现问题的代码。在附加进程的时候,还需要设置PDB的路径,而且有可能要设置多个路径。但是,每次都要这样设置PDB的路径,是比较容易打断DEBUG的思路的。

2024-02-04 22:19:20 482

原创 处理进程在SYSTEM权限下无法读取HKEY_CURRENT_USER注册表的问题

最近在工作中碰到了,某个进程在SYSTEM权限下无法读取到HKEY_CURRENT_USER注册表的问题。所以写一下文章记录下排查和处理的过程。

2024-01-17 23:10:18 900

原创 C++11写watchdog

最近被问到怎么用C++11写watchdog,考虑了一会儿,答对了思路,但是没能写出来。于是去翻了下chatgpt,看了几眼后自己尝试写了下,代码如下,权当存档。

2023-09-14 20:01:03 279

原创 Windows session0 问题

Windows session0 问题

2022-09-15 23:38:41 685 3

原创 函数调用惯例

函数调用惯例函数的调用者必须知道函数的调用惯例才能正确地调用函数常见的调用惯例有__cdecl__stdcall__fastcall__thiscall调用惯例之间的区别在于函数参数的入栈顺序和函数执行完毕后由谁来清理堆栈调用惯例参数入栈顺序堆栈清理方备注__cdecl从右到左的顺序入栈调用者由于是调用者清理栈,所以可以实现可变参数函数,是C/C++默认的调用惯例__stdcall从右到左的顺序入栈被调用者由于是被调用者清理栈,所以不

2022-03-07 22:34:31 429

原创 PowerShell 3.0 教程笔记

PowerShell 3.0 教程笔记Module_0_视频链接快速入门 PowerShell 3.0【MVA】中文字幕Module_1_克服对Shell的恐惧开始使用PowerShell前应该先配置好PowerShell(但是当前已经可以直接使用Windows Terminal了,不配置了)cmdlet的格式:动词-名词set-location:切换当前工作路径get-childitem:获取当前工作路径下的文件/目录列表clear-host:清空显示区alias

2021-12-11 12:55:17 851

原创 VCPKG资料记录

最近在学习VCPKG时,发现了一些资料,本文就是用来收集这些资料链接的。 国内gitee地址为:vcpkg: vcpkg国内镜像 (gitee.com) 官方博客:vcpkg_C++包管理器 - 博客园 vcpkg国内镜像使用方法:vcpkg国内镜像使用方法 - 知乎 (zhihu.com) 按照上面的资料,设置国内镜像后,安装boost,只花费了半个小时,简直爽飞了。之前下载一个包失败一个包的痛苦没了。...

2021-11-18 20:32:10 162

原创 弹出Windows10的虚拟键盘总结

由于公司的项目软件一直都在Windows的平板电脑上运行,所以当用户点击了输入框之类的控件时,就要在代码中主动让Windows的虚拟键盘启动并显示出来。这个功能分了几步的开发过程,现在来总结一下。项目使用的界面库都是SoUI2。一、通过在WM_LBUTTONUP中判断是否应该使用shellexecute启动虚拟键盘一开始的解决方法是在窗体的WM_LBUTTONUP中处理,就是查看是否是需要输入的控件获取到当前焦点,是的话就用shellexecute启动虚拟键盘,然后再把WM_LBUTTONUP交回给窗

2020-07-26 16:15:34 1454 2

原创 关于SoUI界面库处理从WM_LBUTTONUP到按钮事件的消息路由过程分析

SoUI界面库的介绍和使用方法可以查看启程软件的博客园:https://www.cnblogs.com/setoutsoft/。这里默认大家都对SoUI有一定的了解了。现在SoUI界面库已经发展到SoUI3版本了,但是由于本人一直在使用的是SoUI2版本,所以今天分析的也是SoUI2版本的代码。分析流程首先我们创建一个SoUI的测试项目,在SoUI项目的创建向导中全部选择默认即可,然后在CMainDlg::OnClose()中打上断点,如下所示然后运行程序,点击右上角的关闭按钮,查看VS中的调用堆

2020-07-17 11:10:08 1470

原创 编写WinSock代码时不推荐使用inet_addr函数的原因

编写WinSock代码时,相信大家一般都会使用inet_addr函数来将点分十进制字符串转换为sin_addr.S_un.S_addr,如下所示 SOCKADDR_IN sockaddr; sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");但是,由于inet_addr函数没有错误判断机制,所以导致传入错误的点分十进制字符串时,inet_addr函数还是会执行成功,然后会出现让人哭笑不得的现象,如下所示 SOCKADDR_IN sockad

2020-06-19 15:05:19 1078

原创 《Git 教程》-- 廖雪峰 笔记

《Git 教程》-- 廖雪峰 笔记设置用户名和邮箱git config --global user.name "Your Name"git config --global user.email "[email protected]"注意:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git版本库都会使用这个配置,当然也可以对某个版本库指定不同的用户名和Email地址创建空的版本库(empty Git repository)git init添加文

2020-06-15 17:38:02 242

原创 如何计算结构体对象的大小

如何计算结构体对象的大小今天在处理结构体对象的时候,发现自己一直以为的结构体对象的内存对齐只会在最后对齐是错误的理解,于是在知乎中看了这篇回答后,把这种错误理解纠正了过来,现在就来写个博客记录一下。在C/C++中,结构体对象的大小不一定等于成员变量所占的内存空间之和,这是由于内存对齐的存在,在计算结构体对象的大小时需要遵循以下三个原则所导致的: 1. 结构体变量的起始地址能够被其最宽的成员大小整除 2. 结构体每个成员相对于起始地址的偏移能够被其自身大小整除,如果不能则在前一个成员后面补充字节 3

2020-06-11 22:11:51 545

原创 如何通过改写进程地址空间的数据来达到插入汇编的功能

今天在找如何在Windows上编译breakpad的答案时,看到了这个博客:https://www.cnblogs.com/cswuyg/p/3207576.html。在这个博客的代码中学到了点东西,现在就来记录一下。talk is cheapshowmethecode.先上我学到东西的代码好了,这个代码是我从上面的博客上精简下来的测试代码,如下#include <Windows.h>#include <iostream>LPTOP_LEVEL_EXCEPT...

2020-05-13 15:55:50 981

原创 关于Windows的CONDITION_VARIABLE和C++11的condition_variable编写代码对比

Windows的CONDITION_VARIABLE使用CRITICAL_SECTION时,代码如下#include <Windows.h>#include <iostream>#include <thread>#include <vector>int Test(CONDITION_VARIABLE &cv, CRITICAL...

2020-04-24 11:32:20 574

原创 关于Windows程序崩溃(Crash)以及生成dump文件的探究

文章目录关于Windows程序崩溃(Crash)以及生成dump文件的探究什么是崩溃(Crash),崩溃(Crash)的现象崩溃(Crash)的原因是什么如何消除崩溃时出现的异常信息对话框如何捕获崩溃(Crash)时的异常,生成dump文件来帮助寻找异常总结关于Windows程序崩溃(Crash)以及生成dump文件的探究什么是崩溃(Crash),崩溃(Crash)的现象什么是崩溃?崩溃是...

2020-04-03 10:39:57 9299 5

原创 关于SetTimer函数的总结

关于SetTimer函数的总结在使用 SOUI 编写Windows程序时,似乎曾经看到过 SOUI 中限制了 SetTimer 函数能启动的定时器的个数,于是今天就去 MSDN 看了下Windows本身是否也限制了单个程序能启动的定时器个数,于是就有了这篇总结。先下结论好了:微软在 MSDN 上并没有写明单个程序能启动的定时器的个数。但是,还是学到了不少关于使用 SetTimer 函数时之前...

2020-04-02 20:41:11 1978

原创 libuv在windows的简单使用

libuv的官网:http://libuv.org/。关于libuv的介绍网上都有,大家可以去搜一下。而如何在windows上安装libuv,我这边是使用vcpkg安装的,学习的时候极力推荐使用这种方式安装,关于vcpkg的使用可以参考这篇博客:https://blog.csdn.net/cjmqas/article/details/79282847。libuv底层在windows使用...

2020-04-02 14:32:08 2997

原创 关于RegisterWaitForSingleObject函数的使用总结

在寻找前一篇文章中google breakpad的用法时,看到了关于windows函数RegisterWaitForSingleObject的用法,感觉还不错,而且在百度上面直接搜索RegisterWaitForSingleObject,出来的信息没怎么找到C++的,于是现在就来总结一下(水个博客)。RegisterWaitForSingleObject的详细介绍在https://docs.mic...

2020-03-17 10:08:50 2427

原创 使用vcpkg快速安装/MT版本的google breakpad的过程总结

关于google breakpad请查看:https://www.cnblogs.com/cswuyg/p/3286244.html、https://www.cnblogs.com/lancidie/p/3145504.html、https://www.21ic.com/tougao/article/24170.html、http://www.360doc.com/content/14/0714/...

2020-03-16 16:16:53 760

原创 C++使用libcurl写一个简单的爬虫

前几天学习了libcurl的应用(注:libcurl的主页:https://curl.haxx.se/libcurl/),然后我就想,能不能用libcurl来实现一个简单的爬虫程序呢?爬虫的话感觉流程就是访问网页得到网页的源代码,在网页的源代码中筛选出想要的数据。这些libcurl都能够实现,于是我就写了下面的简单代码来测试(注:下面的代码于visual studio 2017 community...

2019-11-19 16:15:53 661

原创 关于WM_COPYDATA的使用总结

windows进程间通信的方法有很多,详细请查看:https://www.cnblogs.com/findumars/p/6329593.html。本人最近在项目中使用了WM_COPYDATA来作为进程间通信的方式,于是就有了这篇总结博客。首先,关于WM_COPYDATA的介绍可以查看:https://docs.microsoft.com/zh-cn/windows/win32/datax...

2019-11-05 14:32:05 11481 3

原创 优化C++ utf8,gbk,unicode编码间的转换函数

好久没写博客了,不是太忙,是太懒了。。。最近都在重构公司项目上的代码,然后就发现有部分函数的运行方式可以优化。这些函数的运行的运行方式都是先new出一堆内存,使用,最后delete掉。我就想,可不可以通过静态局部变量来重复使用已经new了的动态内存,以达到优化代码的运行的目的?然后我就用visual studio 2017进行了测试,下面是我的测试代码:#include <rand...

2019-11-05 11:42:07 467

原创 关于“程序闪退,没有生成DUMP文件”的一点总结

今早一回到公司,测试的同事就反映,昨晚程序运行一段时间后闪退了。。。。闪退???额,好吧,幸好我有加写DUMP的代码,示例如下:LONG WINAPI UnhandledExceptionFunction(_EXCEPTION_POINTERS* pExceptionInfo){ SYSTEMTIME st; GetLocalTime(&st); CStr...

2019-07-02 10:42:21 8975 8

原创 用于搜索的C++类--出自《编程珠玑》第二版的附录E

今天记录的是《编程珠玑》第二版的附录E代码,本人经过完善之后,聊以自娱,记录一下。代码在VS2017上编译通过。#include <set>#include <random>#include <iostream>class CIntSetSTL{public: CIntSetSTL(int max_elements, int max_v...

2019-06-28 10:45:31 117

转载 代码调优法则

《编程珠玑》第二版快看完了,发现附录D作者记录了一些代码调优法则,本人总结了一下,发出来给大家分享分享,顺便自己也做个笔记。(注:这篇文章是用哪个markdown写的,第一次用markdown发表文件,有点小激动。)代码调优法则空间换时间法则修改数据结构。为了减少数据上的常见运算所需要的时间,我们通常可以在数据结构中增加额外的信息,或者修改数据结构中的信息使之更易访问。例如:std::v...

2019-06-27 14:47:26 771

原创 CPP使用命令行解压7z文件

在项目中如果遇到7z文件时,可以使用命令行的方式解压处理。首先,7z命令行的使用可以参考这篇文章:https://www.cnblogs.com/Frank99/p/5951177.html。然后我们可以在代码中使用ShellExecuteEx来调用7z命令行解压文件,示例代码如下: SHELLEXECUTEINFO ShExecInfo; ShExec...

2019-06-06 09:54:47 1215

原创 visual studio 2017使用libevent的准备步骤

本人使用的visual studio 2017为community版本,libevent为github上pull下来的最新版本,链接如下:https://github.com/libevent/libevent。步骤一,编译libevent库在开始菜单--->所有程序处打开VS 2017的开发人员命令提示符程序,如下图所示使用cmd命令定位到libevent的目录,输入 ...

2019-03-25 16:11:14 2477

原创 关于C++使用位域进行数据排序的总结

今天看了《编程珠玑》第二版的第一章,感觉使用位域进行数据排序挺有意思的,于是用C++写了一下简单的位域排序,现在来写写总结。首先这篇文章的主题是简单的位域排序,也就是说需要满足以下的条件:1.需要排序的数据集中不存在重复的数据;2.对排序程序所使用的内存没有限制。条件限制好了,然后就可以来写代码了,下面的代码均在VS2017上编写,电脑配置为i5-6200u + 8G ddr3 1...

2019-01-08 17:11:47 264

原创 关于CnComm的一点总结

CnComm是国人llbird所编写的一个串口通信开源库,详细介绍请查看:https://blog.csdn.net/wujian53/article/category/336981,最新的讨论博客请查看:http://www.cppblog.com/llbird/archive/2009/05/15/CnComm.html,最新的版本为1.51(事实上已多年没更新的说。。)。(PS:月更博客...

2018-11-30 17:12:34 4129

原创 关于VC6 MFC使用Gdiplus实现自绘按钮的总结

步骤1:简易教程(更换对话框的背景)及Gdiplus下载地址可查看这个博客https://blog.csdn.net/misads/article/details/78619735。步骤2:使用Gdiplus实现自绘按钮可参考这个博客https://blog.csdn.net/wyansai/article/details/50971959。首先感谢上面两位博主的分享,那么我写这个博客是干...

2018-10-29 17:24:56 671

原创 在用sprintf、sprintf_s的过程中遇到的问题

今天在用sprintf和sprintf_s的过程中遇到了问题,想了挺久才解决的,现在就来记录一下。先上使用sprintf时出现错误的代码#include &lt;new&gt;#include &lt;string&gt;int main(){ std::string tmp = "ABC"; char *p = new char[tmp.size()]();...

2018-09-25 17:00:58 7962

原创 如何用pugixml库生成xml文件

    pugixml是一个开源的xml解析库,只有三个文件(pugiconfig.hpp、pugixml.hpp、pugixml.cpp),速度快,支持xpath。。。好吧,我懒得介绍了=_=,网上介绍pugixml的地方一大堆,读者们去搜一下就清楚了。    pugixml的github地址如下:https://github.com/zeux/pugixml    那么怎么用pugixml...

2018-07-19 09:14:18 1803 1

原创 C++ UTF-8,wstring,string之间的转换

    最近在工作中遇到了需要处理上述三种类型字符的转换,在网上找了一堆函数代码,都感觉不太对劲,唔~~并不是说不好,只是不对我的胃口,然后自己参照网上的获取到的代码,修改了一下(顺便备份一下以后可能会用到) ,代码如下std::wstring Utf8ToUnicode(const std::string &amp;strUTF8){ int len = MultiByteToW...

2018-06-08 14:00:43 7709

原创 hex转bin文件

最近工作中遇到了需要把hex文件转换为bin文件的需求,于是写了程序实现转换,至于hex文件解析什么的网上都有,就不说了,直接贴代码,流程是通过用结构体解析hex文件的每一行,然后根据地址去组装数据#include &lt;string&gt;#include &lt;vector&gt;#include &lt;map&gt;//hex文件解析的结构体struct SHexFil...

2018-05-03 09:23:03 4174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除