自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 接大学课程设计、毕设

课程设计、毕业设计

2023-10-13 11:28:11 135

原创 error: use of deleted function ‘std::mutex::mutex(const std::mutex&)

error: use of deleted function ‘std::mutex::mutex(const std::mutex&)

2022-03-07 16:15:47 2928 2

原创 RSA算法原理

RSA加密原理

2021-11-18 22:45:47 717

原创 计算机漏洞之源

色即是空,空既是色,受想行识,亦复如是 ————《般若波罗蜜心经》 冯诺依曼在实现电子计算机的时候,忽略了图灵机模型中对程序和数据的区分。将程序(规则集)和数据(状态集)放在了同一个物理设备-内存中。因此,现代计算机中对图灵机的实现存在着天然的瑕疵,由于没有明确的区分内存中的程序指令(规则)和普通的数据(状态)。...

2020-08-04 19:37:39 337

原创 VS修改项目属性无效的问题

前几天一直让我迷惑的是,我的VS2015怎么总是修改项目属性或者文件属性无效,假如我想从ANSCII改成UNICODE或者关掉GS保护、SDL检查,亦或者想修改一个CPP属性(从生成中排除),都不起作用,我还重装了一遍VS2015不顶用。这都折磨好几天了,后来也没怎么管,直到刚才突然发现原因,唉。原因,32、64位平台和Debug、Release版本一定要对应起来!!!...

2020-07-19 09:35:47 2236 10

原创 MFC编辑框回车输入窗口闪退的问题

