【PB案例学习笔记】-27制作一个控制任务栏显示与隐藏的小程序

写在前面

这是PB案例学习笔记系列文章的第27篇,该系列文章适合具有一定PB基础的读者。

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

通过本案例我们将制作一个能够隐藏任务栏和显示任务栏的小程序。最终效果如下所示

任务栏隐藏显示

二、创作思路

Windwos操作系统的任务栏是以Shell_TrayWnd为名称的窗口对象,利用user32.dll提供的FindWindowExA外部扩展函数

可以获取任务栏的句柄,在利用外部函数ShowWindow外部扩展函数就可以控制任务栏的隐藏和显示。

三、创建程序基本框架

① 新建examplework工作区

② 新建exampleapp应用

③ 新建w_main窗口,并将其Title设置为“隐藏和显示任务栏”

由于文章篇幅原因,以上步骤不再赘述。如果小伙伴忘记怎么操作,可以翻一翻该系列第一篇文章复习一下

④ 布局控件

w_main窗口上新建2个CommandButton控件,名称依次为cb_1cb_2.其Text值分别为"隐藏任务栏"和“显示任务栏”

调整位置,使其布局如下图所示

页面布局

⑤ 保存窗口

四、编写代码

① 定义实例变量

Constant Long SW_HIDE = 0 
Constant Long SW_NORMAL = 1 
Constant Long SW_SHOWMINIMIZED = 2 
Constant Long SW_SHOWMAXIMIZED = 3 
Constant Long SW_SHOWNOACTIVATE = 4 
Constant Long SW_SHOW = 5 
Constant Long SW_MINIMIZE = 6 
Constant Long SW_SHOWMINNOACTIVE = 7 
Constant Long SW_SHOWNA = 8 
Constant Long SW_RESTORE = 9 
Constant Long SW_SHOWDEFAULT = 10 String ls_ShellTaskBarWnd = "Shell_TrayWnd" 
String ls_nullLong ll_HTaskBar, ll_HDeskTop 

② 定义外部函数

//获取窗口句柄
Function long FindWindowExA ( long hWnd, long hWndChild, ref string lpszClassName, ref string lpszWindow) library 'user32' 
//根据窗口句柄设置任务栏状态
Function long ShowWindow (long hWnd, long nCmdShow ) library 'user32' 

③ 在按钮cb_1clicked事件中添加如下代码

ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null ) 
ShowWindow( ll_HTaskBar, SW_HIDE ) 
MessageBox( '提示', '任务栏不见了!' ) 

④ 在按钮cb_2clicked事件中添加如下代码

ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null ) 
ShowWindow( ll_HTaskBar, SW_SHOW ) 
MessageBox( '提示', '任务栏又出现了!' ) 

⑤ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其open事件中添加如下代码

open(w_main)

五、运行程序

经过一波操作,我们来检验下最终的劳动成果

任务栏隐藏显示

本期内容到这儿就结束了 ★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所帮助

