設置第三方窗口置頂(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
英文地址,請注明出處:http://en.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表示