Windows

  • Published on
    本文介绍如何使用 Windows 系统自带的磁盘管理工具恢复被用作系统盘的 U 盘到原始状态,通过删除已分配卷并重新创建简单卷,轻松恢复 U 盘的正常使用,无需额外工具。
  • Published on
    本文介绍了如何获取 Windows 桌面上所有可见窗口的信息,包括窗口句柄、标题、类名、区域和 ZOrder(显示层级)。通过使用 C++ 和 Windows API,定义了 `WindowInfo` 结构体来存储窗口信息,并通过 `EnumWindows` 函数枚举所有可见窗口。代码示例展示了如何遍历窗口列表,获取每个窗口的详细信息,并计算其 ZOrder,最终返回包含所有窗口信息的 `QVector<WindowInfo>`。
  • Published on
    本文介绍了如何在使用第三方远程桌面软件连接公司电脑时,解决物理控制台无显示的问题。原因是微软远程桌面(RDP)会创建独立的会话,默认不显示在物理控制台上,而其他软件如 TeamViewer 无法直接输出到物理屏幕。通过使用 `tscon` 命令将远程会话转换为 console session,可以实现在物理控制台上查看远程桌面输出。具体步骤包括使用 `query user` 查看会话ID,并执行 `tscon <session ID> /dest:console` 进行转换。
  • Published on
    本文介绍 Win32、MSAA、UIA 技术。Win32 是基础 API 用于 Windows 界面开发,MSAA 助开发辅助功能,UIA 是 Windows7 新功能提供更精确访问信息。RPA 产品需这些技术来控制 GUI 应用,各技术优缺点各异,需根据需求灵活选择。
  • Published on
    介绍了在 Windows 中降权启动应用的方法,指出 WTSQueryUserToken 在普通会话下调用常失败但在 session 0 服务中可成功,给出代码`runProcessAsUser`,但强调此代码未严谨测试仅供参考。
  • Published on
    文章主要讲 Qt 正确显示窗口,有多种展示情况及常见做法,如`widget->show(); widget->raise();`但存在窗口最小化后出不来等问题,给出`GraceShowWidget`函数代码可解决,测试无问题。
  • Published on
    文章介绍 log4cxx 的常用 appender 及在 GUI 程序中用 OutputDebugString 看日志。提到可通过配置 log4cxx.properties 实现向 OutputDebugString 输出日志,用 vs 输出窗口或 DebugView 工具实时查看。
  • Published on
    介绍快速遍历磁盘方法,不用遍历每个目录,用 DeviceIoControl 函数需管理员权限,还可通过命令行工具“dir c:\*.* /b /s /a-d >>c:\allfile.txt”。给出 C++代码可遍历磁盘文件及目录信息。
  • Published on
    文章介绍双击 exe 阻止程序启动的方法,不依赖传参,通过获取父进程 ID 判断是否为 explorer.exe 进程 ID 来实现。给出获取进程信息、按名称获取进程 ID、获取父进程 ID 的函数及示例代码。
  • Published on
    客户端使用 QSortFilterProxyModel 时,频繁更新 model 致 table 行排序不正确。虽可手动调用 sort 及 invalidate,却在特定操作时会崩溃。可关 dynamicSortFilter 用 Timer 控制排序,通过相关函数控制触发间隔及在 model changed 槽函数启动 timer 来解决此问题。
  • Published on
    在 Qt 中,show 用于显示窗口,raise 可将窗口置于最前。但主窗口点击时子窗口可能遮挡,此时需用 activateWindow 和 raise 解决。show 显示窗口及子窗口,showNormal 恢复最大化或最小化窗口,raise 提升窗口,activateWindow 设置活动窗口并可与 raise 配合确保窗口置顶。
  • Published on
    介绍 qpid-cpp Windows 编译,需先安装 boost 等,下载源码解压后用 CMake 配置,因缺 boost 设 BOOST_ROOT 路径,后用 vs 编译 ALL_BUILD 和 INSTALL,即便有 setlocal 错误,qpid-cpp 也已安装在 C:\Program Files (x86)\qpid-cpp 目录下。
  • Published on
    Qt 客户端多开需注意本地配置、进程名及全局信息。可通过 RunGuard 类保证同一程序仅运行一个进程,多开时要保证目录和进程名不同,若已有进程运行则打开其主窗口。
  • Published on
    本文介绍如何使用Node.js脚本调用AStyle.exe批量格式化C/C++代码文件,包含配置和使用方法。
  • Published on
    本文介绍用 Qt 官方的 qt-installer-framework 制作 Windows 安装包,给出主要目录结构及各文件内容,如 config.xml、package.xml 等,还说明了放置应用程序文件及打包命令等,最后提供目录结构和制作后的安装包下载地址。
  • Published on
    在 visual studio 中,.props 文件可固定工程配置,方便下次使用。其内容包含库目录宏定义等,导入到 vcxproj 文件只需在后者中用<Import Project="$(SolutionDir)asio.props"/>等语句。
  • Published on
    这篇文章介绍了如何解决GitHub下载速度慢的问题。作者通过查询GitHub域名对应的IP地址,并修改Windows系统的hosts文件,使得GitHub的下载速度大大提高。同时,文章还提供了在MAC电脑上修改hosts文件的步骤。最后,作者测试了修改后的效果,下载速度达到了400~500kiB/s。
  • Published on
    收集 C++ Windows 实用函数,含头文件依赖,如获取系统内存等信息、字符串编码转换、目标是否存在等 17 个函数,涵盖内存、线程、时间、文件等方面操作,方便开发使用。
  • Published on
    桌面客户端主线程即 UI 线程,异步获取数据常在子线程,不能直接操作 UI。介绍两种将子线程数据抛到 UI 层处理的方法:一是调用和接收在一起,通过信号槽机制;二是调用和接收分开,用 signalDispatch 类以信号方式 emit 结果,可实现多个 UI 窗口数据同步。
  • Published on
    字符编解码故事:起初 ASCII 用于美国,后世界各国使用计算机,中国制定 GB2312 等编码,各国有不同编码致交流困难。ISO 推出 UNICODE 用两字节统一表示所有字符,后有多种 UTF 标准。记事本中 GB2312 编码与 UTF8 编码易产生冲撞,还有多种编码形式及转换函数,如 MultiByteToWideChar 和 WideCharToMultiByte。
  • Published on
    2017 年 10 月 24 日回顾当年 MFC 信息管理系统毕业设计,曾想弄 UDP 日志服务程序,用 MFC 做单文档应用。参照孙鑫教程学两月后做毕设,功能随意加,最后成学习试验品。现公布源码,数据库连不上部分已注释,VC6.0 可编译运行。
  • Published on
    WSAAsyncSelect 模型与窗口相关,用消息通知。文中为对话框客户端关键代码,连接 echo 服务端,测试文件传输,包含自定义消息、消息映射等,还有连接、发送、接收等相关函数。
  • Published on
    介绍 select 模型,需设 listenSock 为非阻塞,放入 fdread 中。每次 FD_SET 前要 FD_ZERO,用 list 保存 SOCKET 循环处理。在`_tmain`函数中创建套接字、绑定、监听等,通过 select 检测读写事件并处理客户端连接与数据收发。
  • Published on
    文章介绍 visual stdio 不同目录下文件重名及类重名问题及解决方法。先给出特定目录结构及代码,编译时出现 warning 因同名 obj 文件导致类编译出错,简单改文件名可解决但会造成重复定义,加命名空间可解决。还可在重复 cpp 文件属性中修改输出文件对象文件名避免重名。
  • Published on
    此代码实现了 Windows 任务栏高亮功能。通过`startAlert`函数可设置高亮持续时间和超时时间来闪烁任务栏,`stopAlert`函数则停止高亮。利用`FLASHWINFO`结构体和`FlashWindowEx`函数来完成相关操作。
  • Published on
    本文介绍了常见排序算法,包括插入排序、及时终止的冒泡排序、终止不必要的选择排序和快速排序。分别给出了各算法的代码实现,通过模板函数提高通用性。
  • Published on
    介绍了类模板之单链表,包含 Chain.h 中定义的模板类 ChainNode 和 Chain,以及 Chain.cpp 中实现的各种函数,如构造、析构、插入、删除等操作,最后在 main.cpp 中进行了测试。
  • Published on
    此为统计程序实例个数的代码,在 Windows 下用 C/C++编写。通过共享数据段和特定消息,实现应用程序知晓自身运行实例个数,在 WinMain 函数中进行相关操作和消息传递。
  • Published on
    此 C++代码通过 Windows API 在文件末尾追加“hello”。先创建文件句柄,获取文件大小,创建文件映射对象,获取映射视图,将“hello”复制到文件末尾,最后解除映射和关闭句柄,实现了在文件末尾追加内容的功能。
  • Published on
    文章介绍 Robomongo 连接远程 MongoDB 数据库的步骤,包括修改远程服务器 mongodb 配置、创建管理员用户并重启服务,还展示了 Robomongo 连接远程服务的截图以及备份还原数据库的方法,如 mongodump 和 mongorestore。
  • Published on
    本文介绍多文件统计字频,有 60 个文件如 zipin1.txt 到 zipin60.txt,格式相同词频不同。通过 C++代码实现将各文件相同词语词频相加并写至 main.txt,代码中定义 Word 类,在构造函数和更新函数中处理文件数据,最后输出结果,计算耗时。
  • Published on
    这是关于类模板之队列的代码。定义了`Queue`类模板,包含构造、析构、判断空满、获取首尾元素及添加删除元素等操作。在`main`函数中创建`Queue<int>`对象并进行操作演示。
  • Published on
    此代码为获取指定文件夹下所有.txt 文件的名称及创建时间。通过`FindFirstFile`和`FindNextFile`函数遍历文件夹,将文件名存储在数组中并返回文件数量,最后关闭查找句柄。
  • Published on
    介绍了在 Windows 的 C/C++中,通过初始化 gdiplus 环境,定义成员变量,在构造和析构函数中进行相应操作,实现 Gdiplus 与 GDI 混合的双缓冲代码,包括创建兼容 DC 和位图等操作。迁移于 2011 - 05 - 08。
  • Published on
    介绍给对话框添加垂直滚动条的方法,通过消息映射宏、OnInitDialog 初始化及响应 WM_VSCROLL、WM_SIZE、WM_MOUSEWHEEL 等消息来实现,包括各消息处理函数的具体逻辑。
  • Published on
    介绍 WTL CHyperLink 类用法,需含 atlctrlx.h 头文件,声明变量并在 OnInitDialog 函数中进行子类化等操作,在消息映射宏中响应事件,可实现点击链接打开指定网页。
  • Published on
    这是一个 C/C++ 的 INI 文件操作类`CIniFile`,提供了获取和设置 INI 文件中值的各种方法,如获取字符串、整型数值、坐标等,以及写入、删除节等操作。
  • Published on
    介绍了 WTL 自定义的常用类,包括设置背景图片的`CBitmapBkgnd`类、设置背景颜色及字体颜色的`CCtrlColor`类、自定义静态文本控件的`CMyStatic`类及`CCoolLabel`类,详细说明了各类的功能及用法。
  • Published on
    文章介绍 WTL 对话框应用程序常用头文件,包括提前声明 CString 类的 _WTL_USE_CSTRING,以及 atlbase、atlapp 等多个用于基本类、窗口类、数据交换类等的头文件,方便开发。
  • Published on
    文章介绍实现无标题栏对话框拖动的方法。有两种方案,常规思路繁琐且需处理诸多细节,第二种通过处理 WM_NCHITTEST 消息,在客户区模仿标题栏拖动行为实现,代码简单易理解,对话框其他对象照常工作。
  • Published on
    文章介绍通过 WTL 的 IWebBrowser2 调用网页中 javascript 函数。给出简单含 js 网页代码,及相关 WebBrowser ActiveX 控件成员变量等操作,在 OnInitDialog 中导航到网页,OnOk 函数中测试执行 js 函数,还给出 WtlCallJavascript 函数,运行后可实现相应功能。
  • Published on
    本文记录了在看孙鑫老师 vc++16 课聊天程序视频教程时遇到的两个 SOCKET 宽字符问题及解决方法。一是从 ip 地址控件获取值经转换后接收端显示乱码,通过 MultiByteToWideChar 转换为宽字符解决;二是 WSABUF 中 buf 只能接受 char*,需强制转换。作者表示对 SOCKET 宽字符处理仍需努力。
  • Published on
    介绍 Windows 下进程间通信方式,包括文件映射、共享内存等 10 种。阐述各方式特点,如文件映射可共享数据但限于本地;命名管道可跨进程及计算机通信等。开发者需考虑应用环境选择,文末给出多种选择方案及考虑因素。作者李志刚等。
  • Published on
    文章介绍内存对齐原因(平台、性能)及规则,通过例子说明结构体大小计算。如 32 位机器上不同结构体示例,还提及
  • Published on
    文章介绍 WebBrowser 控件判断页面加载完毕的方法。DWebBrowserEvents2 Members 的 DocumentComplete 成员可用于此,但直接处理不行,需做处理。给出具体代码示例,在特定条件下进行页面加载完成的处理。
  • Published on
    介绍了静态库的编写与调用。先新建 Win32 Console Project 生成 LibAdd.lib,再新增头文件和源文件。调用时新建 Test 工程,包含头文件,指定 LibAdd.lib 目录和名称,在 main 函数中测试,得到所需结果。
  • Published on
    总结:高版本 visual studio 可直接打开低版本工程需转换,低版本打开高版本工程需改动,如用 vs2003 打开 vs2008 建的工程,需将 tjw.sln 的 Format Version 10.00 改为 8.00,tjw.vcproj 的 Version="9.00"改为"7.10"。
  • Published on
    介绍内存文件映射用于进程间通信,Microsoft 加入支持可创建内存映射文件无需专门磁盘文件。创建文件映射对象后可像使用任务内存区域,共享数据时传入名称。进程不再需要可调用 CloseHandle 收回存储器,分普通文件和页文件,示例展示进程 1 和进程 2 的操作。
  • Published on
    文章介绍在对话框上做“应用”按钮的方法。定义 WM_APPLY_TRUE 和 WM_APPLY_FALSE 消息,在 Main 对话框中实现消息映射和响应,还捕获全局消息,根据不同情况使“应用”按钮可用或不可用,用的是 WTL 且基本方法一致。
  • Published on
    文章主要探讨 char 与 wchar_t,指出 char 存 ascii 码字符,wchar_t 存汉字等双字节字符。通过示例解释 char 存储汉字的原理及 memcpy_a 函数对 wchar_t 汉字串拷贝的方式,还提到用宽字符函数输出汉字需包含特定头文件和设置 locale。
  • Published on
    这是一个用 electron 框架做的 demo 程序,调用 showapi 接口数据。入口 main.js 初始化菜单、窗口等,还通过 ipc 与各页面通信,用 ejs 在 html 上展示数据,源码可在[https://code.csdn.net/tujiaw/showapi/tree/master](https://code.csdn.net/tujiaw/showapi/tree/master)查看。
  • Published on
    QtCharts 提供易使用的图表组件,用 Qt Graphics View Framework 可轻松集成。需自行编译安装,步骤包括获取源代码、用 vs2015 x64 编译安装、安装帮助文档及编译运行 demo 程序,各步骤详细且可成功展示图表。
  • Published on
    介绍 Windows 下用 VS2013 编译 Qt5.6 源码的步骤,包括下载源码、安装相关工具、ICU 源码编译及环境变量设置等,还提及编译中常见问题及解决办法。
  • Published on
    文章介绍让程序只有一个实例运行的方法,开始加代码实现。有三种:一是找先前窗口实例并激活;二是用互斥对象,创建后判断是否已存在;三是用事件对象,创建后判断是否已存在,若已存在则直接返回。(迁移 2011 - 05 - 28)
  • Published on
    文章介绍了进程或线程同步互斥的四种控制方法:临界区速度快可串行化访问公共资源;互斥量可跨进程控制资源访问;信号量允许多线程同时访问有限资源;事件可通知线程同步。并分别给出各方法的操作原语及 MFC 类的使用示例,还通过实例展示了临界区和事件的用法。
  • Published on
    总结:内存映射文件是一种内存管理方法,可将文件映射到进程虚拟地址空间,无需文件 I/O 操作和缓冲处理,适合管理大尺寸文件。文中给出 C++代码示例,通过创建文件、映射文件视图等操作实现内存映射。
  • Published on
    介绍了 WTL 按钮重绘的类及用法,需导入头文件,添加按钮控件并设 Ower Draw 属性为 True,在特定消息映射中添加代码,还给出了类的相关函数如 OnDrawItem 等的实现,可实现按钮不同状态下的位图绘制及相关操作。[from](http://www.codeproject.com/KB/wtl/mousetrack.aspx) (迁移 2011 - 05 - 09)
  • Published on
    文章介绍 WTL 多页面显示实现方法,主对话框有三页面,设属性、成员变量,设置显示区域并创建页面,移动到指定区域,最后根据条件显示指定窗口,隐藏其他窗口,如显示第一页隐藏第二、三页。
  • Published on
    主要讲述 32 位到 64 位程序移植,以输入法为例,需编译 64 位 DLL 且注意内存、函数等方面问题。64 位系统有 SysWow64 兼容 32 位,输入法需两个 IME 分别放 System32 和 SysWow64,启动时系统根据应用程序位数加载相应 IME。
  • Published on
    介绍了一个老外写的好用 ToolTip,解决两个小问题(鼠标划上立马弹出又消失、提示框停留时间短),给出源码及用法,需写入头文件、继承类等,还可看源码函数了解其他用法。
  • Published on
    2017 年 1 月 26 日记录为 CComboBox 控件增加系统字体名的过程。先定义并关联对象,再通过 EnumFontFamiliesEx 及回调函数获取字体名并添加到 CComboBox 中,注意相关参数设置和返回值,还需去掉带@号的字体名。
  • Published on
    介绍 WTL 安装到 VS2008 和 VS2010 的方法。WTL8.0 支持 VS2005 ,8.1 支持 VS2008 。安装时需注意解压、设置 VC++目录等步骤,若遇错误可参考相关资料解决,VS2010 安装需下载特定文件并按步骤操作。
  • Published on
    文章介绍了 WTL 自画按钮与文件对话框。包含自画按钮类 CBmpEixtBtn 的定义及相关操作,如在 OnInitDialog 中进行子类化;还有文件对话框相关代码,通过 BROWSEINFO 等设置获取选择目录并显示在编辑框中。
  • Published on
    这是 Win32 API 笔记,包含创建非模式对话框、静态文本控件、显示图片等操作示例,还涉及系统托盘、获取屏幕尺寸等内容,以及诸多关于 Win32 API 的细节和用法。
  • Published on
    文章介绍 mongodb 在 windows 和 ubuntu 上的安装及相关操作。windows 需官网下载安装,指定路径创建 data/db 目录,安装服务并指定日志和数据库路径,可通过命令启动或停止;ubuntu 直接 apt install mongodb,可用相应命令启动和关闭服务,还介绍了基本命令及跨平台界面管理工具。
  • Published on
    本文介绍了在 Windows 中用 C/C++获取剪切板中图片大小的代码。通过判断剪切板格式,打开剪切板,获取数据并转换为 DIB 结构,从而得到图片的宽度和高度,还提供了获取最后错误码的函数。