我们下期再见 ヾ(•ω•`)o (●’◡’●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言结构体的相关知识

前言 从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。 1.结构体类型的概念及定义 1.1、概念: 结构体是一种构造类型的数据结构, 是一种或多种基本类型或构造类型的数…

第11章 规划过程组(二)(11.8排列活动顺序)

第11章 规划过程组(二)11.8排列活动顺序,在第三版教材第390~391页; 文字图片音频方式 第一个知识点:主要工具与技术(重要知识点) 1、箭线图法(ADM) (双代号网络图或活动箭线图&am…

windows USB 设备驱动开发- 不同模型下的控制传输

在不同的模型下,USB控制传输会有不同的特点,但是任何控制传输的目标都始终是默认端点。 接收者是设备的实体,其信息(描述符、状态等)是主机感兴趣的。请求可进一步分为:配置请求、功能请求和状态请求。 发…

leetcode力扣_双指针问题

141. 环形链表 思路:判断链表中是否有环是经典的算法问题之一。常见的解决方案有多种,其中最经典、有效的一种方法是使用 快慢指针(Floyd’s Cycle-Finding Algorithm)。 初始化两个指针:一个快指针(fast&…

uni-app 使用Pinia进行全局状态管理并持久化数据

1.引言 最近在学习移动端的开发,使用uni-app前端应用框架,通过学习B站的视频以及找了一个开发模板,终于是有了一些心得体会。 B站视频1:Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2:01-课程和uni的…

[FFmpeg] windows下安装带gpu加速的ffmpeg

1.显卡能力排查 目前只有 NIVIDIA 支持 ffmpeg 的 gpu加速(AMD貌似也陆续开始支持)。 在下述网站中查找自己的显卡能够支持的编解码格式。https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-newhttps://developer.nvidia.com/video-encode-and-decod…

Vue88-Vuex中的mapActions、mapMutations

一、mapMutations的调用 此时结果不对,因为:若是点击事件不传值,默认传的是event!,所以,修改如下: 解决方式1: 解决方式2: 不推荐,写法麻烦! 1-…

【Unity数据交互】二进制私

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧&…

电脑硬盘分区的基本步骤(2个实用的硬盘分区方法)

在现代计算机中,硬盘分区是非常重要的一步。无论是新硬盘的初始化,还是重新组织现有硬盘,分区都是必不可少的操作。本文将详细介绍电脑硬盘分区的基本步骤,帮助您更好地管理和利用硬盘空间。 文章开始,我们先简单说一…

【C++】 解决 C++ 语言报错:Invalid Conversion from ‘const char*’ to ‘char*’

文章目录 引言 在 C 编程中,类型转换错误(Invalid Conversion)是常见的编译错误之一。特别是当程序试图将一个常量字符指针(const char*)转换为非常量字符指针(char*)时,会导致编译…

Vmware环境下ESXi主机 配置上行链路、虚拟交换机、端口组、VMkernel网卡

一、适用场景 1、使用专业服务器跑多种不同的业务,每种业务可能所需运行的server环境不同,有的需要Linux server CentOS7/8、kali、unbuntu……有的需要windows server2008、2003、2016、2019、2022…… 2、本例采用的是VMware ESXi6.7 update 3版本&am…

力扣习题--找不同

目录 前言 题目和解析 1、找不同 2、 思路和解析 总结 前言 本系列的所有习题均来自于力扣网站LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 题目和解析 1、找不同 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t…

Java Maven中自动代码检查插件详细介绍

文章目录 Checkstyle主要特点使用场景配置与使用checkstyle.xmlsuppressions.xml 验证打包时验证执行命令验证 Spotless配置文件内容Java配置部分POM 配置部分Markdown 配置部分Up to Date Checking执行部分 验证打包时验证在插件中执行命令验证 Checkstyle Spotless 结合chec…

redis学习(005 java客户端 RedisTemplate学习)

黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 总时长 42:48:00 共175P 此文章包含第16p-第p23的内容 文章目录 java客户端jedisSpringDataRedis项目实现hash哈希操作 java客户端 jedis 测试 ps:如果连接不上&…

vs2019 无法打开项目文件

vs2019 无法打开项目文件,无法找到 .NET SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配 原因:缺少组件 解决方案:选择需要的组件进行安装完成

步进电机改伺服电机

步进电机: 42:轴径5mm 57:轴径8mm 86:轴径14mm 【86CME120闭环】// 12牛米 伺服电机: 40: 60: 80: 86: ECMA——C 1 0910 R S 4.25A 轴径…

评价ChatGPT与强人工智能的未来

在人工智能领域,ChatGPT的出现无疑是一个里程碑事件。它不仅展示了自然语言处理技术的巨大进步,也引发了人们对于强人工智能(AGI)的无限遐想。本文将从多个角度评价ChatGPT,并探讨强人工智能距离我们还有多远。 ChatGP…

无人机运营合格证及无人机驾驶员合格证(AOPA)技术详解

无人机运营合格证及无人机驾驶员合格证(AOPA)技术详解如下: 一、无人机运营合格证 无人机运营合格证是无人机运营企业或个人必须获得的证书,以确保无人机在运营过程中符合相关法规和标准。对于无人机运营合格证的具体要求和申请…

无人机人员搜救

人员搜救-水域救援 水域搜救:快速水面搜查 物资抛投:救生物资抛投 绳索牵引:牵引救援绳索 领航船艇:水面侦察领航 人员搜救 昼夜搜救,精准定位 水域搜救 经纬 M300 RTK 搭载禅思 H20T 能够满足全天候作业需求&a…

新手教学系列——Git Stash踩坑

在之前的文章《如何彻底避免Git代码相互覆盖问题》中,我曾介绍过通过规范分支合并和使用git stash来避免代码覆盖问题。今天,我要深入探讨一下git stash的使用,并分享一些使用过程中遇到的坑,希望能帮你避免类似问题。 脚本mg.sh简介 为了更好地管理代码合并,我编写了一…