mfc总结2

句柄(英文:HANDLE 用来标识应用程序中的不同对象和同类中的不同的实例

句柄与普通指标识应用程序中的不同对象和同类中的不同的实例针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识

消息映射:在源文件的map里面,添加一条映射,第一个参数是id,第二个参数是自定义的函数名,设置好后再把OnBNClickedButton2函数名在头文件声明下,在源文件覆写该函数即可


先定义消息id:然后在按下按钮时候调用发送消息

先把消息(第一个参数)在map中声明下,在创建函数来处理消息当然这个MW_USER是我们计算的消息id,我们也可以注册一个消息id具体参考028视频


报错:解决方法把这个函数改成


消息拦截(子类化技术):更改控件的功能

实践:视频当中的拦截是在对话框初始化的函数中调用一个外部类的方法,将当前对话框的句柄当参数传进去,那么再写一个类,写这个函数的实现,可以对对话框输入的东西进行过滤输出。


创建进程的方法:

或者

学会查看进程号pid


第一句话是获得进程号为3420的进程句柄,如果该进程句柄存在就弹出打开成功对话框,当然当前进程要想对另外一个进程进行所有操作需要提升权限参见这个图片,在上面代码中调用raiseprivileges函数,然后在获取进程句柄


(注意加入提升权限的代码后功能是很强大的,当前对话框可以对系统级别的进程进行关闭操作)最后关闭进程时即可,当然pid是系统分配的,如果我们不知道pid是多少,可以将对话框的类名传进去,得到窗口句柄,然后通过窗口句柄获得pid,获得窗口类名方法使用spy++,拖动到计算器的窗口,点击确定得到该窗口类名(这里传参是窗口类名和窗口标题,也可以只传一个)


终止当前进程:终止其他进程


管道技术:提供了不同进程之间通信的方法

单管道实例:设计一个对话框,点击按钮可以在对话框显示ipconfig所有信息,思路如下


首先创建一个进程,该进程打开一个窗口,运行cmd指令。然后可以通过管道技术,将ipconfig传入,将信息通过管道读写到对话框里面,代码详见039,这是单管道,如果双管道,不仅可以读取数据,还可以将对话框输入的信息传到控制台


mfc当中的单例设计:保证软件单开不能多开

在mfc中使用互斥对象来保证只运行一个实例,例如自己做的对话框程序中在源文件当中有个initinstance函数用来初始化我们调用互斥对象函数判断,如果程序没有运行过,就直接运行,如果程序正在运行就返回false直接退出程序,来保证单例的实现


枚举进程:通过调用系统api可以显示出当前正在运行的所有进程以及每个进程的模块(dll)


hook(劫持):

可以对函数进行修改,暂停等等


钩子有许多种类,比如WH_GETMESSAGE可以截获消息并且修改,让你输入的a变成b,如果是HW_MOUSE可以截获你的鼠标消息,让鼠标点击没有反应

局部钩子(进程内钩子):当前的钩子只对当前的进程,对话框起作用,其他进程没用,

全局钩子(远程钩子):就是对全部进程起作用,但是需要dll动态链接库,因为这样才可以挂钩到全部进程当中,一般木马就是利用全局钩子记录用户的键盘记录

钩子也有好的一面:比如进程监控,垃圾邮件的清理

利用hook来监控学生上网玩游戏的例子:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值