pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

还有关不掉的窗体?

先来看下效果:

2e70ef0403b4ab169c429b341b771663.gif

通过上图,大家很容易看出二者之间的区别,有些情况下,我们需要这种窗体,比如网页中弹出的广告,没有关闭按钮,用户无法关闭。那怎么创建一个无标题栏的窗体呢?Excel本身并没有提供一种直接的方法来显示无标题栏的用户窗体,只能借助于API函数实现。上述案例中无标题栏窗体的创建方法如下:一、在VBE中添加窗体,插入一个Label,Caption属性按图中进行修改。这里有一个问题,在Label中输入文字后需要断行怎么断?按Ctrl+Enter。二、双击窗体,在窗体中输入如下代码:
#If VBA7 And Win64 Then    Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long    Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long    Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long    Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long#Else    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long    Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long    Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long#End IfConst GWL_STYLE = -16Const WS_CAPTION = &HC00000Private Sub UserForm_Initialize()    Dim lngWindow As Long, lFrmHdl As Long    lFrmHdl = FindWindowA(vbNullString, Me.Caption)    lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)    lngWindow = lngWindow And Not WS_CAPTION    Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)    Call DrawMenuBar(lFrmHdl)End Sub

向左滑动可以查看完整代码

看着很复杂,难在对四个API函数的理解上,梳理下,其实也没那么复杂。整段代码分两部分,第一部分,因为要使用API函数,所以要进行声明,因为涉及到32位和64的office版本,所以声明时用#If VBA7 And Win64 Then#Else#End If的结构。64位的Excel中相比32位的Excel声明API函数就多了一个关键字PtrSafe,其它的都一样,而每个API函数的声明在网上都可以查到,所以这些没必要记,只要知道哪个API函数可以干什么事情就可以了。Sub过程部分,在窗体初始化时,首先要FindWindowA函数获取到这个窗体的句柄。关于句柄(handle),大家可以百度,简单理解的话就是每打开一个窗口,系统就会给该窗口分配一个句柄,系统想要对这个窗口做出响应是要通过该句柄进行的。就像公司给每个员工分配一个工号道理差不多。获取到该窗体的句柄后,通过GetWindowLong函数获取到该窗口的信息,GWL_STYLE为该函数的第二个参数的一个常量,表示要获取的窗口样式。lngWindow = lngWindow And Not WS_CAPTION表示从获取到的窗口样式中除去WS_CAPTION(窗体的标题),即lngWindow代表的样式为无标题样式。然后用SetWindowLong函数为窗口重新设置信息,然后用DrawMenuBar函数重画窗口。以上便是无标题窗口的创建方法。

本节的分享就到这里,鹏哥祝大家每天都有进步。

聚米为谷

博学宏才

更多学习内容

手机端请扫描

c559d552bb40041dbf95653c99342474.png

电脑端请登录

www.mihong.top

346d5b5d288598bd44e396f1de77e989.gif您点的每个赞,我都认真当成了喜欢

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

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

相关文章

python mysql驱动写入datetime类型的数据_解决python写入mysql中datetime类型遇到的问题...

刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题:在mysql数据库中,有一个datetime类型的字段用于存储记录的日期时间值。python程序中有对应的一个datetime变量dt。现在需要往mysql数据库中添加记录,每次…

php 函数命名 特殊字符,php 特殊字符处理函数

php 特殊字符处理函数发布于 2014-09-27 23:15:58 | 202 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门…

hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab - 图文

《边缘检测与Hough变换实验报告 Matlab - 图文》由会员分享,可在线阅读,更多相关《边缘检测与Hough变换实验报告 Matlab - 图文(5页珍藏版)》请在人人文库网上搜索。1、边缘检测与Hough变换实验报告 Matlab - 图文边缘检测与Hough变换 实验目的&#xff…

python玫瑰花数量的含义_玫瑰花数量代表含义

个人收集整理-ZQ1 / 3支玫瑰一心一意,一见钟情.约会求婚赠花朵你是我地唯一朵玫瑰代表我地心中只有你支玫瑰成双成对,喜结良缘.夫妻,恋人互增朵你浓我浓,世界只有你和我支玫瑰我爱你赠爱人,朋友朵玫瑰代表我爱你支玫瑰四季平安赠友人,居家朵誓言、承诺朵玫瑰代表至死…

php获取视频第一帧生成gif,thinkphp如何从gif提取第一帧生成静态缩略图

在开发app项目中,为了节省以及加快客户端的加载速度,在展示gif的位置需要提供静态图加载,点击放大才加载实际的动态图片。那么在thinkphp中如何使用GD库去截取gif第一帧生成静态缩略图,具体看下面实现的方式。1、修改文件/ThinkPH…

