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

还有关不掉的窗体?

先来看下效果:

通过上图,大家很容易看出二者之间的区别,有些情况下,我们需要这种窗体,比如网页中弹出的广告,没有关闭按钮,用户无法关闭。那怎么创建一个无标题栏的窗体呢?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函数重画窗口。以上便是无标题窗口的创建方法。

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

聚米为谷

博学宏才

更多学习内容

手机端请扫描

电脑端请登录

www.mihong.top

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

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

  1. python tkinter获取屏幕大小_用 Python 制作关不掉的端午安康弹窗

    端午节又称端阳节.龙舟节.重午节.龙节.正阳节.天中节等,端午节源自天象崇拜,由上古时代祭龙演变而来,因传说战国时期的楚国诗人屈原在五月五日跳汨罗江自尽,后来人们亦将端午节作为纪念屈原的节日,在端午节 ...

  2. 电脑关不掉计算机窗口,电脑关不掉怎么办?

    Win XP关机故障 对于Windows XP来说,由于其采用了安全性能较高的NT内核,系统运行还算稳定,除了关机速度较慢之外,一般情况下很少发生关机故障.但下述一些故障现象您还应予以关注. 对于Wi ...

  3. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

  4. delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图

    利用Python自带的win32api和win32con.win32gui等模块,我们能执行许多windows下的自动化操作.比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操 ...

  5. 查询用户所有信息后只需要两个字段的信息_Excel VBA+ADO+SQL入门教程023:OpenSchema获取表信息...

    点上方关注我们,每日1练,每天进步一点点  1. 我们在使用SQL语言对数据库数据进行查询之前,有时需要获取每张表的表名,甚至获取每张表每个字段的名称等:比如,当我们进行跨工作簿数据查询及汇总时,在不 ...

  6. 【python句柄获取】——简单明了的获取窗口句柄,并使用句柄操作获取相应内容(全网最详细)

    点个赞留个关注吧!! 所使用模块 import win32gui import win32con import win32api import psutil import win32process 获 ...

  7. win32 获取窗口句柄的方法

    第一种方法是根据窗口句柄值获取窗口句柄 使用spy++获取指定窗口的窗口句柄值,因为句柄值是16进制数,所以前面加0x,然后进行强制转换为HWND类型. HWND hWnd=(HWND)0x00280 ...

  8. AutoIt3 使用进程名获取窗口句柄

    背景 需要用AutoIt3控制QQ音乐播放器,首先要获取QQ音乐的窗口句柄 问题 WinGetHandle方法不能满足要求 QQ音乐的Title会根据当前播放的歌曲动态改变 而QQ音乐与QQ的窗口Cl ...

  9. 通过Windows进程ID获取窗口句柄

    通过Windows进程ID获取窗口句柄 方法一:使用EnumWindows的方式 ///< 枚举窗口参数 typedef struct { HWND hwndWindow; // 窗口句柄 DW ...

最新文章

  1. python中 doc_python中doc转pdf
  2. 抽奖 开源 html5,抽奖转盘.html · smilestone/awardRotate - Gitee.com
  3. memcached+keepalived+magent高群集
  4. Android真机调试打印日志的方法
  5. 【spring boot】使用RestTemplate调用百度坐标转换服务
  6. scrapy的Middleware
  7. 前端学习(2963):跨域问题
  8. java用循环语法在窗体中显示文字,如果子窗体在窗体视图中,则访问2003循环当前页面不起作用...
  9. 人际关系的55个绝招
  10. 工作总结:将电脑中的ARP缓存清空黑屏命令
  11. Java中定时任务的6种实现方式,你知道几种?
  12. 2021年起,WPS Office纳入全国计算机等级考试二级考试软件
  13. CRM系统管理日常计划
  14. SQL server 2000个人版 下载地址
  15. 荣耀Magicbook安装黑苹果教程(OpenCore引导)
  16. 圆周率小数点后1千位(附计算圆周率源代码)
  17. 常用的清楚浮动的办法
  18. 自制Arduino便携式超声波测距仪
  19. Springboot:商品库存并发更新,乐观锁失败重试机制
  20. elixir 读取 marc条目 目次区字段信

热门文章

  1. excel导入数据到sqlserver
  2. Tomcat基础教程(一)
  3. 深入浅出:Microsoft分布式事务处理协调器
  4. 4.1.3数据报与虚电路
  5. 计算机网络学习笔记-1.2.2OSI参考模型(1)
  6. 个人博客网站 Welcome All
  7. 计算机网络安全-RSA加密原理
  8. 计算机网络(九)-物理层(补充)-傅里叶变换-信道复用
  9. Leetoce--572. 另一个树的子树(java)
  10. 技术面试问项目难题如何解决的_技术创新 | 降本增效,青海农信社项目小伙刻苦钻研解决联合支架设计难题!...