国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python中最全的窗口操作,如窗口最大化、最小化、窗口置頂、獲取縮放比例等

這篇具有很好參考價值的文章主要介紹了Python中最全的窗口操作,如窗口最大化、最小化、窗口置頂、獲取縮放比例等。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

python7.瀏覽器窗口最大化代碼,Python,python,windows,開發(fā)語言,窗口操作

Python窗口操作

前言

本文記錄在Python中操作Windows應用窗口的操作。

這里的操作都是自己摸索+借助強大的搜索引擎整理出來的,我真棒?。?!

知識點????

名稱 解釋名稱
ctypes Python的外部函數庫。它提供了與 C 兼容的數據類型,并允許調用 DLL 或共享庫中的函數。
pywin32 是Win32(PYWIN32)擴展的 Python 的reamde文件,可訪問Python的許多Windows API。
Spy++.exe SPYXX.EXE是一個基于 Win32 的實用工具,它提供系統的進程、線程、窗口和窗口消息的圖形視圖。使用 Spy++ 可以執(zhí)行下列操作: 顯示系統對象(包括進程、線程和窗口)之間關系的圖形樹。 搜索指定的窗口、線程、進程或消息。 查看選定的窗口、線程、進程或消息的屬性。
inspect.exe Spy++.exe 差不多

具體實現

ctypes

typesPython 的外部函數庫。它提供了與 C 兼容的數據類型,并允許調用 DLL 或共享庫中的函數??墒褂迷撃K以純 Python 形式對這些庫進行封裝。

官方文檔在這里:https://docs.python.org/zh-cn/3/library/ctypes.html

下面不另做單獨介紹。


pywin32

值得注意的是,有一個名為 hwnd 的變量將貫穿全文,它是檢索窗口句柄。(也就是控制窗口需要用到它!

這個可以配合 inspect.exe 或者 Spy++.exe 來定位到需要操作的窗口。

Spy++.exe 通過安裝 visual studio獲得,也可以通過 https://download.csdn.net/download/weixin_45081575/87408340 處下載獲得,省去安裝的煩惱;

inspect.exeWindows系統中自帶,路徑參考:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64

安裝模塊

pip install pywin32

導入模塊

import ctypes
import win32api
import win32gui
import win32con

準備工作

這里介紹 inspect.exespy++.exe 兩種工具的獲取 標題類名稱

關于這兩個工具的使用,后面就不再做過多介紹。

這兩個工具的簡單使用,將使用 PC端微信視頻號窗口 來做演示。

進行窗口操作首先需要獲取到需要操作的窗口的 標題類名稱,

inspect.exe
  • 標題類名稱,對應下圖的 NameClassName

python7.瀏覽器窗口最大化代碼,Python,python,windows,開發(fā)語言,窗口操作

spy++.exe

在 spy++.exe 中,

  • 點擊左上角的框出來的圖標,彈出中間的窗口,
  • 然后將中間的窗口中的圖標拖拽到Cmder窗口中,即可得到它的 標題類名稱

如下圖所示:

python7.瀏覽器窗口最大化代碼,Python,python,windows,開發(fā)語言,窗口操作




從這里開始只介紹代碼,不展示圖片。

從這里開始只介紹代碼,不展示圖片。

從這里開始只介紹代碼,不展示圖片。




定位窗口

這里的三行代碼都可以用于尋找窗口句柄。區(qū)別在于

  • 通過提供 className窗口類名,可以更具體地指定要查找的窗口,從而提高定位的準確性和速度。
  • 如果窗口類名不是唯一的,可以結合窗口標題來進一步縮小范圍。
import win32gui

hwnd = win32gui.FindWindow(None, '微信')
hwnd = win32gui.FindWindow('WeChatMainWndForPC', None)
hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

喚醒窗口

  • 這里的win32con.SW_SHOW等是一個int常量
import win32gui
from ctypes import windll

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

# 展示窗口,以下幾行代碼都可以喚醒窗口
win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNA)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWDEFAULT)
# 使用ctypes來實現
windll.user32.ShowWindow(hwnd, win32con.SW_SHOW)
windll.user32.ShowWindow(hwnd, win32con.SW_SHOWNA)
windll.user32.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
windll.user32.ShowWindow(hwnd, win32con.SW_SHOWDEFAULT)

關閉窗口

import win32gui
from ctypes import windll

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

# 關閉窗口,以下代碼等價
win32gui.CloseWindow(hwnd)
# 使用ctypes來實現
windll.user32.PostMessageA(hwnd, win32con.WM_CLOSE, 0, 0)

置頂窗口

import win32gui

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

# 置頂窗口
win32gui.SetForegroundWindow(hwnd)