cassss服务未启动_电梯启动死机故障处理方法

电梯情况描述:广东奥的斯,有机房 梯龄5年故障现象描述:现场人员反馈,停梯一晚,第二天开梯,门一开就死机,显示HAD,断电复位后电梯正常维修过程描述:1、到达现场查看历史故…

php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?

Note: this answer was written for Laravel 3 and might or might not work with the most recent Laravel 4我最喜欢的创建动态菜单的方法是通过将菜单部分与主布局分开并通过Laravel’s Composer注入菜单数据来实现的(不要将它与Composer PHP包管理器混淆,它们是不同的)Titl…

python子进程的输出不可见_python-输出子进程调用的命令行?

美观且可扩展的方法我一直在使用这样的东西:#!/usr/bin/env python3import osimport shleximport subprocessimport sysdef run_cmd(cmd, cwdNone, extra_envNone, extra_pathsNone, dry_runFalse):if extra_env is None:extra_env {}newline_separator \\\nout …

双色球python十种算法_python : 蒙特卡罗算法 应用于双色球

参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法http://www.gdfc.org.cn/datas/history/twocolorball/history_1.html 抓取双色球开奖数据2017001,09,11,14,20,25,26,152017002,15,19,23,24,25,32,032017003,01,04,08,15,27,32,16.…

红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP

本文实例讲述了php仿微信红包分配算法的实现方法。分享给大家供大家参考,具体如下:/*** 红包分配:把一定金额随机分配给指定人数** param int $money 用于分配的金额* param int $num 分配人数*/function RandomMoney($money, $num) {echo &q…

python 大学教授整理_剑桥大学教授用时35天亲自整理,Python超详细的基础笔记

python简介python是一种面向对象的解释型计算机程序设计语言,python的是吉多范罗苏姆(Guido van Rossum)于1989年发明任何语言都有优缺点,python也不例外,python的优点是简单易懂、可移植性、可扩展性、可嵌入性,python的缺点&…

php 分析css,全面分析css属性选择器

1.[class~"flower"]:选中有flower的classclass"flower ss"class"ss flower"2.[class|top]:选择以top为top开头的class需要有—相连 或者单独的topclass"top-ss"class"top"class"top-ss"//选…

合振动的初相位推导_基于振动信号的机械设备故障诊断(一)

1.概述振动在旋转机械设备故障中占了很大比重,是影响设备安全,稳定运行的重要因素。振动直接反应了设备的健康状况,是设备安全评估的重要指标。通过对振动分析方法的调查,熟悉一般的振动分析流程及方法,从而对检测设备…

不安装oracle 连接数据库,不安装oracle 连接服务器oracle数据库方法

1:http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/ 下载你需要的Oracle Instant Client、免安装 Oracle 客户端使用 PL/SQL 连接 Oracle 大家都知道,用 PL/SQL 连接 Oracle ,是需要安装 Oracle 客户端软件的。有没…

python找出10000以内的质数_【Python学习】打印10000以内的所有素数

摘要: 普及一下素数,初中学的都忘记了 百度:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 基本判断思路:在一般领域,对正…

linux 启动db2 服务器,Linux系统设置DB2等服务开机启动的过程

Linux系统中向要设置开机启动,就要通过代码来实现。通过编写脚本能够把服务加到Linux开机启动项中,本文就来介绍一下Linux系统中设置DB2等服务开机启动的过程。1.转到/etc/init.d 目录下。以root身份执行Shell代码cd /etc/init.d2.编写DB2启动脚本Shell代…

spring elasticsearch 按条件删除_SpringBoot2 高级案例(08):整合 ElasticSearch框架,实现高性能搜索引擎...

一、安装和简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ElasticSe…

linux创建vnc服务器,五步建立一个VNC Linux服务器

【51CTO快译】VNC(Virtual Network Computing)可以让你登录进到远程服务器的桌面上(相比之下,SSH的X11只能让你在本地机器上打开几个窗口)。这个很有用,设置起来也十分方便。***步我是用的是vnc4(还有其他选项,比如TightVNC),所以…

python的六大数据类型中可以改变_在python中更改数组的数据类型

我通过生成一组随机数并将它们转换为int类型来创建数组。但是,我不认为我下面的方法是有效的。有没有最好的方法来改变数组中的数据类型?# standard normal distributed random numberscrandom.randn(5,5)carray([[-0.37644781, -0.81347483, -0.3689595…

linux脚本多个条件比较大小,shell脚本-比较两个整数大小

开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。用条件表达式(禁止if)进行判断并以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数不对给予提示。read读入方式#…