问题描述
所以我需要做的是定期更改活动窗口,我的问题是它们都具有相同的名称,并且使用其HWND仅适用于第一个窗口。除此之外,我不想每次都插入它的HWND
import win32gui,time
def main():
while(1):
win32gui.SetForegroundWindow(788574)#win2
side()
time.sleep(5)
def side():
while(1):
win32gui.SetForegroundWindow(3147934)#win1
main()
time.sleep(5)
if __name__ == '__main__':
main()
解决方法
要在选定的窗口中循环显示,有几个步骤:
- 使用 win32gui.EnumWindows 浏览所有打开的窗口
- 使用 win32gui.GetWindowText 从窗口获取标题栏文本
- 使用 win32com.client.Dispatch 和 SendKeys 激活切换过程
- 使用 win32gui.SetForegroundWindow 选择要激活的窗口
这是代码:
import win32com.client as win32
import win32gui
import time
title = "Untitled - Notepad2" # cycle all windows with this title
def windowEnumerationHandler(hwnd,top_windows):
top_windows.append((hwnd,win32gui.GetWindowText(hwnd)))
top_windows = [] # all open windows
win32gui.EnumWindows(windowEnumerationHandler,top_windows)
winlst = [] # windows to cycle through
for i in top_windows: # all open windows
if i[1] == title:
winlst.append(i)
for x in range(5): # cycle 5 times
for w in winlst: # each window with selected title
shell = win32.Dispatch("WScript.Shell") # set focus on desktop
shell.SendKeys('%') # Alt key
win32gui.SetForegroundWindow(w[0]) # bring to front,activate
time.sleep(2) # 2 seconds