![](https://img-blog.csdnimg.cn/20210303165515374.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Windows程序设计
文章平均质量分 63
Windows程序设计,win32项目工程,无UI设计界面的程序,Windows底层开发
呆萌宝儿姐
CSDN专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
-
Windows程序设计打开另一个程序的三种方法
均已打开 记事本(notepad)为例注意:打开其他程序时有的方法不可行,可都使用一遍进行测试1、创建一个新线程打开应用 PROCESS_INFORMATION processInfo; char dir[MAX_PATH] ; char cCmdLine[MAX_PATH]; DWORD dwExitCode; STARTUPINFO si = { sizeof(si) };...原创 2020-03-27 16:28:21 · 5877 阅读 · 0 评论 -
Windows开发——多线程同步技术
本文内容较为详细,关于更简短的一篇介绍,请看这里:https://blog.csdn.net/weixin_45525272/article/details/105057120多线程同步技术在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进...原创 2020-03-23 20:47:37 · 3591 阅读 · 0 评论 -
Windows技术篇——进程、线程、消息机制进程间通信
概念192.168.0.1–192.168.0.255一、进程状态1、创建状态:进程由创建而产生。2、就绪状态:指进程已准备好运行状态,即进程已分配到除CPU以外所有的必要资源后,只要再获得CPU,合可立即执行。(有执行资格,没有执行权的进程)3、运行状态:指进程已经获取CPU,其进程处于正在执行的状态。(既有执行资格,又有执行权的进程)4、阻塞状态:指正在执行的进程由于发生某事件(如...原创 2020-03-24 16:52:06 · 3855 阅读 · 0 评论 -
Windows开发——临界区,互斥量,信号量,事件的简单介绍与区别
四种进程或线程同步互斥的控制方法:1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意...原创 2020-03-23 20:44:05 · 4288 阅读 · 0 评论 -
Windows多线程——临界区、事件、互斥量、信号量详解加代码
一、【临界区】每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界 资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区, 进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程 必须互斥地对它进行访问。多个进程中涉及到同一个临界资源的临界区称为相关临界区。【进程进入临界区的调度原则】如果有若干进程要求进入空闲的临界区,一...原创 2020-03-25 11:07:20 · 4471 阅读 · 0 评论 -
MFC的Serialize机制及其使用
MFC提供了非常方便的串行化函数Serialize()。利用这个机制可以很方便的对文档进行存取和读取。Serialization就是面向对象世界里面的永久生存机制,对象必须能够永久生存,也就是他们必须能够在程序结束时存储到文件当中,并且能够在程序重新激活时在恢复过来,存储和恢复对象的过程在MFC称之为Serialization,负责这项重要任务的是MFC Object类中的一个名为Serialize()的虚函数,文件的读写操作均通过它来方便的完成。可以先了解下...原创 2020-06-11 16:48:16 · 5088 阅读 · 0 评论 -
Socket的基本操作函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()
文章目录Socket的基本操作函数1、socket()函数1.1、 命名socket网络字节序与主机字节序:2、bind()函数3、listen()、connect()函数4、accept()函数5、recv()、send()等函数同步Socket的send函数的执行流程注意:同步Socket的recv函数的执行流程注意:6、select()函数理解select模型:select模型的特点:7、close()/shutdown()函数注:多进程中close操作解释close与shutdown的区别Soc原创 2020-08-01 16:53:44 · 11685 阅读 · 1 评论 -
宏定义WM_USER,与自定义宏WM_USER+100
一、WM_USER为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用。二、自定义宏 #define 宏名 WM_USER+100例如:#define WM_MY_TRAY_NOTIFICATION WM_USER+100Windows 利用C API编写的宏指导语句语法意思是:用 {WM_USER+100} 替换 {WM_MY_TRAY_NOTIFICATION}单元语义原创 2020-05-29 15:33:25 · 6035 阅读 · 1 评论 -
网络编程——基本名词术语解析
文章目录路由(route)路由(名词)路由(动词)路由器工作原理路由表(Routing Table)路由条目缺省路由条目路由节点以太网交换机工作原理hub工作原理半双工/全双工DNS服务器局域网(LAN)广域网(WAN)端口MTU路由(route)路由(名词)数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。路由(动词)某个路由节点为数据包选择投递方向的选路过程。路由器工作原理路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径原创 2020-10-28 19:43:06 · 4272 阅读 · 0 评论 -
Windows套接字CAsyncSocket类的使用
TCP编程的服务器端一般步骤是:1、创建一个CAsyncSocket或CSocket类或其子类对象A,用于监听客户端连接,然后通过Create函数设定端口号和协议类型为SOCK_STREAM。2、开启监听,用函数Listen();3、接收客户端上来的连接,用函数Accept(&B);并且把连接连接的对象存到B中,以便通信使用。4、当客户端发送来消息时,会触发OnReceive函数...原创 2020-04-01 14:51:26 · 3838 阅读 · 0 评论 -
Windows 网络通信套接字技术
一、TCP/IP介绍1、TCP/IP体系结构TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输 层服务,而IP则是提供网络层服务。TCP/IP协议包括如下协议,其结构如图所示。IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。 同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。ARP: ...原创 2020-04-05 15:59:24 · 4492 阅读 · 1 评论 -
Windows网络通信流量和网速监控设计(一)
文章目录三种数据通信传输模式一、单工通信二、半双工通信三、全双工通信相关基础知识1、__stdcall2、三种数据通信传输模式一、单工通信数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送数据信息,不能实现双向通信。比较安全,例如:广播、电视。二、半双工通信传输允许数据在两个方向上传输;在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送消息,可以实现双向通信。例如:对讲机。三、全双工通信数据通信允许数据同时在两个方向上传输原创 2020-06-01 19:40:20 · 5498 阅读 · 0 评论 -
IP地址和账号密码之间的关系
IP地址相当于是每一个计算机唯一的身份证号码,就象你的身份证一样,每个人的号码都不一样的,不可能有其他人的身份证号码也跟你一样的,处于局域网的环境中,例如你的计算机的ip设置是192.168.2.10而另外一台计算机的ip也设置成192.168.2.10,那么就会导致ip与其他系统冲突。IP地址是指互联网协议地址,它是网络给主机分配的逻辑地址,以此屏蔽物理地址差异。先说一下IP地址的获取方式,自己手动指定(静态IP),通过DHCP服务器下发(动态获取)。局域网中使用静态IP:当你手动指定IP时,刚好别先手原创 2020-05-26 18:46:13 · 5610 阅读 · 1 评论 -
Windows套接字——读取和写入配置文件
写入配置文件 CString IP, Port; UpdateData(TRUE); // 将应用程序控件上面的IP和端口 更新至对应的成员变量 IP = m_IpAddress.GetString(); // 读取成员变量控件上面的IP地址将赋给strIP变量 Port.Format(L"%d", m_iPort); // 读取成员变量控件上面的端口将赋给m_iPort变量 Wri...原创 2020-03-29 18:12:16 · 3580 阅读 · 0 评论 -
Windows——CArchive类
CArchive 对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。...原创 2020-06-11 16:44:46 · 4383 阅读 · 0 评论 -
TCP状态转换图文解说
文章目录一、TCP状态转换图说明状态转换图二、名次解释2MSL半关闭补充:Linux命令:查看网络相关状态补充:端口复用FIN_WAIT2TIME_WAIT一、TCP状态转换图说明状态转换图TCP初始化时从CLOSED状态启动,通常根据是执行主动打开操作(客户端请求)还是被动打开操作(服务器接收请求),TCP将分别转换到SYN_SENT或LISTEN状态。正常情况下处于这两个状态下的两者由此建立了连接,这就是三次握手过程。左下方的FIN_WAIT_1、FIN_WAIT_2以及TIME_W原创 2020-10-28 19:30:46 · 4608 阅读 · 0 评论 -
C++控制台实现客户端与服务端即时通信(C/S)
文章目录运用知识源代码服务器客户端运用知识这次的知识都在源代码中 可结合查看ps:通信只设定了五次,do while换成while(1)再判断一下是否退出即可源代码服务器// server.cpp#include <iostream>#include <cstdio>#include <Winsock2.h>#include<string.h>#pragma comment(lib, "ws2_32.lib")using nam原创 2020-07-31 19:18:45 · 4567 阅读 · 0 评论 -
Windows技术篇——Socket技术(套接字)初步内容详解
详细内容请见书Windows程序设计珍藏版1081页或请见文章:https://www.jianshu.com/p/066d99da7cbd原创 2020-03-24 16:04:43 · 3569 阅读 · 0 评论 -
Windows技术篇——Socket粘包问题
一 .两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.二 ....原创 2020-03-24 16:17:14 · 4547 阅读 · 0 评论 -
Windows Sockets网络编程读书笔记(及简单C/S实现)
文章目录简单介绍Socket1 WindowsSockets 简介2 套接字的两种主要形式3 在 VC 下开发套接字程序3. 1 在 VC 下开发套接字程序的基本步骤3. 2 回调函数的使用3. 3 利用多线程技术来开发网络通信3. 4 使用多线程进行套接字编程时应注意同步问题代码实现客户端服务端简单介绍Socket1 WindowsSockets 简介Windows sockets(简称 ...原创 2020-04-21 16:48:01 · 4179 阅读 · 0 评论 -
Windows网络通信流量和网速监控设计(二)
结果视图:.h代码:#pragma once#include "afxwin.h"#define WMMY_NETWORKER_MESSAGE WM_USER+100// CMyNetCheckSystemDlg 对话框class CMyNetCheckSystemDlg : public CDialogEx{// 构造public: CMyNetCheckSystemDlg(CWnd* pParent = NULL); // 标准构造函数// 对话框数据 enum {原创 2020-06-01 20:26:11 · 4645 阅读 · 0 评论 -
C/C++ 自制一个基于zlib的文件的(解)压缩系统
文章目录项目展示项目开发编译设置1. Debug/Release编译模式下的编译设置设计思路1. 数据或文件的压缩思路2. 数据或文件的解压缩思路编码实现1. 导入ZLIB库文件2. 文件压缩3. 文件解压缩4. 将数据保存为文件程序测试项目链接项目展示项目开发编译设置1. Debug/Release编译模式下的编译设置首先,打开项目工程的属性页,然后将SDK和“平台工具集”选为“你当前的SDK和平台工具集”。例如我是 SDK 10 平台工具集 v141。接着,展开“C/C++”,点击原创 2021-11-11 22:48:18 · 4057 阅读 · 1 评论 -
Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
文章目录Hook(Windows系统机制)Hook定义Hook原理系统钩子与线程钩子钩子函数设置钩子: SetWindowsHookEx参数说明:释放钩子: UnhookWindowsHookEx继续钩子: CallNextHookExHook小案例Hook(Windows系统机制)Hook定义Hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或 “钩子” 。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程 序就会收到系统的通原创 2021-10-30 17:06:18 · 2973 阅读 · 0 评论 -
Windows下静态、动态库的封装和使用(图解)
动态库的封装和使用库的基本概念库是已经写好的、成熟的、可复用的代码。每个程序都需要依赖很多底层库,不可能每个人的代码从零开始编写代码,因此库的存在具有非常重要的意义。在我们的开发的应用中经常有一些公共代码是需要反复使用的,就把这些代码编译为库文件。库可以简单看成一组目标文件的集合,将这些目标文件经过压缩打包之后形成的一个文件。像在Windows这样的平台上,最常用的c语言库是由集成按开发环境所附带的运行库,这些库一般由编译厂商提供。12.2 windows下静态库创建和使用12.2.1 静态库的原创 2021-10-29 17:35:48 · 3380 阅读 · 0 评论 -
C++ 输入按键名按下对应按键
#include <windows.h>#include <iostream>#include <string.h>using namespace std;typedef struct KeyInfo { char *info; int key;};KeyInfo ki[200] = {"回退", 0x08,"TAB", 0x09,"CLEAR", 0x0C,"回车", 0x0D,"SHIFT", 0x10,"CONTROL", 0x1原创 2021-05-06 13:49:20 · 3668 阅读 · 3 评论 -
C++ 让电脑关机,重启,注销
不展示了,一运行关机了就代码#include <windows.h>#include <iostream>#include <string.h>using namespace std;//功能实现 BOOL ReSetWindows(DWORD dwFlags, BOOL bForce){ //检查参数是否正确 if (dwFlags != EWX_LOGOFF && dwFlags != EWX_REBOOT &&原创 2021-05-06 13:44:27 · 3408 阅读 · 0 评论 -
C++ 使得窗口置顶(终极方案)
一般方案#include <windows.h>int main(int argc, char *argv[]){ HWND hWnd = ::GetForegroundWindow(); ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 100, 100, SWP_NOMOVE | SWP_NOSIZE); return FALSE;}终极方案将当前线程附到新的置顶线程上,再置顶#include <windows.h&g.原创 2021-05-06 13:43:01 · 9954 阅读 · 0 评论 -
C++ 让窗体最大最小化
最大化#include <windows.h>int main(int argc, char *argv[]){ HWND hWnd = ::GetForegroundWindow(); ShowWindow(hWnd, SW_MAXIMIZE);//最大化 hwnd 所代表的窗口 }最小化#include <windows.h>int main(int argc, char *argv[]){ HWND hWnd = ::GetForegroundW原创 2021-05-06 13:37:54 · 3230 阅读 · 1 评论 -
C++ 关闭窗口并杀掉进程
#include <windows.h>// 关闭窗口杀掉程序BOOL FindProcessHandleAndKill(HWND hWnd){ DWORD ProcessID; HANDLE hProcess; if (hWnd == NULL) { return FALSE; } else { if (GetWindowThreadProcessId(hWnd, &ProcessID) == 0)//ハʍ原创 2021-05-06 13:36:04 · 4406 阅读 · 1 评论 -
C++ 使窗口最大化最小化
ShowWindow函数代码里配合了检测键盘的功能检测键盘:http://blog.csdn.net/everlasting_20141622/article/details/52222006#include<windows.h>#include<cstdio>#include<iostream>#include<conio.h> #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)原创 2021-04-11 08:58:59 · 5864 阅读 · 1 评论 -
Windows编程——消息机制
文章目录1. 消息机制1.1 得到消息1.2 发送消息2. 基本消息windows程序模块系统命令消息代码示例1. 消息机制windows操作系统最大的特色是良好的用户交互性,这种交互性通过优秀的图形界面来实现Windows操作系统将用户对应用程序窗口的所有操作(键盘按键、鼠标点击、窗口最大最小化等等)转化为Windows消息并分发给应用程序,应用程序对这些消息进行响应,从而实现用户对操作系统以及应用程序的控制这种产生消息、传递消息、处理消息的过程被称为Windows消息机制 。Windows操作原创 2021-04-07 23:32:16 · 3966 阅读 · 0 评论 -
键盘VK键值完整表
转载于https://blog.csdn.net/qq_42673507/article/details/86699946键盘VK键值列表/* Virtual Keys, Standard Set*/VK_LBUTTON 0x01VK_RBUTTON 0x02VK_CANCEL 0x0原创 2021-04-07 23:09:51 · 10325 阅读 · 1 评论 -
上才艺——win32搞一个拼图游戏
今天有人说,天天拖控件好没意思啊,你能不能不用拖控件写一个小游戏,作为一名C/C++程序员话不多说,直接上才艺这是游戏的效果图搞错了,再来!!!!!代码构思先创建一个Windows桌面应用程序拿到一个基本框架再想 这个拼图游戏要啦些功能(绘制游戏界面,判断胜利,交换位置移动图片…)首先定义整个游戏要用到的变量#define NEXT 10//定义宽高#define WIDTH 130#define HEIGHT 130//定义数组int map[10][10];//定义设备原创 2021-03-16 10:41:30 · 5067 阅读 · 7 评论 -
Windows程序设计——GDI字符及图形标准输出标准输出
以下是完成输出文字的代码部分#include <Windows.h> // windows程序所依赖的头文件#pragma comment(lib,"winmm.lib")#define WINDOW_WIDTH 800 // 窗口宽度#define WINDOW_HEIGHT 600 // 窗口高度#define WINDOW...原创 2020-02-12 15:10:06 · 3922 阅读 · 0 评论 -
Windows程序设计——窗口键盘消息滚动事件
设置头文件#include <Windows.h>#include "systems.h"以下是头文件内容#pragma once#include <Windows.h>#define NUMLINES ((int)(sizeof sysmetrics/sizeof sysmetrics[0]))struct { int Index; char sz...原创 2020-02-12 14:16:34 · 3821 阅读 · 1 评论 -
USES_CONVERSION宏定义
USES_CONVERSION是用来转换类型的(比如T2A等转换需用此宏),比如我们很常见的问题:在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_addr却是const char *我们就不能直接用CString来用。我们就可以使用T2A()宏了。 SOCKADDR_IN localaddr; ...原创 2020-04-01 16:02:12 · 4876 阅读 · 1 评论 -
A2W W2A A2T T2A _T() 含义以及用法
A2W、W2A、A2T、T2A _T() 的含义及使用方法1、A2W和W2A在《Window核心编程》,多字节和宽字节之间转换比较麻烦的,MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。那么使用ATL的一个很好的字符串的转换宏:A2W和W2A。char:8位字节类型,表示ASCII码WCHAR:16位字符类型,表示Un...原创 2020-04-01 15:45:08 · 5909 阅读 · 0 评论 -
Windows API——CFile, read, write,typeBinary函数
文件操作API和CFile类在VC中,操作文件的方法有两种,一是利用一些API函数来创建,打开,读写文件,另外一个是利用MFC的CFile类,CFile封装了对文件的一般操作。下面酒主要介绍如何利用这两种方法操作文件。1.创建或打开一个文件API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以及控制台,但是在此时只是介绍用这个函数怎么实现创建和打开一个文件。HANDL...原创 2020-03-29 15:34:40 · 5417 阅读 · 0 评论 -
BYTE、WORD与DWORD类型
在Visual C++ 6.0中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下:typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned long DWORD;也就是说BYTE是无符号的char型(char型本质上也是一...原创 2020-03-24 15:44:22 · 5108 阅读 · 0 评论 -
Windows程序设计——Win32下获取当前系统时间和计算两个时间差的方法
注意:控制台需要加 #include “atltime.h” 头文件#include "stdafx.h" #include "atltime.h"#include <iostream>using namespace std; int _tmain(int argc, _TCHAR* argv[]){ CString strTime; //用于将CTime对象格式...原创 2020-03-23 14:47:01 · 3083 阅读 · 0 评论