判斷是否為置頂窗口

import win32gui

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
print('微信窗口句柄 =>', hwnd)

# 獲取當前置頂的窗口
top_hwnd = win32gui.GetForegroundWindow()
print('當前置頂窗口句柄 =>', top_hwnd)

# 置頂窗口
win32gui.SetForegroundWindow(hwnd)

top_hwnd = win32gui.GetForegroundWindow()
print('當前置頂窗口句柄 =>', top_hwnd)

輸出如下:

# 微信窗口句柄 => 852376
# 當前置頂窗口句柄 => 393716
# 當前置頂窗口句柄 => 852376 

通過查看打印的消息,可以發(fā)現當前置頂的窗口就是我們設置的窗口。


最大化窗口

import win32gui
from ctypes import windll

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

# 最大化窗口,以下幾行代碼都可最大化窗口
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
win32gui.ShowWindow(hwnd, win32con.SHOW_FULLSCREEN)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMAXIMIZED)
# 使用ctypes來實現
windll.user32.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
windll.user32.ShowWindow(hwnd, win32con.SHOW_FULLSCREEN)
windll.user32.ShowWindow(hwnd, win32con.SW_SHOWMAXIMIZED)

最小化窗口

import win32gui
from ctypes import windll

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

# 最小化窗口,以下幾行代碼都可最大化窗口
win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
win32gui.ShowWindow(hwnd, win32con.SW_FORCEMINIMIZE)
# 使用ctypes來實現
windll.user32.ShowWindow(hwnd, win32con.SW_MINIMIZE)
windll.user32.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
windll.user32.ShowWindow(hwnd, win32con.SW_FORCEMINIMIZE)

獲取屏幕尺寸

使用 win32api 實現,

import win32api

width = win32api.GetSystemMetrics(0)
height = win32api.GetSystemMetrics(1)
print(width, height)  # 1920 1080

使用 ctypes 實現,

from ctypes import windll

width = windll.user32.GetSystemMetrics(0)
height = windll.user32.GetSystemMetrics(1)
print(width, height)  # 1920 1080
多顯示器組合屏幕尺寸

對于多顯示器,可以檢索虛擬顯示器的組合寬度和高度

  • 這里為兩臺 1920×1080分辨率的屏幕
from ctypes import windll

width = windll.user32.GetSystemMetrics(78)
height = windll.user32.GetSystemMetrics(79)
print(width, height)  # 3840 1080

獲取縮放比例

SetProcessDPIAware是一個Windows中user32.dll的API函數,可用于防止UI自動放大。

值得注意的是,如果使用了DPI縮放,即屏幕有縮放,返回的值可能不正確。

這時候需要用調用 SetProcessDPIAware 去獲得真實的尺寸。

  • 這里我設置了屏幕縮放為 125%
from ctypes import windll


def get_scaling():
    user32 = windll.user32
    # 獲取現在的尺寸(縮放后
    now_width = user32.GetSystemMetrics(0)
    now_height = user32.GetSystemMetrics(1)
    # 限制UI縮放
    user32.SetProcessDPIAware()
    # 獲取屏幕真實的尺寸
    origin_width = user32.GetSystemMetrics(0)
    origin_height = user32.GetSystemMetrics(1)
    # 計算縮放比例
    scaling = round(origin_width / now_width, 2)
    print('現在的尺寸 =>', now_width, now_height)
    print('真實的尺寸 =>', origin_width, origin_height)
    print('縮放比例為 =>', scaling)
    return scaling


print(get_scaling())  # 1.25

輸出結果如下:

現在的尺寸 => 1536 864
真實的尺寸 => 1920 1080
縮放比例為 => 1.25
1.25

后話

本次分享到此結束,????
有疑問自行解決。文章來源地址http://www.zghlxwxcb.cn/news/detail-795657.html

