自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 论坛 (3)
  • 收藏
  • 关注

原创 检测计算机是否处于睡眠模式

通过监听WM_POWERBROADCAST消息:小示例:LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ if (WM_POWERBROADCAST == message && PBT_APMSUSPEND == wParam) { // Going to ...

2019-08-27 15:40:38 589

原创 使用FindNextFile遍历特定文件夹

如果你想要列出所有后缀为.cur的游标文件,那么你可以使用FindNextFile轻松做到,但是最好限于特定文件夹,因为你如果要全盘搜索,那效率是十分低的。源码是开箱即用的:#include <windows.h>#include <iostream>#include <tchar.h>#pragma warning (disable: 4996...

2019-08-27 14:04:59 74

原创 通过createprocess获取cmd.exe里面命令行数据

时间比较匆忙,我就直接上样例了,后面有时间再贴细节。#include <Windows.h>#include <string>int main(){ BOOL ok = TRUE; HANDLE hStdInPipeRead = NULL; HANDLE hStdInPipeWrite = NULL; HANDLE hStdOutPipeRead = ...

2019-08-22 18:13:44 295

原创 WS_EX_TRANSPARENT - 它实际上做了什么?

MSDN是这样说的,在窗口下方(由同一个线程创建)的兄弟姐妹被绘制之前,不应该对窗口进行绘制。窗口显示为透明,因为底层兄弟窗口的位已经被绘制。要在没有这些限制的情况下实现透明度,请使用SetWindowRgn函数。根据我的理解就是,透明使你的事件(如鼠标单击)从窗口 穿过。而不透明度只是一个单独的概念,它指示窗口管理器在绘制表单时应用alphabLending。这两件事没有关系,...

2019-08-22 11:04:01 1473

原创 如何使用UpdateLayeredWindow

将WS_EX_LAYERED样式添加到窗口中。例如,可以通过调用CreateWindowEx完成此操作:hWnd = CreateWindowEx(WS_EX_LAYERED,szWindowClass,szTitle,0, CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);创建窗口后,我们将加载带有Al...

2019-08-22 10:09:36 591

原创 如何使用com组件

这里有篇介绍的很详细的文章:https://www.codeproject.com/Articles/633/Introduction-to-COM-What-It-Is-and-How-to-Use-It这是我根据文章写的demo,能够成功实现#define WIN32_LEAN_AND_MEAN#include <Windows.h>#include <W...

2019-08-16 18:23:02 390

原创 将std::string转换为LPCSTR

方法:使用LPWSTR可以更改指向字符串的内容。不能使用LPCWSTR,因为它无法改变指向的内容LPWSTR ConvertToLPWSTR( const std::string& s ){ LPWSTR ws = new wchar_t[s.size()+1]; // +1 for zero at the end copy( s.begin(), s.end(), ws ...

2019-08-16 18:16:31 746

原创 进程and窗口的相关api

要查看给定进程是否正在运行,可以使用:CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS)用Process32First()和Process32Next() 请参阅拍摄快照和查看进程或者EnumProcesses用OpenProcess()和GetModuleBaseName()/GetProcessImageFileName()/QueryFu...

2019-08-15 16:21:58 52

原创 用全局挂钩检测当前窗口是否激活

使用全局挂钩的前提是使用DLLDLL.cpp// dllmain.cpp : Defines the entry point for the DLL application.#include "stdafx.h"#include <Windows.h>#include <stdio.h>HMODULE thisModule;HHOOK hook;...

2019-08-14 18:20:13 161

翻译 为什么我们需要C++中的虚函数

摘自stackoverflow:https://stackoverflow.com/a/2392656/11128312假设你有这两个类:class Animal{ public: void eat() { std::cout << "I'm eating generic food."; }};class Cat : public Anima...

2019-08-14 11:09:30 50

原创 C++如何检测DPI

DPI的英文全称为Dots per inch解释:每英寸点数(dpi或dpi[1])是空间打印、视频或图像扫描仪点密度的一种度量,特别是可以放置在1英寸(2.54厘米)跨度内的一行中的单个点的数量。同样,新引入的每厘米[2]点(d/cm或dpcm)是指可以放置在1厘米(≈0.393英寸)线内的单个点的数量。监视器没有点,但有像素;监视器和图像的密切相关概念是每英寸像素或PPI。许多资源,包括...

2019-08-13 10:51:33 434

原创 GetWindowTextW的使用

GetWindowTextW: 将指定窗口标题栏的文本(如果有)复制到缓冲区,如果指定的窗口是控件,则复制控件的文本。注意:GetWindowTextW无法检索另一个应用程序中的控件文本函数原型:int GetWindowTextW( HWND hWnd, LPWSTR lpString, int nMaxCount);hWnd: 文本的窗口或控件的句柄...

2019-08-09 17:56:42 814

原创 使用SendMessage获得另一个程序的窗口标题

SendMessage可以将指定的消息发送到一个或多个窗口。一个简单的例子char text[256];LRESULT result = SendMessage(windowHandle, WM_GETTEXT, sizeof(text), LPARAM(text));...

2019-08-09 17:38:33 702

原创 使用更安全的方法去子类化控件

在很长一段时间内,我们都习惯使用SetWindowLong去子类化控件,但是这种方法存在很多缺点,具体可以看MSDN文档的介绍。这是列举出的四个缺点:窗口过程只能更换一次。 创建子类后很难删除它。 将私有数据与窗口相关联是低效的。 要调用子类链中的下一个过程,不能转换旧窗口过程并调用它,必须使用CallWindowProc函数调用它。所以现在我们需要使用SetWindowSubCl...

2019-08-06 17:47:57 171

原创 自定义对话框(使用CreateDialog)

之所以写这篇文章,一方面是给后面的人提供一个参考,另一方面也是给自己复习。CreateDialog: 从对话框模板资源中创建非模态对话框。函数原型:void CreateDialog(hInstance, lpName, hWndParent, lpDialogFunc)第一个参数是模块句柄,一般就是输入hInstance,这个参数是窗口创建过程中就自动生成的。第二个参数很重要,涉...

2019-07-30 13:57:34 1157

转载 UTF8

原文转载:https://www.jianshu.com/p/eb68e3298b0butf-8和Unicode到底有什么区别?是存储方式不同?编码方式不同?它们看起来似乎很相似,但是实际上他们并不是同一个层次的概念要想先讲清楚他们的区别,首先应该讲讲Unicode的来由。众所周知,在盘古开天辟地之前,sorry ,走错片场了(⊙o⊙)…在计算机发明的时候 ,由于计算机你只能表示二进制...

2019-07-29 13:48:20 268

原创 如何使静态控件“透明”

需要自定义静态控件,且重绘控件背景,贴一个样例,仅供参考// Test_WM_CTLCOLORSTATIC.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "Test_WM_CTLCOLORSTATIC.h"#define MAX_LOADSTRING 100// ...

2019-07-25 16:45:29 159

翻译 如何在子控件上使用WS_EX_LAYERED

从Window 8开始,WS_EX_LAYERED可用于子控件。方法:需要清单文件,至少指定Window 8兼容性(子分层仅支持从Window 8开始)。对于想要使用分层子窗口的任何人,应将以下内容作为清单文件包含在内。<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> &...

2019-07-25 16:28:36 444

原创 GDI如何设置透明背景,以及设置静态控件背景颜色

首先,要熟悉WS_EX_LAYERED的概念,它是设置透明背景的重要参数。看代码: case WM_CREATE: { LONG Style = GetWindowLong(hWnd, GWL_EXSTYLE); //hWnd是主窗口句柄 SetWindowLong(hWnd, GWL_EXSTYLE, Style | WS_EX_LAYERED); ...

2019-07-24 11:37:15 743

原创 用python创建窗口

利用win32库可以做到这点,直接上代码import win32api, win32con, win32gui import win32gui_struct import ctypes from ctypes import * GUID_DEVINTERFACE_USB_DEVICE = "{A5DCBF10-6530-11D2-901F-00C04FB951ED}" class...

2019-07-23 10:58:35 1225

原创 创建Message-Only 窗口

Message-Only的作用是什么?根据MSDN的回答,只有消息窗口允许您发送和接收消息。它不可见,没有z顺序,无法枚举,并且不接收广播消息。窗口只是发送消息。要创建仅消息窗口,请在CreateWindowEx函数的hWndParent参数中指定HWND_MESSAGE常量或现有仅消息窗口的句柄。您还可以通过在SetParent函数的hWndNewParent参数中指定H...

2019-07-23 10:47:28 129

原创 总结一下进程句柄和“文件句柄”

进程句柄,顾名思义,一个进程所对应的句柄如何获得一个电脑上所运行的所有进程ID和进程Name?Demo:#include <stdio.h>#include <Windows.h>#include <winternl.h>#pragma comment(lib,"ntdll.lib") // Need to link with ntdll....

2019-07-22 17:09:33 280

原创 GetModuleFileName的用法

一般说来,要想获得一个文件的相对路径是极其重要的。比如项目的移植,代码里面加载项目的资源文件如果用的是绝对路径,就像C:\\....这样的,到其他的PC上面就改变了,就无法成功执行了。那么我们就需要用到GetModuleFileNameW下面一个简单的DEMO供大家参考,可以直接拷到电脑里面运行。#include <Windows.h>#include <Sh...

2019-07-19 11:40:12 1114

原创 Createprocess 和 ShellExecute

CreateProcess在MSDN里面的定义是:(机翻)创建一个新进程及其主线程。新进程在调用进程的安全上下文中运行。如果调用进程正在模拟其他用户,则新进程将使用该令牌进行调用,而不是模拟令牌。要在模拟令牌表示的用户的安全上下文中运行新进程,请使用CreateProcessAsUser或CreateProcessWithLogonW函数。MSDN官方文档(英语版):https:...

2019-07-19 10:35:51 345

原创 GetModuleHandle(NULL) 和 HINSTANCE的区别

在exe中,它们没有任何区别。hInstance和GetModuleHandle(NULL)从 WinMain()入口都引用相同的HINSTANCE(.exe文件的模块)。但是如果在DLL中创建窗口就会有所不同,因为你必须使用DLL中的 hInstance,但GetModuleHandle(NULL)仍然会返回exe中的HINSTANCE。...

2019-07-18 17:49:04 447

转载 数据结构对单链表进行数据排序

引用论坛的一个精华帖讲的还是很不错的https://bbs.csdn.net/topics/392201633

2019-06-17 10:20:48 761

原创 EnumWindow 样例

#include <windows.h>#include <cstdio>BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lparam){ int& i = *(reinterpret_cast<int*>(lparam)); ++i; char title[256];...

2019-05-31 18:07:21 85

翻译 获取windows窗口句柄

目前有几种方法可以获得ChildWindow句柄;FindWindowEx(使用父句柄,加上窗口标题),GetWindow(使用父句柄和Z-Order)和EnumChildWindows。想使用像FindWindowEx这样的东西,但这需要了解FindWindowsEx使用的TextBox(标题)的内容。如果TextBox内容是静态的,则此方法有效,但在大多数情况下,内容会发生变化,并且对于...

2019-05-31 14:11:10 4622

转载 EAP-TLS/EAP-TTLS/EAP-PEAP

原文:http://blog.chinaunix.net/uid-26422163-id-3457357.htmlIEEE的802.1X使用了EAP认证框架,因为EAP提供了可扩展的认证方法,但是这些认证方法的安全性完全取决于具体的认证方法,比如EAP-MD5、EAP-LEAP、EAP-GTC等,而802.1X最开始是为有线接入设计的,后来被用于无线网的接入,有线接入在安全性方面考虑毕竟...

2019-05-22 14:59:57 5976

转载 GetDIBits 遍历位图 获取像素的颜色值(RGB)

GetDIBits 遍历位图 获取像素的颜色值(RGB)CBitmap m_bmp;//根据位图资源导入之后的ID来获得位图m_bmp.LoadBitmap(IDB_BITMAP_ORIGIN);</pre>接下来就是通过GetDIBits函数来对位图的像素进行遍历,获取RGB BITMAP bm; m_bmp.GetBitmap(&bm); in...

2019-04-30 11:34:18 2103

转载 mciSendString在多线程里的应用

假设你正在学习游戏编程,随着学习的深入,终于要开始学习音乐播放了,能让自己编写的游戏播放音乐,那是件多么美好的事情啊!于是乎,你根据MCI的相关资料,简单编写了一个音乐播放程序,代码如下:Eg1:#include <Windows.h>#include <string>#include <iostream>#pragma comment(lib...

2019-04-29 14:16:22 445

转载 win32程序之子窗口编程

一丶简介.什么是子窗口  在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环.那么有很多窗口其实Windows已经帮我们创建出来了.我们直接使用即可. 而这些窗口都有自己的消息循环. 只有改变状态的时候.才会发送消息给我们的父窗口通知.此时我们捕获消息就可以进行处理了.子窗口其实就是绘制在主窗口的一个窗口. 这些窗口包含了 BUTTON (按钮控件...

2019-04-29 10:22:18 169 2

原创 自定义控件

// WindowsProject12.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "WindowsProject12.h"#define MAX_LOADSTRING 100#define IDC_STATIC_TEXT 1000// Global Variable...

2019-04-26 17:06:05 83

原创 虚拟按键的判断

intstat=GetAsyncKeyState(VK_SHIFT); boolis_pressed=stat&0x0001;//如果为真,表示按下过 boolis_pressing=stat&0x8000;//如果为真,表示正处于按下状态,展开为二进制来数,最高的一位就是15位 if (GetAs...

2019-04-26 11:33:05 218

翻译 如何尽可能简单的说明回调函数是什么?

“回调”是由另一个函数调用的任何函数,该函数将第一个函数作为参数。很多的时候,一个“回调”是一个时被调用函数事情发生。在程序员说话中,这个东西可以被称为“事件”。想象一下这种情况:您期待在几天内获得一个包。包裹是给邻居的礼物。因此,一旦你得到包裹,你想要它带到邻居。你不在城里,所以你要为你的配偶留下指示。您可以告诉他们获取包裹并将其带给邻居。如果你的配偶和计算机一样愚蠢,他们会坐在门口等待...

2019-04-15 18:43:12 60

转载 虚拟地址,虚拟地址空间, 交换分区

1.虚拟内存是内存管理的一种方式, 它在磁盘上划分出一块空间由操作系统管理,当物理内存耗尽是充当物理内存来使用。它将多个物理内存碎片和部分磁盘空间重定义为连续的地址空间,以此让程序认为自己拥有连续可用的内存。当物理内存不足时,操作系统会将处于不活动状态的程序以及它们的数据全部交换到磁盘上来释放物理内存,以供其它程序使用。2.虚拟地址空间:在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中...

2019-03-29 17:20:30 80

转载 大端和小端

什么是大端模式,什么是小端模式?所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;所谓小端模式(Little-endian), 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内在的低地址中,这种存储模式将地址的高低和数据位 权有...

2018-03-23 15:30:23 146

转载 逻辑指令BIC的用法

BIC―――――位清除指令指令格式:BIC{cond}{S} Rd,Rn,operand2 BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。...

2018-03-16 15:16:44 3078

转载 tolower()函数用法

头文件:#include <stdlib.h>定义函数:int tolower(int c);函数说明:若参数 c 为大写字母则将该对应的小写字母返回。返回值:返回转换后的小写字母,若不须转换则将参数c 值返回。范例:将s 字符串内的大写字母转换成小写字母。#include <ctype.h>int main(){ char s[] = "aBcDeFg...

2018-03-15 15:26:54 7055 1

原创 scanf( )与getchar( )区别的总结

第一:要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!读取字符时:scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);getchar()以Enter结束输入,也不会舍弃最后的回车符;读取字符串时:scanf()以Space、Enter、Tab结束一次输入gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符...

2018-03-15 15:18:29 950 1

空空如也

空空如也

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

TA关注的人 TA的粉丝

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