随笔分类 - win32
摘要:Detours 是一个用于在 ARM, ARM64, X86, X64 和 IA64 机器上拦截二进制函数的库。 Detours 最常用来拦截应用程序中的 win32 api 调用,比如添加调试工具。 拦截代码在运行时动态应用。 Detours 将目标函数的前几个指令替换为无条件跳转到用户提供的 d
阅读全文
摘要:项目中有个需求是要对文本内容检索并重写,我们使用的是 WriteFile 覆盖旧的文本内容 最小示例: #include <Windows.h> #include <iostream> int main() { HANDLE hFile = CreateFile(L"File.txt", // Op
阅读全文
摘要:发现问题的经过: 公司开发的 windows 程序在启动运行时,在右下角的托盘里右键程序图标退出后,在重新启动程序后,因为防多次启动机制(锁原理),会提示该程序已经在运行中 但是托盘里已经找不到程序的图标,并且任务管理器的进程选项卡也无法找到,最终在任务管理器的详细信息选项卡中找到了该进程,强制结束
阅读全文
摘要:在无任何功能代码的情况下运行控制台,会发现有三个线程在运行 SO 的答案指出,在程序一开始运行时,为加快进程启动,windows 会利用多个 CPU 内核更快地初始化。 ntdll.dll 线程实际上是从链接的库启动的操作系统线程,所有代码都在线程 26372 上运行。 通常这些线程池工作者为应用程
阅读全文
摘要:因项目中使用文件的创建日期来命名文件,所以不用额外查找文件的创建日期再进行排序,记录一下 bool AscendingSortByCreationTime(const std::wstring& file_a, const std::wstring& file_b) { int n_time_les
阅读全文
摘要:LARGE_INTEGER nFreq, t1, t2; int loop_count = 0; double dt; double time_sum = 0; QueryPerformanceFrequency(&nFreq); QueryPerformanceCounter(&t1); /* 要
阅读全文
摘要:我们可以先读取字符串所占的行数,再乘以控制台的实际宽度 bool ReadFromConsole() { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); int bufsize; CONSOLE_SCREEN_BUFFER_INFO csbi;
阅读全文
摘要:已知: Windows 音频会话 API (WASAPI) 从 Windows 10 开始,WASAPI 已增强为: 允许应用程序发现给定音频设备的音频驱动程序支持的缓冲区大小范围(即周期性值)。这使应用程序可以在共享模式下打开流时在默认缓冲区大小 (10 毫秒) 或小缓冲区 (<10 毫秒) 之间
阅读全文
摘要:虽然标题中标有GDI+,但其实真正实施的时候并没有用到。 不过GDI+的相关文档有一些关于高斯模糊的api说明,见下面链接: Blur class (gdipluseffects.h) 使用Blur类,你可以将高斯模糊效果应用于位图并指定模糊的性质。将Blur对象的地址传递给Graphics ::
阅读全文
摘要:MSDN文档介绍GetMenuBarInfo是用来检索有关指定菜单栏的信息。 假如有个需求是要找到菜单下拉菜单的矩形大小,该怎么做呢? 最简单的方法就是获取菜单栏的句柄,然后将句柄作为参数传给GetMenuBarInfo函数。 HWND myhWnd = FindWindowW(L"#32768",
阅读全文
摘要:QueryDisplayConfig函数检索关于所有显示设备的所有可能的显示路径,或视图,在当前设置的信息。 C++样本: (开箱即用) 代码列出了所有显示器的名称和拓展模式 #include <Windows.h> #include <iostream> #include <vector> #in
阅读全文
摘要:该代码来源于codeproject,经过测试发现,在屏幕处于旋转的情况下捕获的图像是黑色的。暂时没有找到原因。 代码开箱即用, #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <shlobj.h> #include <shellap
阅读全文
摘要:创建win32窗口需要注册,回调函数一些操作,如果我们不需要窗口的话,可以使用下面代码获得一个仅有消息循环的控制台。 ps: 这样做主要对一些不需要窗口但需要消息循环的程序特别有用,比如蓝牙回调。 #include <Windows.h> #include <thread> #include <io
阅读全文
摘要:今天做case的时候遇到一个这样的问题,故记录下来。 Codeproject有类似的案例,不过是使用的MFC模板编译的。 因为我们只需要win32程序,所以就....代码如下: CodeProject: Play GIF using GDI+ 另一个是使用双缓冲实现的,我没尝试:win32双缓冲实现
阅读全文
摘要:#include <Windows.h> #include <stdio.h> #include <io.h> #include <fcntl.h> #pragma warning(disable:4996) bool ConvertToWideFromUTF8orACP(char* strData
阅读全文
摘要:很多时候我们习惯使用GDI+中Image类来加载本地文件,但是有时候我们需要资源中从加载png格式的图片时,却无法使用该类。 我们可以使用FindResource,LoadResource和LockResource以获取指向图像字节的指针。然后从中创建一个IStream。IStream可用于初始化G
阅读全文
摘要:#include <Windows.h> #include <WinSafer.h> #include <stdio.h> #include <sddl.h> bool _IsNewProcessLaunched() { // Create the restricted token. SAFER_L
阅读全文
摘要:这里需要两个app. parent.cpp #include <Windows.h> #include <stdio.h> int main() { SECURITY_ATTRIBUTES se = {}; se.nLength = sizeof(SECURITY_ATTRIBUTES); se.b
阅读全文
摘要:#include <Windows.h> #include <iostream> #include <thread> #include <tchar.h> using namespace std; HWINEVENTHOOK EventHook; BOOL WINAPI HandlerRoutine
阅读全文