
编程技术
噬梦罪犯
这个作者很懒,什么都没留下…
展开
-
互斥量,事件对象,信号量对象,关键代码段(临界区)
互斥量互斥量又称互斥锁。互斥量是一个可以处于两态之一的变量:解锁和加锁。如果不需要信号量的计数能力,有时可以使用信号量的一个简化版本,称为互斥量(mutex)。互斥量仅仅适用于管理共享资源或一小段代码。由于互斥量在实现时既容易又有效,这使得互斥量在实现用户空间线程包时非常有 用。为协调共同对一个共享资源的单独访问而设计的。#include <stdio.h>#include <windows.h>#include <process.h>#define N原创 2022-03-30 19:09:44 · 462 阅读 · 0 评论 -
WaitForMultipleObjects
作用等待直到一个或所有指定对象处于信号状态或超时间隔过去。句法DWORD WaitForMultipleObjects( [in] DWORD nCount, // 要监测的句柄的组的句柄的个数 [in] const HANDLE *lpHandles, //要监测的句柄的组 [in] BOOL bWaitAll,//TRUE 等待所有的内核对象发出信号 FALSE 任意一个内核对象发出信号 [in] DWORD dwMillise原创 2022-03-28 19:38:07 · 565 阅读 · 0 评论 -
WaitForSingleObject 函数
作用等待直到指定的对象处于信号状态或超时间隔过去。句法DWORD WaitForSingleObject( [in] HANDLE hHandle, [in] DWORD dwMilliseconds);参数解释[in] hHandle对象的句柄。有关可以指定其句柄的对象类型的列表,请参阅以下备注部分。如果在等待仍处于挂起状态时关闭此句柄,则函数的行为未定义。句柄必须具有SYNCHRONIZE访问权限。[in] dwMilliseconds超时间隔,以毫秒为单位。如果指定了原创 2022-03-28 17:52:50 · 952 阅读 · 0 评论 -
程序自启动与隐藏
##程序添加到启动项void AddToSystem(){ HKEY hKEY; char CurrentPath[MAX_PATH]; char SysPath[MAX_PATH]; long ret = 0; LPSTR FileNewName; LPSTR FileCurrentName; DWORD type = REG_SZ; DWORD size = MAX_PATH; LPCTSTR Rgspath = "Softwa原创 2022-03-26 18:29:41 · 635 阅读 · 0 评论 -
一种更优雅的 recv 和 send:超大数据的传输
一种更优雅的 recv 和 send:超大数据的传输int MySocketRecv0(int sock, char* buf, int dateSize){ //循环接收 int numsRecvSoFar = 0;//目前收到的数据 int numsRemainingToRecv = dateSize;//剩余要接收的数据 printf("enter MySocketRecv0\n"); while (1){ int bytes原创 2022-03-24 17:38:35 · 1125 阅读 · 0 评论 -
屏幕截图和发送
屏幕截图和发送要实现远程控制,被控端的屏幕监控是要解决的问题,在这里采用了屏幕截图发送的方式来实现屏幕实时监控在此项目里把截取的图片保存为png格式,并存于内存流中在进行发送//发送屏幕截图int SendScreen() { CImage screen;//GDI //GetDC()功能作用:检索指定窗口的客户区的显示上下文环境句柄 //参数1:指定窗口句柄 //返回值:返回值表示指定窗口区域的DC句柄,失败返回NULL HDC hScreen = ::Ge原创 2022-03-04 15:34:58 · 763 阅读 · 0 评论 -
Windows文件操作
获取磁盘分区原理:在windows中1,2,3,4分别表示A,B,C,D盘,最多到Z盘,基本没有超过26个盘的通过使用_chdrive()函数切换磁盘分区来判断有多少给磁盘分区int MakeDriverInfo() {//1==>A 2==>B 3==>C...26==>Z, //windows下最多有26个分区 std::string result; for (int i = 1; i <= 26; i++) {//遍历磁盘 i原创 2022-03-03 23:00:40 · 369 阅读 · 1 评论 -
包 的 设 计
包的设计在本项目中,会有文件操作,信息传输,故想着设计一个包来进行解决,并且进行了封装以及构造函数重载来方便操作详情见代码//包设计类class CPacket{public: //构造函数,初始化 CPacket():sHead(0),nLength(0),sCmd(0),sSum(0){} //数据包封包构造函数,用于把数据封装成数据包 //参数一:命令 参数二:数据指针 参数三:数据大小 CPacket(WORD nCmd, const BYTE* pData, size_t n原创 2022-03-03 19:03:10 · 340 阅读 · 5 评论 -
网络编程的设计
基于TCP/IP协议的C/S模型TCP/IP特点:面向连接的、可靠的、基于字节流的传输层协议。C/S 即 客户端/服务器 模型。服务端设计打开网络库//打开网络库,返回值为int类型,打开成功返回0 WSADATA data; if (WSAStartup(MAKEWORD(1, 1), &data) != 0) { return FALSE; } return TRUE;程序结束前一定要关闭网络库:WSACleanup();创建一个socketsocket:原创 2022-03-01 16:46:40 · 2059 阅读 · 0 评论