栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言(2)多线程与简单操作应用窗口

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言(2)多线程与简单操作应用窗口

文章目录
    • 0、补充
    • 1、线程
    • 2、操作win窗口
        • 2.1、遇到的错误以及解决办法
    • 3、窗口操作的其他姿势
        • 3.1、创建父子窗口
        • 3.2、模拟操作系统给窗口发消息
        • 3.3、配置取消程序运行的黑窗口(可选)

0、补充
~程序运行时产生的黑窗口是可以隐藏的,具体过程可以百度谷歌

~在VC内,选择英文字母之后,
	
	ctrl+u				全部变小写

	ctrl+shift+u		全部变大写
1、线程
创建线程,要包含一个头文件:#include 

	“void*”表示空地址,
	
	“_beginthread”表示开启线程
	
	14行的代码,是弹出一个框,显示后边具体的字符串,


直接运行,旷课弹出之后秒退,无法看到到底弹了几个框,

主要是主线程没有暂停,一会就挂了,子线程自然也挂了;在主线程加一个“暂停”

再次运行,发现弹了5个框。这也是并发的好处,

这里有一个报错,如图所示。原因是这个地方选择的“x86”,改为“x64”解决,

2、操作win窗口
先打开电脑计算器,在打开这个Spy++,

按照图中箭头依次点击,可以获取到计算器这个窗口的标题与类(名称),下边的句柄会用到。

写一个程序来判断,电脑界面上有没有打开计算器这个窗口,假设找到了,则做一个闪烁效果,

没找到则弹出一个友好提示框,并返回一个错误。

	HWND是“句柄”即指针,后边两个参数一个是计算器的类名称,另一个是标题。

	11行,没找到对应的计算器窗口弹出一个友好的提示窗口

	12行,返回-1(错误)	、、貌似0或者不写也可以

	16行,将窗口隐藏;参数为句柄、对应操作

	17行,延时500毫秒

	18行,将窗口显示

直接运行,计算器打开了但是并没闪烁。
	
	没有弹框提示说明找到了,这个是我们没有使用循环,直接加一个死循环。

再次运行就会出现计算器一闪一闪的效果。
2.1、遇到的错误以及解决办法
运行程序报下边的错误,将30行的单引号改为双引号即可。


笔者理解:

这里主要是因为C语言之中,单引号一般只能用来包含‘ 字符 ’,

对于字符串只能使用双引号来包含
3、窗口操作的其他姿势 3.1、创建父子窗口
新建一个项目,选择“MFC应用”,

假设没有参考安装,https://blog.csdn.net/qq_35392239/article/details/109190131


“基于对话框”,

这里没有“类资源图”的话,快捷键“ctrl+shift+e”;或者“视图”--“其他窗口”--“资源视图”,

写入自己的代码,点击生成,

找到程序,点击按钮,弹出指定内容。

来简述下这个原理,其本质就是一个死循环,一直监听鼠标有没有点击对应的按钮。

	假设鼠标点击了,就弹窗。

但是电脑上有很多的应用都在监听鼠标和键盘等资源,这样不会乱吗,或者说谁的优先级更高呢?

	这一切其最底层都是由“操作系统”来监听。这个过程被称为“消息机制”

	操作系统来监听鼠标和键盘的动作,然后将监听到的动作发给不同在监听窗口的应用。

额外说明下,上述我们创建的窗口最外部是父窗口,里边“button1”是子窗口,

3.2、模拟操作系统给窗口发消息
了解这个原理,可以推出,我们是否可以“模拟”操作系统给对应正在监听的窗口发“假消息”呢?

	使用spy++获取子窗口信息(标题+类)


在获取下父窗口,父窗口因为我们没有给标题信息,所以只显示有一个类。

在上边提到的程序,魔改下,
	
	10行找到父窗口。具体函数每个参数是什么作用可以去百度找下。
	
	11行是找到子窗口,注意的是这个寻找子窗口的函数,使用的是“增强版查找”,
	
	这里多说下,不能直接寻找子窗口(会找不到),(貌似)只能通过父窗口寻找。

然后经过测试,这个不写父窗口的标题,无法找到。

返回VS,给父窗口加一个标题。

	下图的属性,可以在布局之中,右击“属性”;
	
	假设打开的是中文版本,则"Caption"对应的是“描述文字”


然后保存,重新生成,然后还是没有找到。最后忽略类名找到的,

最终的效果是,先手动打开刚刚新建的窗口,然后运行该程序会关闭掉新打开的窗口。

接下来,尝试操作子窗口;找到子窗口来关闭子窗口,


先打开这个exe,然后运行程序,看看效果。

当程序跑起来之后,这个按钮直接消失了。

当然,除了模拟发送关闭窗口的指令,还可以模拟点击该按钮的功能,

	改下指令就好了


,

双击生成的exe,


禁用按钮,

生成demo1并运行,程序的按钮直接变黑。

过了3秒,又可以点击了,

3.3、配置取消程序运行的黑窗口(可选)
有这个黑窗口还是太烦,配置下,


第二处配置,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号