自己的操作完成之后一定要直接返回,不要把回车消息继续交给MFC函数处理!!!也不知道微软怎么搞的,这个样子把回车消息递交给窗口就直接把窗口关掉了。BOOL CSSmallClassDlg::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == WM_KEYDOWN) { //是回车消息 并且 是你的编辑框上的 回车消息 if (pMsg-...

2020-06-06 18:08:45 1024

转载 vs2015如何写汇编(搭建汇编环境)

首先按照这个博客的步骤来:https://blog.csdn.net/u010486308/article/details/105495848?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%B1%87%E7%BC%96%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%20%20v...

2020-05-08 00:54:32 506

原创 MFC创建非模态窗口一闪而过、无响应的问题

之前在做MFC程序的时候遇到了一个问题,非模态窗口一旦创建(Create并ShowWindow函数)之后,在exe点击运行的时候这个非模态窗口总是一闪而过,在解决完一闪而过的问题又遇见了未响应的问题。(原因在下边) 我的程序是在一个线程池中的线程函数里,有一个Recv函数在等待接收消息,如果这个消息要程序建立一个窗口,则线程调用另一个创建窗口函数(这个函数包含Cre...

2020-03-11 17:58:36 2727 2

转载 C2504:未定义的基类

今天在做MFC的时候,总是编译报错:error C2504 :未定义基类 我是看另一个人的博客才发现错误的。 我的错误在于 B继承A,A父类,B子类。 由于某一个功能的需要错误的在A.h中 #include"B.h",而本来由于B继承A,所以B.h中也有 #include"A.h"。 即父类和子类的头文件互相包含了 具体的更广泛的原因:https://bl...

2020-03-01 20:32:46 4423

原创 bmp、jpg转换为icon图像

最近又在做MFC了,总是想把系统默认的MFC图标给换个好看的,网上找了许多下载icon图标的网站结果全是假的,不是让我充会员就是下载下来是bmp、jpg格式的,然后又想办法下载转换器(还背地里强制我下载几个捆绑软件)、用Windows自带的软件转换都不行,那样虽然转换了,但是背景是黑的还失真,有时候编译器还报错,折腾了半个下午,直到我发现了一个良心网站,现在这种不坑人的效果还好的真是良...

2020-02-22 18:48:50 706

原创 互斥量内核对象

互斥量对象有许多用途,它是使用最为频繁的内核对象之一,一般用来对多个进程访问同一块内存进行同步。同一进程中的线程同步用关键段或者Slim读写锁就行,比互斥量要快。HADNLE CreateMutex(PSECURITY_ATTRIBUTES psa,BOOL bInitialOwner,PCTSTR pszName);bInitialOwner:FALSE:互斥量线程ID和递...

2020-02-05 14:45:15 435

原创 Slim读写锁

和关键段不同的是区分读入者线程和写入者线程。读和写共用一个锁,后边的条件变量触发条件也是一个锁占用锁的时间越少越好,如果被长时间占用,那么其他线程总是在被等待的状态,对程序性能有影响。SRWLOCK结构体 包含于头文件 <Windows.h>VOID InitializeSRWLock(PSRELOCK SRWLock); ...

2020-02-04 22:33:25 286

原创 Windows线程池函数

Windows提供给了一个与 完成端口 相配套的线程池机制。1.以异步的方式调用函数 //工作项2.每隔一段时间调用一个函数 //计时项3.在内核对象触发的时候调用一个函数 //等待项4.在异步I/O请求完成的时候调用一个函数 //I/O项1.以异步的方式调用函数创建一个工作项,分多次提交任务。...

2020-02-04 19:07:42 581

原创 Windows作业内核对象

微软提供了一个作业内核对象,它能够使我们对一组进程进行一些限制,同时创建一个只包含一个进程的作业也非常有用,因为能对该进程添加平时不能施加的作用。例如设计一个服务器时,也许客户端会请求服务器的一些应用程序处理一些数据并返回,因为许多的客户端都可能连接到这个服务器,所以服务器应该限制客户端能请求的东西,避免客户端的独占许多的资源。这些限制包括分配给客户端请求的最大CPU时间、最小工作集最大工作集大...

2020-01-29 16:46:40 547

原创 APC机制

当系统创建一个线程的时候,会同时创建一个与线程相关的队列。这个队列被叫做异步过程调用(APC)队列。为了对线程中的APC队列中的项进行处理,线程必须 将自己设置为可提醒状态,只不过意味着我们的线程在执行的时候已经到达了一个点,在这个点上它能够处理被中断的情况,下边的六个函数能将线程设置为可提醒状态:BOOL SleepEx();DWORD WaitForSingleObjectEx();...

2020-01-26 20:57:49 554

原创 原子锁操作(全部)

注:当时笔记收录有遗录,后三个函数回值都是原来的值。volatil限定符告诉编译器不要对这个变量进行任何形式的优化,而是始终的从变量的内存中读取变量的值。该变量可能被应用程序以外 的代码所修改,比如操作系统、硬件、或者一个并发执行的线程对其的值进行修改,就要使这个限定符。volatil BOOL V1=NULL;如果有的时候不给BOOL(假如)加上volatil限定,编译器可能...

2020-01-25 18:56:51 1317

原创 Windows等待函数的值得注意的地方

之前在用到等待函数的时候,总是认为等待一个事件、信号量等等,但是忽视了进程线程对象也是一个可以等待的内核对象。进程或者线程内核对象(其中有一个BOOL类型)在创建的时候总是处于未触发状态,当进程线程终止的时候,操作系统会将其设置为触发状态,而且决回不到未触发的状态,但是如果等待的是事件,事件可是可以回到未触发的状态。DWORD WaitForSingleObject(HANDLE hOBj...

2020-01-25 18:48:39 178

原创 伪句柄转化为真句柄的方法

线程和进程是一个道理。 GetCurrentThread()函数其实返回的是无穷大,对于该线程来说就是伪句柄,在该线程中可以用这个值操作作用于本线。当把GetCurrent()的值传给子线程的时候,实际上传的是伪句柄,那么在子线程中对父线程的操作实际上是对自己子线程的操作,因为子线程中也是自己的伪句柄。 1.所以先GetCurrentThreadId(...

2020-01-09 11:45:22 234

原创 屏蔽键盘信息(低级键盘钩子)

我以介绍如何屏蔽PrtSc(PrintScreen)截屏键为例,标题中说的低级键盘钩子(WH_KEYBOARD_LL)是因为普通键盘钩子(WH_KEYBOARD)是无法过滤像截屏键这样的系统按键,屏蔽系统按键回了其余的自然不在话下。在低级键盘钩子函数里判断这个消息是否属于PrintScreen按键,如果是,就直接返回TRUE之前在介绍Windows钩子函数的时候说过,想屏蔽消息的话就直接返回一...

2019-12-31 11:12:25 2032

原创 全局键盘钩子

这是在系统的范围内截获键盘消息,所以需要全局键盘钩子,全局键盘钩子需要DLL文件的支持,这样系统才能把DLL强行的加载到进程中去。建立一个新的DLL文件,在DllMain()函数所在的CPP中添加:定义两个全局变量:钩子句柄和DLL模块句柄。HHOOK g_Hook = NULL;HINSTANCE g_Instance = NULL;在DllMain函数中保存DLL模块句柄,安装...

2019-12-31 10:39:23 1923

原创 Windows钩子原理及钩子函数

钩子大概原理:Windows下的应用程序大部分是基于消息模式机制的,一些CUI程序(CUI是基于文本的,它一般不会创建窗口或者进程消息而且不需要GUi)不是基于消息的。Windows下的应用程序都有一个消息过程函数,通过GetMessage()函数在消息队列中得到不同的消息来完成不同的功能。Windows操作系统提供的钩子机制的作用是来截取、监视系统的消息。Windows操作系统提供了很多不同...

2019-12-31 09:56:52 2072

原创 PE文件结构-导入表详解

当PE文件运行时,PE文件将被系统加载进入内存中,此时Windows加载器会定位所有的导入的函数或者将定位到的内容填写到可执行文件的某个位置供使用,这个定位是需要借助于可执行文件的导入表来实现的。导入表中存放了所使用的DLL模块名称及导入函数的名称或者函数序列。在PE文件中定位到PE头部的可选头的位置,可选头IMAGE_OPTIONAL_HEADER中最后一个成员:IMAGE_DATA_DI...

2019-12-30 20:10:36 1535

原创 PE文件结构

PE,即移植的执行体。在Windows平台下,所有的可执行文件(包括EXE文件、DLL文件、SYS文件、COM文件)均使用PE文件结构。使用PE文件结构的可执行文件也成为PE文件。Windows系统下的可执行文件中包含着各种数据,包括代码、数据、资源等。虽然windows系统下的可执行文件包含如此众多的类型数据,但其存放都是有序的、结构化的、完全依赖于PE文件结构对各种数据的管理。1.MZ...

2019-12-25 22:15:37 283

原创 远程线程注入

声明一下:这里的技术在Win10中对于系统的应用例如自带的计算器、记事本已经不起作用(有反注入技术)了。当初一直在想如何向计算器中注入一直没有成功,然而对自己写的应用程序进程仍然可以使用。当然过程中的系统快照等知识还是必要的,只能说是了解一下并关注一下关于系统快照等知识就行了。这里的 远程线程,并不是指跨计算机的,而是跨进程的,简单地说就是进程A要在进程B中创建一个线程。无论是木马或...

2019-12-15 14:35:55 880 1

原创 DLL程序的创建和调用方法

DLL(动态链接库),是一种可以被其他应用程序调用的程序模块,其中封装了可以调用的资源或函数,一个DLL文件可以被多个进程调用。动态链接库是在exe文件运行的时候被加载执行的,动态链接库可以减少可执行文件的体积,在需要的时候进入内存,将软件划分为多个模块,可以按照模块进行开发,当然在网络安全方面可以进行对某个特定进程的DLL注入。DLL程序的入口函数不是main()或者WinMain()函数,...

2019-12-14 23:05:06 830 1

原创 简单的多线程编程

相关API函数介绍:函数:HANDLE OpenThread( DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwThreadId)作用:利用线程ID获得线程句柄dwDesiredAcess:打开进程欲获得大的权限,一般PROCESS_ALL_ACCESSbInheritHandle:获得的句柄是否可以继承,一般不:FALSEdwT...

2019-08-10 21:44:56 228

原创 简单的服务器与客户端的连接(c++,TCP实现)

1.网络通信,首先计算机网络的基础知识得有,要了解TCP协议等等2.在一个工程下建立一个新的项目Sever用作服务器,解释全写在代码中:#include <winsock2.h>#include <windows.h>#include <tchar.h>#include <iostream>//所有的 Winsock 函数都是从 ...

2019-07-22 21:44:49 1566

原创 MFC中SQL Sever数据库的增删查改

1.首先得要ADO中connection对象链接数据库2.然后介绍记录集对象:_RecordsetPt 类型 :这相当于数据库中的一个表的对象3.奉出我当时具体的代码,这是添加在按钮事件通知函数中,详细解释在代码的后边增加: //创建记录集 _RecordsetPtr m_pRecordset; m_pRecordset.CreateInsta...

2019-07-16 17:29:49 2305 3

原创 MFC与SQL Sever的连接

MFC与SQL Sever的连接方式有多种,我用的是ADO1.首先要导入ADO动态链接库:在stdafx.h头文件中导入如下:#import "C://Program Files//Common Files//System//ADO//msado15.dll" rename("EOF","adoEOF") 如果这样vs提示报红,或者在以后的connect类型不能识别,或者编译时...

2019-07-15 13:23:48 1204 3

原创 MFC插入背景图片

1.先将想插入的图片转化为bmp格式: 方法:右击图片->其他打开方式->选择"画图"软件打开,打开之后选择左上角文件,再选择另存为在里边选择24位bmp格式保存。2.将保存好的图片复制到项目文件夹下和项目名称相同的文件中一个名字叫res的文件里边3.打开资源视图,右击.rc文件,单击添加资源,弹出窗口后,选择Bitmap,选择导入,打开res文件夹如果发现...

2019-07-14 11:07:20 1883 1

原创 Kruskal算法(c++实现)

算法原理:1.将边的权值从小到大排列;2.构造辅助数组root[n](n为节点个数)3.按照边的权值从小到大的顺序考察各条边;4.关键:如何判别被考察边的两个顶点是否位于两个连通分量(用到辅助函数);先将辅助函数各项初始化为-1,如果root[i]为-1;则顶点就为该连通分量的“跟”,对于边(u,v),设v1,v2分别为两个顶点所在的连通分量的根节点;如果v1不等于v2,则u,v必...

2019-05-14 23:10:24 9579 6

原创 MFC下拉框的使用

1.右击对话空点击属性,在工具箱中找到Combo Box 添加下拉框:2.在下拉框上右击添加变量:改为私有类型,给下拉框起名为edit13.(重要)现在下拉框的属性中找到Order这项,把其中的值改为False,这样在初始化下拉框中的选项的时候会根据你写代码的顺序而不是ASSIC顺序打开类视图,双击MFCApplication1下边出现cpp文件点击OninitD...

2019-04-22 21:33:29 10759 9

原创 MFC编辑框的使用

1.编辑框的创建:打开资源视图中的控件选择Edit Control2.编辑框的属性修正鼠标移到编辑框,右击属性,把Multiline(可输入多行),Want Return(接受回车),Auto VScroll(垂直无限输入),Vertical Scroll(竖直下拉框),Horizontal Scrol(左右拉框)改为true3.下拉框的添加变量,右击编辑框,点击添加变量,...

2019-04-19 11:19:21 13210

原创 MFC中ON_CAHR、ON_KEYDOWN(键盘消息)无法实现的解决方法

1.在mfc中的对话框中,影射了WM_CHAR和WM_KEYDOWN消息后,但是对话框不能响应ONKEYDOWN和ONCHAR函数2.原因:MFC在进行设计的时候,这两个消息被对话框上的控件截获了,不能到达两个消息响应函数3(假定需要实现键盘消息(ONCHAR为例)是我的WINDOWTHREE对话框).解决方法:重写PreTranslateMessage函数:步骤如下:打开类视图,找到...

2019-04-18 22:38:57 2764

原创 底层窗口的实现

这篇博客其实只是了解,没必要完全理解并搞清楚每一个步骤的含义:1.首先了解一下什么叫 句柄:句柄是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。2.下载MSDN软件并学会...

2019-04-18 20:26:24 379

原创 利用MFC快速向导建立一个简单的窗口的步骤(1)

1.建立MFC应用程序单击确定: 2.勾上基于对话框,点击完成3.打开资源视图,右击Dialog,点击 插入Dialog4.左边的资源视图,会多出来一个IDD_DIALOG1(一个窗口的ID)双击它就能得到新添加的空白窗口,可以这样说,一个窗口就是一个类,所以鼠标移到新建的窗口,右击,单击 添加类,然后给这个窗口类起一个名字WINDOWFIRST(...

2019-04-18 20:03:39 2926

原创 c++火车车厢重排问题(队列实现)

问题描述:入轨上的火车车厢号顺序:581742963,火车头利用三个缓冲轨道,在出轨上排成顺序:12345678示意图:主要思路:1.先检测入轨队列、三个缓冲队列的队头元素是否等于即将要排的火车序号,如果等于,将其加入出轨队列2.如果入轨队列队头元素不等于将要排的火车车厢序号: (1)将入轨队列队头元素压入一个非满的缓冲队列,并且压入的元素要大于该缓冲队列的...

2019-03-29 23:01:24 9070 4

原创 c++从文件中以string数组的形式读取信息(可以读取到每一个元素)

大一c++程序设计课设中,我做的是学生成绩管理系统,其中就涉及到从文件中读取学生信息。《c++程序设计基础》中关于读取 文件信息的介绍少之又少,而当时的要求是需要把文件中的学生信息以一个string数组的形式读取出来,也就是说,读取来的元素可以定位到每一行每一列的具体元素,并可以对其进行删除、修改。我当时对文件的操作思路主要是:把文件中学生的信息用string数组的形式读取出来,然后在string...

2019-03-28 00:01:05 4764

原创 中缀表达式转后缀表达式求值

刚开始想一鼓作气把整个过程全部实现,但白费了那几个小时,调试了半天也没做出来,后来我是通过先实现中缀表达式转化为后缀表达式,然后实现后缀表达式的求值,然后将两块代码进行合成,刚才同学还笑着说:模块化编程。。。直接在代码中解释。中缀表达式转后缀表达式:# include <iostream># include <string># include &lt...

2019-03-27 17:29:59 3816

原创 int型和string型的相互转换以及使用stringstream流失效的问题

通常在读文件或者是写文件我们经常用一个string二维数组来实现,其中有的数据则需要转换为int型来进行运算我们通过stringstream流来实现,可以实现任意类型到string的转换,本篇用int和string来举例说明# include <iostream># include <sstream># include <string>usin...

2019-03-21 18:11:27 969 1

空空如也

空空如也

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

TA关注的人

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