#python #window #hwnd
#python #окно #hwnd
Вопрос:
Итак, что мне нужно сделать, это периодически менять активное окно, моя проблема в том, что все они имеют одинаковое имя, и использование их 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()
Комментарии:
1. Когда вы говорите то же имя, вы имеете в виду тот же текст в строке заголовка?
2. Точно, они оба имеют одинаковый текст, я пробовал использовать их HWND, но все равно не будет работать
Ответ №1:
Чтобы переключиться между выбранными окнами, выполните несколько шагов:
- Используйте win32gui.Перечислять окна для просмотра всех открытых окон
- Используйте win32gui.GetWindowText для получения текста строки заголовка из окна
- Используйте win32com.client.Отправка и клавиши отправки для активации процесса переключения
- Используйте 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
Комментарии:
1. Эй, большое тебе спасибо. Используя код, который вы привели в качестве примера, я смог это сделать, спасибо за вашу помощь!