设置第三方窗口置顶(SetWindowPos方法,vb.net)

起源

在日常办公、游戏时,我们经常需要一些窗口处于置顶状态,而这些窗口往往是网页端(浏览器)、办公软件(wps、office等),这些需要置顶的窗口往往自身没有明显的置顶开关,因此,想要让窗口一直处于顶端我们介绍一种有效的方法。

在自己窗体内部

Me.TopMost = True

那么我们需要在第三方窗口呢?

思路

step1 

获取窗口的句柄,我们可以通过窗口的坐标来判断窗口的句柄,使用 WindowFromPoint 函数获取鼠标位置下的窗口句柄,在MouseMove事件下写入:

Private Sub Button1_MouseDown(sender As Object, e As MouseEventArgs) Handles Button1.MouseDownispick = True
End SubPrivate Sub Button1_MouseMove(sender As Object, e As MouseEventArgs) Handles Button1.MouseMoveIf ispick = True Thenhwnd = WindowFromPoint(MousePosition.X, MousePosition.Y)'GetWindowText(hwnd, s, 255)'''...End If
End Sub
Private Sub Button1_MouseUp(sender As Object, e As MouseEventArgs) Handles Button1.MouseUpispick = False'''...
End Sub<DllImport("user32.dll", EntryPoint:="WindowFromPoint")>Public Function WindowFromPoint(xPoint As Integer, yPoint As Integer) As IntPtrEnd Function
<DllImport("user32.dll", EntryPoint:="GetWindowText")>
Public Function GetWindowText(hWnd As IntPtr, lpString As StringBuilder, nMaxCount As Integer) As IntegerEnd Function

全局变量:

Dim hwnd As IntPtr
Dim ispick As Boolean

step2 

编写TopMostWindow类

Public Class TopMostWindow<DllImport("user32.dll")>Public Shared Function SetWindowPos(ByVal hWnd As IntPtr,ByVal hWndInsertAfter As IntPtr,ByVal X As Integer,ByVal Y As Integer,ByVal cx As Integer,ByVal cy As Integer,ByVal uFlags As UInteger) As BooleanEnd Function' 常用常量Public Const HWND_TOPMOST = -1Public Const HWND_NOTOPMOST = -2Public Const SWP_NOSIZE As UInteger = &H1Public Const SWP_NOMOVE As UInteger = &H2Public Const SWP_SHOWWINDOW As UInteger = &H40' 设置窗口置顶Public Sub SetTopmost(ByVal targetHwnd As IntPtr)SetWindowPos(targetHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)End SubPublic Sub CancelTopmost(ByVal targetHwnd As IntPtr)SetWindowPos(targetHwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)End Sub
End Class

 来自Microsoft Learn

step3 

窗口部分调用函数

Private Sub Button14_Click_1(sender As Object, e As EventArgs) Handles Button14.ClickDim t As New TopMostWindowt.SetTopmost(hwnd)
End SubPrivate Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.ClickDim t As New TopMostWindowt.CancelTopmost(hwnd)
End Sub

总结

该方法使用于几乎所有Windows窗口,使用鼠标拖拽到窗口的标题栏(非客户端区域)获取窗口句柄,设置窗口模式,效果等同于TopMost的效果

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

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

相关文章

Docker-下载和安装

一、Linux版 1.安装docker &#xff08;1&#xff09;更新软件包索引 sudo apt update &#xff08;2&#xff09;安装必要的依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common &#xff08;3&#xff09;添加 Docker 官方 GP…

电脑DLL错误修复dll微软运行库工具修复dll缺失找不到dll等问题,dll免费修复工具

解决DLL文件缺失问题&#xff1a;我的使用体验与建议 在使用电脑的过程中&#xff0c;我们常常会遇到软件或系统报错&#xff0c;例如“无法找到指定模块”或“缺少某.dll文件”等提示。DLL&#xff08;动态链接库&#xff09;是Windows系统中不可或缺的组件&#xff0c;为应用…

HTTPS的工作原理及DNS的工作过程

HTTPSHTTP协议安全上存在以下三个风险&#xff1a;完整性 可用性 保密性窃听风险&#xff0c;比如通信链路上可以获取通信内容&#xff0c;用户号容易没。篡改风险&#xff0c;比如强制植入垃圾广告&#xff0c;视觉污染&#xff0c;用户眼容易瞎。冒充风险&#xff0c;比如冒充…

VisualXML全新升级 | 新增BusLoad计算

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。该软件支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此…

李天意考研数学精讲课学习笔记(课堂版)

视频链接&#xff1a;【考研数学精讲课李天意】基础强化真题&#xff0c;概念精讲与解题技巧&#xff08;适用数学一/二/三&#xff09;_哔哩哔哩_bilibili 讲义&#xff1a;夸克网盘分享 高数6 不定积分

闲庭信步使用图像验证平台加速FPGA的开发:第二十三课——图像直方图和灰度图像叠加的FPGA实现

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击top_tb.bat文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程…

C++并发编程-14. 利用栅栏实现同步

前文我们通过原子操作实战实现了无锁队列&#xff0c;今天完善一下无锁的原子操作剩余的知识&#xff0c;包括Relaese和Acquire内存序在什么情况下是存在危险的&#xff0c;以及我们可以利用栅栏机制实现同步等等。 线程可见顺序 我们提到过除了memory_order_seq_cst顺序&#…

如何选择旅游科技行业云ERP?Oracle NetSuite助力汇智国际数智化升级

2025年4月21日&#xff0c;汇智国际旅游发展有限公司&#xff08;以下简称汇智国际&#xff09;携手 Oracle NetSuite与Hitpoint Cloud &#xff0c;共同参与了汇智国际 Oracle NetSuite 云ERP 项目启动会。 本次会议标志着汇智国际在数字化转型道路上迈出了坚实而关键的一步&…

深度学习零基础入门(3)-图像与神经网络

好久不见~我又回来了 这一节我们来讲一讲图像在计算机中的本质&#xff0c;以及全连接神经网络的缺陷&#xff0c;进而引出卷积神经网络一、图像在计算机中的本质 不知道你有没有学过数据结构&#xff0c;在讲这一部分的时候对数组进行了扩展&#xff0c;讲到了广义表和压缩矩阵…

http性能测试命令ab

在 Linux系统中&#xff0c; ab&#xff08; ApacheBench&#xff09;是一个用于 测试HTTP服务器性能的 工具。它是 Apache HTTP服务器项目的 一部分&#xff0c;专门设计用来模拟 多个用户对 服务器发起 并发请求&#xff0c;从而 评估服务器的 负载能力和 响应时间其中&#…

从0开始学习R语言--Day50--ROC曲线

对于已经拟合好的生存模型&#xff0c;我们一般会直接用ROC去评判一下整体的水平&#xff0c;因为很多时候阈值都是我们人为根据实际情况去设定的&#xff0c;这种微调的细节都是在整体模型的拟合程度确定下来后再做的工作。ROC曲线可以提供给我们模型对于二分类变量的区分能力…

从Hyperliquid到AILiquid:一场从极致性能到策略智能的迭代

在Hyperliquid以极致性能引爆链上衍生品交易热潮之后&#xff0c;DeFi市场正迎来新一轮的范式转变。作为AI原生的下一代交易平台&#xff0c;AILiquid正式上线并引发市场广泛关注。该平台不仅保留了高频低延迟的交易体验&#xff0c;更通过AI撮合引擎与链上风险控制系统&#x…

磁悬浮轴承转子不平衡质量控制:陷波滤波器深度解析

在磁悬浮轴承高速旋转的世界里&#xff0c;不平衡质量如同一个无形的幽灵&#xff0c;引发危险的同步振动&#xff0c;而陷波滤波器&#xff0c;正是精准捕获并消除这个幽灵的“电磁猎手”。本文将深入剖析其核心原理与实战设计。引言&#xff1a;同步振动的致命诱惑磁悬浮轴承…

Oracle 数据库常见等待事件参数详解

在 Oracle 数据库的性能诊断与优化中&#xff0c;等待事件是重要的分析依据&#xff0c;而理解等待事件的参数则是深入排查问题的基础。本文将结合 Oracle 官方文档&#xff0c;对数据库中常见的等待事件参数进行详细解析&#xff0c;帮助数据库管理员和开发人员更好地解读等待…

STM32中的CAN总线详解:从原理到实战

前言&#xff1a;为什么CAN总线是嵌入式通信的"硬通货"&#xff1f; 在嵌入式通信领域&#xff0c;CAN&#xff08;Controller Area Network&#xff09;总线凭借其高可靠性、实时性和多节点通信能力&#xff0c;成为汽车电子、工业控制、智能设备等领域的"标配…

【鸿蒙HarmonyOS】鸿蒙app开发入门到实战教程(二):封装自定义可复用组件

组件的可复用性&#xff0c;对我们开发的app质量影响很大&#xff0c;看看鸿蒙中如何封装这种组件 实现效果代码实现 局部封装 Builder titleBuilder(title:string 默认标题) {// Builder装饰此函数&#xff0c;使其能以链式调用的方式配置并构建Text组件Row(){Text(title).fo…

Volo-HTTP 0.4.0发布:正式支持 HTTP/2,客户端易用性大幅提升!

&#x1f916; VOLO简介 Volo 是由字节跳动服务框架团队开源的一款高性能、易用的 Rust RPC 框架。 Volo 框架自身开销极低&#xff0c;并提供了命令行工具与灵活的中间件设计&#xff0c;让开发者可以轻松上手&#xff0c;享受 Rust 带来的开发乐趣。 本文介绍自 Volo-HTTP 0…

HTTP相关知识

文章目录一、基础特性与规范二、页面元素与布局三、交互与表单四、网络通信基础流程&#xff08;以浏览器访问网页为例&#xff09;五、配套技术与工具六、知识关联图&#xff08;简化版&#xff09;一、基础特性与规范 技术定位&#xff1a;HTML 是前端技术栈的核心标记语言&…

机器人-组成结构

目录 一、发展历程 二、软件硬件算法深读耦合 感知 - 决策 - 执行 1.机械系统&#xff1a; 2.驱动系统&#xff1a; 3.感知系统&#xff1a; 4.控制系统&#xff1a; 5.决策/智能系统&#xff1a; 6.电源系统&#xff1a; 7.总结 一、发展历程 国际标准化组织(ISO)对…

pycharm结构查看器

v表示整个文件中定义的变量&#xff0c;c是类灰色部分是继承的父类的&#xff0c;明亮的是定义的&#xff0c;其中m表示定义的函数&#xff0c;f表示