Python使用相同的名称激活窗口

2024-04-25 21:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我需要做的是定期更改活动窗口,我的问题是它们都有相同的名称,并且使用它们的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()

Tags: nameimport名称iftimemaindefsleep
1条回答
网友
1楼 · 发布于 2024-04-25 21:35:27

要在选定窗口中循环,请执行以下几个步骤:

  • 使用win32gui.EnumWindows查看所有打开的窗口
  • 使用win32gui.GetWindowText从窗口获取标题栏文本
  • 使用win32com.client.DispatchSendKeys激活切换进程
  • 使用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

相关问题 更多 >