實(shí)現(xiàn)思路是先獲取到當(dāng)前最上面活動的窗口信息,然后提取該窗口的名稱信息。
城北網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),城北網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為城北1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的城北做網(wǎng)站的公司定做!
【閱讀全文】
之后獲取窗口的坐標(biāo)信息,即左上角的開始坐標(biāo)及右下角的結(jié)束坐標(biāo)。最后直接截圖并將截圖的圖片進(jìn)行展示。
其中用到了兩個第三方模塊,分別是win32gui和Pillow,安裝命令如下:
pip install Pillow
pip install win32gui
將其中使用到的三個非標(biāo)準(zhǔn)庫導(dǎo)入進(jìn)來。
from win32gui import * # 操作windows窗口
from PIL import ImageGrab # 操作圖像
import win32con # 系統(tǒng)操作
初始化一個set列表存放所有活動窗口名稱,使用set類型的目的是保證所有活動窗口名稱的唯一性。
names = set()
編寫get_window_title函數(shù),獲取當(dāng)前的所有活動窗口對象。
def get_window_title(window, nouse):
'''
獲取窗口標(biāo)題函數(shù)
:param window: 窗口對象
:param nouse:
:return:
'''
if IsWindow(window) and IsWindowEnabled(window) and IsWindowVisible(window):
names.add(GetWindowText(window))
EnumWindows(get_window_title, 0)
list_ = [name for name in names if name]
for n in list_:
print('活動窗口: ', n)
輸入自己想要截圖的窗口名稱作為當(dāng)前窗口,然后提取到需要截圖的窗口對象。
name = input('請輸入需要截圖的活動窗口名稱: \n')
window = FindWindow(0, name) # 根據(jù)窗口名稱獲取窗口對象
ShowWindow(window, win32con.SW_MAXIMIZE) # 將該窗口最大化
獲取該窗口的坐標(biāo)信息,開始坐標(biāo)信息和結(jié)束坐標(biāo)信息。
x_start, y_start, x_end, y_end = GetWindowRect(window)
# 坐標(biāo)信息
box = (x_start, y_start, x_end, y_end)
調(diào)用ImageGrab.grab()函數(shù)實(shí)現(xiàn)對窗口的截圖操作。
image = ImageGrab.grab(box)
在完成截圖之后展示一下截圖的效果,如果不需要展示的話就不需要添加這行代碼了。
image.show() # 圖片展示,如果截完圖需要展示則放開此項(xiàng)
最后一步,將截圖好的圖片保存下來。
image.save('target.png')
print('截圖已經(jīng)保存完成!')
上面整個的python截圖操作就實(shí)現(xiàn)了,目前正在考慮怎么實(shí)現(xiàn)批量截圖的過程,有好的建議可以直接留言或是私信,感謝大家一直以來的支持!
【往期精彩】
怎么用python做一個解壓縮小工具...
python中最簡單的turtle繪圖:奧運(yùn)五環(huán)!
知識匯總:python辦公自動化應(yīng)該學(xué)習(xí)哪些內(nèi)容?
python多線程同步售票系統(tǒng)解決思路...
發(fā)現(xiàn)幾個好玩的游戲編程平臺,與君共勉!