到了這里,關于Python中最全的窗口操作,如窗口最大化、最小化、窗口置頂、獲取縮放比例等的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C# winform窗體UI美化后實現最大化、最小化、還原、關閉、窗體移動等等-2023/1/11

    在做winform窗體UI美化時,一般都需要將窗體的FormBorderStyle屬性設為None,之后窗體就會沒有最上面的標題欄,然后按照UI進行界面的設計。美化的代價就是窗體本來標題欄的相關操作,例如雙擊自動最大化,再次雙擊又恢復正常大小,以及上窗體關閉、最小化等功能就都需要自

    2024年02月08日
    瀏覽(27)
  • qt界面最大化-實現在軟件所在的顯示器最大化和還原窗口大小

    qt界面最大化-實現在軟件所在的顯示器最大化和還原窗口大小

    用qt開發(fā)一個圖片查看軟件,通過重寫qlabel實現自定義窗口title,這個title當電腦使用多個顯示器的時候,我想實現: 當軟件界面的大部分在顯示器1的時候,點擊最大化或還原按鈕時軟件就在顯示器1最大化或還原,如下圖: ? 當軟件界面的大部分在顯示器2的時候,點擊最大

    2024年02月11日
    瀏覽(33)
  • Duilib中禁止一個窗口雙擊最大化

    Duilib中禁止一個窗口雙擊最大化

    用 duilib 開發(fā)了一個窗口,比如是登錄窗口,那么這個窗口的窗口的雙擊最大化就毫無意義,甚至帶來災難,我們就要明確禁止這樣的行為。 我們應該明確,一個窗口創(chuàng)建的時候就賦予了它一些屬性,那我們就首先看看如何創(chuàng)建窗口的,即Create函數。 例如,你定義了一個窗口

    2024年02月12日
    瀏覽(25)
  • Qt Windows 去掉標題欄后 最大化窗口時任務欄被窗口遮住問題

    在寫Qt窗口時,假如對窗口設置了 Qt::FramelessWindowHint 或者 Qt::CustomizeWindowHint 標志,會發(fā)現窗口在副屏上最大化會遮住任務欄。 假如自己實現最大化來解決這個問題,雖然能夠解決,但窗口狀態(tài)就需要自己維護 在Windows中通過攔截窗口消息的方式可以更優(yōu)雅的解決這個問題 在

    2024年02月05日
    瀏覽(36)
  • 【華為OD機試真題】最大化控制資源成本(java&python)

    【華為OD機試真題 20222023】真題目錄 @點這里@ 【華為OD機試真題】信號發(fā)射和接收 試讀 @點這里@ 【華為OD機試真題】租車騎綠道 試讀 @點這里@ 公司創(chuàng)新實驗室正在研究如何最小化資源成本,最大化資源利用率,請你設計算法幫他們解決一個任務混部問題:有taskNum項任 務,每

    2023年04月13日
    瀏覽(27)
  • 【深度學習】什么是互信息最大化?

    ??在學習無監(jiān)督學習時,最常用的loss就是最大化互信息。所以本文對互信息最大化做了一個總結。內容和圖片多有參考其他資料,相關的文獻一并在參考文獻列出。(如果使用對比學習含有溫度系數的那個損失函數可能會更簡單一點) [1]什么是「互信息」? [2]DIM:通過最

    2024年02月13日
    瀏覽(27)
  • 如何使音頻類app廣告變現收益最大化

    要使音頻類應用程序的廣告變現收益最大化,可以采取以下策略: admaoyan貓眼聚合 精準定位受眾:?了解你的用戶群體,包括他們的興趣、偏好和行為,以便向他們展示相關性更高的廣告。使用用戶數據分析工具,如Google Analytics或Firebase Analytics,以獲取深入的洞察。 多樣化

    2024年02月20日
    瀏覽(47)
  • MySQL | 深入了解如何最大化利用 MySQL 函數(一)

    MySQL | 深入了解如何最大化利用 MySQL 函數(一)

    前言 ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL字符串函數和數學函數的講解 ? 一、字符串函數 函數 作用 UPPER(列|字符串) 將字符串每個字符轉為大寫 LOWER(列|字符串) 將字符串每個字符轉為小寫 CONCAT(str1,str2,…) 將所有字符串連接成一個字符串 REPLACE(列|字符串,新字符

    2024年02月08日
    瀏覽(41)
  • 期望最大化(EM)算法:從理論到實戰(zhàn)全解析

    期望最大化(EM)算法:從理論到實戰(zhàn)全解析

    本文深入探討了期望最大化(EM)算法的原理、數學基礎和應用。通過詳盡的定義和具體例子,文章闡釋了EM算法在高斯混合模型(GMM)中的應用,并通過Python和PyTorch代碼實現進行了實戰(zhàn)演示。 關注TechLead,分享AI全維度知識。作者擁有10+年互聯網服務架構、AI產品研發(fā)經驗、

    2024年02月08日
    瀏覽(30)
  • 【元宇宙】區(qū)塊鏈,元宇宙最大化的驅動力

    如今,一些觀察者認為區(qū)塊鏈是在結構上實現元宇宙的必要條件,而其他人則認為這種說法是荒謬的。人們對于區(qū)塊鏈技術本身仍然有很多困惑,所以根本談不上清楚地了解込塊鏈技術與元宇宙的關系。所以,我們可以從區(qū)塊鏈的定義開始介紹。 簡側言之,區(qū)塊鏈是由一個去

    2024年02月10日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包