工作随笔篇
老狼主
工作中展现自我,学习中完善自我,生活中乐活自我!
展开
-
QT 给程序添加快捷键
/方式二。原创 2023-01-15 11:10:21 · 656 阅读 · 0 评论 -
CFileDialog 多文件选择注意事项
当选择文件数量比较多的时候,发现CFileDialog返回文件名并不完整,翻阅MSDN发现文件名长度是有限制的。原创 2022-12-11 15:00:40 · 733 阅读 · 0 评论 -
CTreeCtrl 递归遍历节点
根据节点关联数据值,采用递归算法查找指定节点。原创 2022-12-11 14:54:18 · 354 阅读 · 0 评论 -
VS 关于打开程序时不是有效的Win32应用程序
程序本身是动态链接库,因为接口调用失败,于是改为控制台验证接口的正确性,无赖编译运行提示“无法启动程序......不是有效的Win32应用程序”。鉴于网上修改属性:配置属性-》常规-》配置类型:应用程序(.exe),配置属性-》链接器-》系统-》子系统:控制台(/SUBSYSTEM:CONSOLE)均不能解决问题,于是想到修改.vcxproj文件,经过逐行分析,锁定键false将true改为false,重新编译运行,问题解决。原创 2022-11-28 01:12:51 · 5407 阅读 · 0 评论 -
VC++ MD5加密
【代码】VC++ MD5加密。原创 2022-09-27 11:49:13 · 403 阅读 · 0 评论 -
Gh0st 远程管理系统新概念
接触Gh0st有很长一段时间了,对于插件或是界面已然是轻车熟路,从下月开始将分章节系统性详细讲解架构模式、以及如何设计自己企业的远控管理软件。原创 2022-08-31 10:50:24 · 334 阅读 · 0 评论 -
C++ 内存共享/软件守护
功能描述:在无人看守的情况下,防止软件意外退出。原创 2022-08-04 09:49:39 · 490 阅读 · 0 评论 -
GmSSL 在Windows上的使用(编译和使用)
1、源码的下载GitHub - guanzhi/GmSSL: 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱2、编译工具的下载首先安装VS开发工具,接着下载ActivePerl,打开VS命令提示符(管理员权限),并切换到 ActivePerl安装目录下3、编译指令C:\Perl64\bin\perl Configure VC-WIN32 no-asmX64位 指令如下:C:\Perl64\bin\perl Configure VC-WIN64Ano-asm..原创 2022-05-24 22:31:02 · 1724 阅读 · 1 评论 -
VCPKG 包下载失败解决思路
vcpkg经常会遇到资源无法访问,可能是域名解析出了问题,我们只需要将域名解析后的ip地址添加到hosts文件列表中可解决此问题,如:185.199.108.133 raw.githubusercontent.com在此之前可先通过终端ping指令验证一下。linux系统中,hosts文件路径:/etc/hostswindows系统中,hosts文件路径:c:\windows\system32\drivers\etc\hosts域名解析,可通过IPAddreIPAddress查.原创 2022-03-11 08:43:17 · 2637 阅读 · 0 评论 -
TightVNC H264编解码(三)之去图像抖动
本以为服务器端改造完硬编码,客户端升级完解码功能之后,一切也就该收尾了,可没成想如鱼哽喉卡住了,客户端播放视频画面,当服务器端窗口有快速移动的时候,客户端显示窗口边缘会产生抖动(不够顺滑流畅),分析其原因:1、服务器端视频编码问题2、客户端视频解码问题3、网络数据丢包问题4、客户端渲染问题5、其它问题只能逐一排查了。在此之前,我完成了二件事,其一是编写了一个流媒体服务器,其二采用SDL库编写了一个实时视频流播放器,均是为后面的排查工作做铺垫。问题1、服务器视频编码问题将硬原创 2022-03-04 16:31:20 · 1293 阅读 · 5 评论 -
macOS获取系统信息
代码在XCode下编译通过类定义:#ifndef SYSTEMINFO_H#define SYSTEMINFO_H#include <string>#include <vector>using namespace std;namespace shell { class StrUtil { public: static inline std::string& ltrim(std::string &str)原创 2022-03-03 21:17:37 · 776 阅读 · 0 评论 -
C++之xlsx文件操作之写操作
采用xlsxwriter开源库的实现,声明如下:#include "./xlsxwriter/include/xmlwriter.h"#include "./xlsxwriter/include/workbook.h"#include "./xlsxwriter/include/worksheet.h"#ifdef _DEBUG#pragma comment(lib, "./xlsxwriter/lib/debug/xlsxwriter.lib")#else#pragma comment(原创 2022-02-28 16:11:51 · 2413 阅读 · 7 评论 -
C++之xlsx文件操作之读操作
采用xlnt开源库的实现,声明如下:#define XLNT_STATIC 1#include "./xlnt/xlnt.hpp"#ifdef _DEBUG//#pragma comment(lib, "./xlnt/lib/xlntd.lib")#pragma comment(lib, "./xlnt/xlntd.lib")#else#pragma comment(lib, "./xlnt/lib/xlnt.lib")#endif // _DEBUGnamespace xlnt{原创 2022-02-28 16:02:44 · 3778 阅读 · 0 评论 -
Delphi中TEdgeBrowser控件初探
1、组件库安装Delphi IDE中的TEdgeBrowser虽然可以直接拖拽到界面TForm上来,但是却是无法直接使用的,究其原因是因为缺少相关的库文件,这里介绍最简单直接有效的方法:1、下载 nuget。nuget是一个开源项目的客户端下载工具,想要了解更多,请问度娘。2、打开终端,在命令行执行:.\nuget install Microsoft.Web.WebView2若要指定WebView2版本,可用如下指令.\nuget install Microsoft.Web.We原创 2022-02-28 09:14:14 · 3379 阅读 · 0 评论 -
C++连接Wlan/Wifi网络设备
本单元只介绍如何链接wifi设备,对信号强度不做涉及,另外链接指定wifi之前应该先判断wifi是否已经链接,如果已经链接就没必要再链接了,代码中采用的是没做链接判断,先直接断开然后重新进行链接,代码如下:#include <wlanapi.h>#pragma comment(lib, "wlanapi.lib")BOOL connectWlan(CString Name, CString SSID, CString Password){ BOOL bRet = FALSE; D原创 2022-02-28 08:54:15 · 4173 阅读 · 4 评论 -
已知文件被某进程占用,强行解除占用,并删除文件
BOOL GetVolumeNameByHandle(HANDLE hFile, LPTSTR szVolumeName, UINT cchMax){ BOOL bResult = FALSE; TCHAR szBuf[500] = { 0 }; TCHAR * pIter = szBuf; int i =0; BY_HANDLE_FILE_INFORMATION stFileInfo = { 0 }; do { if(FALSE == GetFileInformationByHa.原创 2022-02-23 13:48:04 · 3414 阅读 · 0 评论 -
通过GDI+修改jpg文件EXIF属性
代码直接从旧项目工程里面抠出来的,抛砖引玉。主函数名称BOOL UpdataJpegExifCopyRightInfo(const wchar_t* filename, const char* exifCopyrightInfo)#include <windows.h>#include <gdiplus.h>#include <stdio.h>using namespace Gdiplus;#pragma comment(lib, "gdiplus.原创 2022-02-23 13:05:41 · 412 阅读 · 0 评论 -
TightVNC H264编解码(二)之硬编码库的编译
AVCodec * codec = avcodec_find_encoder_by_name("nvenc_h264");如果是默认的ffmpeg库,返回结果是NULL,看来是不带有硬编码功能的,重新编译分支ffnvcodec,不到半个小时编译完成,返回值终于ok了(^-^),继续编写代码:AVCodecContext *avctx = avcodec_alloc_context3(codec);int ret = avcodec_open2(avctx, codec, 0);返回值-40.原创 2022-01-08 20:54:24 · 2182 阅读 · 0 评论 -
TightVNC H264编解码(一)
经过尽二个月的不断摸索,TightVNC终于支持H264编解码了,前期真正编写H264编解码器只花了一周左右时间,但是测试发现效果并不是太理想(帧率太低,延迟大),这大概是所有远程控制软件要处理的通病吧。作为一位经验丰富的程序员,造成这种问题的原因,有以下几点:1、抓屏?2、H264编码?3、TCP网络发送?4、H264解码?5、视频渲染?为了排除到底哪个环节出了问题,看来不摸透底层事务流程是行不通的,不得已摸透代码画出了下面这个简陋的流程图。Server端事务处理流程图.原创 2021-12-31 21:25:36 · 1657 阅读 · 6 评论 -
C++ 多语言切换
如果设置UI资源文件非重点不做介绍。设置英文版接口:SetThreadUILanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));此时如果操作系统的语言选择的是简体中文,那么掉系统的AfxMessageBox或是MessageBox,出现的按钮仍旧显示中文,解决方法:接口统一替换成类似如下这种:CString strTemp; strTemp.LoadString(IDS_CLOSE_APP);CString strTips; s原创 2021-11-18 11:25:51 · 1547 阅读 · 0 评论 -
C++ xml库的选择
自从触及xml文件的读写,一直以来都是用的tinyxml2,接口简单,然而近期项目频繁出错,跟踪调试发现,问题出在了xml文件的读写上,当节点数超过百万级别的时候,内存暴增到G的当量,很显然程序会由于内存申请不足崩掉了。果断寻找替代品,百度搜索找到了pugixml开源库,将原有的调用tinyxml2接口的近千行代码替换之后,运行程序,一切顺利,速度感觉还较之前的有所提示。2者调用区别(被注释屏蔽掉的代码是tinyxml2接口调用部分): // xml文件声明 // tinyxml2::XM原创 2021-11-18 11:18:04 · 1630 阅读 · 0 评论 -
C++ 结束进程
有时候进程未正常退出,导致进程列表遗留僵尸进程,程序启动需要杀死这种僵尸进程。#include "TLHELP32.H"void TerminateSelfApplication(){ TCHAR szFileName[MAX_PATH] = { 0 }; TCHAR* szAppName = NULL; if (::GetModuleFileName(NULL, szFileName, MAX_PATH)) { szAppName = _tcsrchr(szFileName, '\.原创 2021-10-29 20:53:23 · 1831 阅读 · 0 评论 -
Lazarus查询天气接口
提供API接口服务地址:API服务,天气API - 帮! (help.bj.cn)https://api.help.bj.cn/api/?id=45单元定义:unit utWeatherApi;{$mode objfpc}{$H+}interfaceuses Classes, SysUtils, fphttpclient, openssl, opensslsockets;const TCityCodeTable: array [1..7, 1..2] of string =.原创 2021-10-29 15:22:55 · 339 阅读 · 0 评论 -
VC++ 获取文件版本号
源码实现:#pragma comment(lib,"Version.lib")CString GetFileVersion(CString strFilePath){ CString strRet = _T(""); VSFILEINFO *pVerInfo = NULL; LPBYTE pOffsetBytes = NULL; VS_FIXEDFI...原创 2019-12-26 14:55:10 · 751 阅读 · 0 评论 -
Adobe XMP SDK项目应用(续2)
今日我想给给图像的exif属性里面增加一个SoftWare属性,毋庸置疑,最终是失败而告终。在SDk上面纠缠了半日,直奔核心代码而去,最终无功而返。问题的症结其实跟前几日差不多,修改xmp信息可以,但是修改exif信息,就得付出惨痛的代价,不断的调试...跟踪...调试...跟踪,问题点是跟踪出来了,在函数ExportTIFF_StandardMappings里面static voidExportTIFF_StandardMappings ( XMP_Uns8 ifd, TIFF_Manager *原创 2021-09-15 12:13:37 · 283 阅读 · 0 评论 -
Adobe XMP SDK项目应用(续1)
XMP-Tool-SDK功能确实非常完备,但是要想应用于实际软件产品,踩坑不少。近日就遇到将GPS信息写入exif扩展属性项,始终写入不进去。虽然前期项目对这个库已经做过深入学习,但是经过这次的项目再次涉及才知道,还远远不够深入。GPS信息写入代码其实很简单:CString sValue = pPosInfo->m_strRTKPOSlatitude;UINT deg = 0, min = 0, sec = 0, ref = 0;CSysUtils::LonOrLanToDegMinSe原创 2021-09-13 15:47:46 · 271 阅读 · 0 评论 -
MFC 打开文件夹选择框(WPS惹的祸)
请先看2张图:上图和下图,相信大多数人都会选择下面这种方式来选择文件目录吧,直观、操作方便。上图调用接口是SHBrowseForFolder,下图调用接口是CFolderPickerDialog,一直以来我都是使用的CFolderPickerDialog这种接口,但是近日一个新项目程序正常退出却报错,发生异常了(如下图),代码量太大,几经排除却发现罪魁祸首是调用了CFolderPickerDialog引起的,无赖之下换回了SHBrowseForFolder接口。经过考究,qing..原创 2021-09-09 09:34:03 · 398 阅读 · 0 评论 -
MFC中如何修改CGroupBox标题和背景色
添加引用#include "Uxtheme.h"#pragma comment(lib, "Uxtheme.lib")在OnInitDialog里面禁用控件系统主题SetWindowTheme(GetDlgItem(IDC_GROUPBOX1)->GetSafeHwnd(), _T(""), _T(""));在OnCtlColor里面重新对控件设置颜色设置if (nCtlColor == CTLCOLOR_STATIC){ pDC->SetBk...原创 2021-08-26 23:03:48 · 1731 阅读 · 0 评论 -
VC++ CMemDC类的扩展(终结版)
上一版本链接:https://blog.csdn.net/u012156872/article/details/104966445,近期做窗口自绘,发现用该方法绘制非客户区仍存在问题,于是进行了功能简化和补充。定义和声明:#pragma oncenamespace sw { class CMemDC : public CDC { public: //构造函数可应用于非客户区窗口绘制 CCacheDC(CDC& dc, CWnd* pWnd) : m_dc(dc),原创 2021-08-22 11:23:35 · 338 阅读 · 0 评论 -
MFC Ini文件操作(修正版)
.h文件申明:#pragma onceclass CIniFile{public: CIniFile(); virtual ~CIniFile(); //初始化INI CIniFile(TCHAR* szFileName); //创建一个INI文件 void SetFileName(TCHAR* szFileName); //写操作 void WriteInteger(TCHAR* szSection, TCHAR* szKey, int nValue); void W原创 2021-08-04 08:28:32 · 507 阅读 · 0 评论 -
微信网页版接口详解
一、网页版微信提供的HTTP接口1、获取uuid说明:用于获取显示二维码以及登录所需的uuid,标识获取二维码和扫码的为同一个用户 请求方式:GET 地址:https://login.wx.qq.com/jslogin get参数: 参数 示例值 说明 appid wx782c26e4c19acffb 固定值 fun new 固定值 lang zh_CN 表示中文字符集 返回: window.转载 2021-07-30 08:04:40 · 9672 阅读 · 3 评论 -
Linux QT无法切换中文输入法
1、下载输入法插件(或百度自己编译)https://github.com/JackieMium/libfcitxplatforminputcontextplugin.so2、查找QT插件存放目录的位置find -name platforminputcontexts例如:[Qt安装目录]/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts3、复制目标文件sudo cplibfcitxplatforminputcontex.原创 2021-07-07 21:30:29 · 817 阅读 · 0 评论 -
粤嵌GEC6818开发板-入门感慨篇(续一)
触摸屏的事件#include <stdio.h>//printf#include <linux/input.h>//struct input_event#include <sys/types.h>//open#include <sys/stat.h>//open#include <fcntl.h>//open#include <unistd.h>//read#include <stdlib.h>#incl原创 2021-06-29 15:06:05 · 4747 阅读 · 0 评论 -
VC++ FTP文件下传(断点续传)
#include <WinInet.h>#pragma comment(lib, "WinInet.lib")HINTERNET hInternet, hConnect = NULL;// 建立会话hInternet = InternetOpen(_T("WinInet Ftp"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0/*INTERNET_FLAG_ASYNC*/);if (hInternet == nullptr) ret.原创 2021-06-29 14:55:06 · 321 阅读 · 0 评论 -
OpenSSL RSA加密和解密
rsa加密的密钥格式常见的有两种:一种是PKCS#1,密钥头为-----BEGIN RSA PUBLIC KEY-----一种是PKCS#8,密钥头为-----BEGIN PUBLIC KEY-----以字符串公钥为例,对PKCS#1格式的密钥加载使用的函数是PEM_read_bio_RSAPublicKey(),而对PKCS#8格式公钥的加载使用的是函数PEM_read_bio_RSA_PUBKEY()。1、生成密钥对#include <openssl/pem.原创 2021-06-28 10:29:38 · 2885 阅读 · 0 评论 -
libCurl 下载提速
1、变量声明CURL *m_curlhandle;2、资源初始化curl_global_init(CURL_GLOBAL_ALL);m_curlhandle = curl_easy_init();3、文件数据写入回调函数size_t writeFunc(void *ptr, size_t size, size_t nmemb, void *stream){ std::cout << "--- write func ---" << std::endl;原创 2021-06-23 10:13:18 · 932 阅读 · 0 评论 -
VC++ HBITMAP保存文件
请先看下面这段代码:BOOL SaveBmp(HBITMAP bmp, string path){ FILE* f = fopen(path.c_str(), "wb"); if (!f) return 0; BITMAP bmpinfo; GetObject(bmp, sizeof(BITMAP), &bmpinfo); DWORD dwBmBitsSize = ((bmpinfo.bmWidth * 32 + 31) / 32) * 3 * bmpinfo.bmHeigh原创 2021-06-02 17:02:41 · 584 阅读 · 0 评论 -
VC++ 程序启动即隐藏
所谓的隐藏是程序启动后不显示主窗体。网上介绍了很多方法,是否达到效果,众说纷纭,这里只介绍一种在项目中实际应用到的切实可行的方法。原创 2021-05-31 17:10:52 · 399 阅读 · 0 评论 -
VC++ UI布局管理器
https://download.csdn.net/download/u012156872/19266437原创 2021-05-31 16:45:22 · 297 阅读 · 0 评论 -
live555 流媒体开源库
live555对每一个从事过流媒体的朋友而言,都bucne离开安防行业已经有些年头了,曾经热爱的那一遍热土,如今内心深处已渐渐消逝殆尽。偶尔听身边的朋友提起,也只是当自己是位过客,原创 2021-05-31 16:30:08 · 129 阅读 · 0 评论