【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,一经查实,立即删除!

相关文章

柯西施瓦茨不等式证明过程

柯西-施瓦茨不等式(Cauchy-Schwarz Inequality)是数学分析中的一个重要不等式,它在向量空间、内积空间等多个领域都有广泛应用。对于实数或复数域上的内积空间,柯西-施瓦茨不等式可以表述为: 对于任意向量 u \mathbf…

Android Gradle 开发与应用 (七): Gradle 插件开发与发布

目录 一、概述 二、Gradle插件的基础知识 2.1 Gradle插件的定义 2.2 Gradle插件的种类 2.3 Gradle插件的生命周期 三、开发一个Gradle插件 3.1 创建Gradle插件项目 3.2 编写插件实现 3.3 配置插件元数据 3.4 构建和测试插件 3.5 在项目中应用插件 四、发布Gradle插…

计算机未来大方向的选择

选专业要了解自己的兴趣所在。 即想要学习什么样的专业,如果有明确的专业意向,就可以有针对性地选择那些专业实力较强的院校。 2.如果没有明确的专业意向,可以优先考虑一下院校。 确定一下自己想要选择综合性院校还是理工类院校或是像财经或者…

C语言结构体的相关知识

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

springboot集成gzip和zip数据压缩传输-满足2k数据自动压缩(适用大数据信息传输)

文章目录 1)、springboot的gzip压缩-满足2k数据自动压缩1.1后端压缩1.2前端解压1.3 满足最小响应大小(2KB)和指定MIME类型的响应进行GZIP压缩yml配置自定义配置或者使用Java配置 2)、gzip压缩1.1接口使用-数据压缩发送前端1.2 接口…

Java面试题系列 - 第3天

题目:Java集合框架详解与高效使用策略 背景说明:Java集合框架是Java标准库的重要组成部分,提供了一系列容器类,如List、Set、Map等,用于存储和操作集合数据。熟练掌握集合框架的使用,对于编写高效、健壮的…

机器学习之神经网络

简介 神经网络(Neural Network)是一种模仿人类大脑的机器学习算法,由一系列相互连接的神经元组成。它能够自动学习数据的特征和规律,并对新的输入数据进行预测和分类。 神经网络作为一种模仿生物大脑机制的机器学习算法,其产生和发展主要源于以下几个方面的背景: 对人脑认知…

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

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

template配置项详情——03

<body> // vue.config是vue全局配置对象 // productionTip 属性可能设置是否生产提示信息 //默认值是&#xff1a;true,如果是false 则表示组织生产提示信息 vue.congfig.productionTip false //指定挂载位置 //注意&#xff1a;以下代码只有vue框架能够看懂的代码。…

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

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

leetcode力扣_双指针问题

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

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

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

JavaScript——for in类型

目录 任务描述 相关知识 for in型 编程要求 任务描述 苹果apple有多个属性表示它的产地&#xff0c;比如locationProvince表示省份&#xff0c;这些属性都以location开头&#xff0c;和产地无关的属性都不以location开头。 本关任务&#xff1a;完成一个计算苹果产地的函数…

[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的调用 此时结果不对&#xff0c;因为&#xff1a;若是点击事件不传值&#xff0c;默认传的是event&#xff01;&#xff0c;所以&#xff0c;修改如下&#xff1a; 解决方式1&#xff1a; 解决方式2&#xff1a; 不推荐&#xff0c;写法麻烦&#xff01; 1-…

【Unity数据交互】二进制私

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 专栏交流&#x1f9e7;&…

Bootstrap 5 小工具

Bootstrap 5 小工具 Bootstrap 5 是一个流行的前端框架,它提供了一系列的工具和组件,帮助开发者快速构建响应式和移动优先的网页。在本文中,我们将探讨 Bootstrap 5 中的一些实用小工具,这些工具可以极大地提高开发效率和用户体验。 1. 网格系统 Bootstrap 5 的网格系统…

Laravel 宏指令(Macro)动态添加自定义方法到Laravel的核心组件中

Laravel 宏指令&#xff08;Macro&#xff09; 在Laravel中&#xff0c;宏指令&#xff08;Macro&#xff09;是一种灵活的方式&#xff0c;允许您动态添加自定义方法到Laravel的核心组件中&#xff0c;如模型、查询构建器、集合等&#xff0c;以便在不改变核心代码的情况下扩展…

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

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

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

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