Я должен получить фокус к указанному окну, и единственный способ, которым я вижу на голове, минимизирует все окна на передней стороне его, пока я не получаю правильный...
Как я могу сделать это?
Windows 7 и никакой определенный инструментарий....
Каждый тип окна, например, Firefox и консольной команды
Вам нужно будет перечислить окна и сопоставить заголовок окна, чтобы получить желаемое. В приведенном ниже коде выполняется поиск окна с "firefox" в заголовке и устанавливается фокус:
import win32gui
toplist = []
winlist = []
def enum_callback(hwnd, results):
winlist.append((hwnd, win32gui.GetWindowText(hwnd)))
win32gui.EnumWindows(enum_callback, toplist)
firefox = [(hwnd, title) for hwnd, title in winlist if 'firefox' in title.lower()]
# just grab the first window that matches
firefox = firefox[0]
# use the window handle to set focus
win32gui.SetForegroundWindow(firefox[0])
Чтобы свернуть окно, следующая строка:
import win32con
win32gui.ShowWindow(firefox[0], win32con.SW_MINIMIZE)
Судя по вопросу, я предполагаю, что вы хотите написать общий шаблон, который может работать с любым окном из любого приложения.
Вы можете попробовать библиотеку Python Win32 GUI Automation . Я не использовал его, но похоже, что это может быть то, что вы ищете. Если это не сработает, лучшим вариантом может быть отказ от python и использование такого инструмента, как AutoIt , который обеспечивает встроенную поддержку управления окнами.
Если ни одно из этих решений не сработает, вам, вероятно, придется напрямую вызывать windows api. Я не знаю, включает ли пакет win32api необходимую функциональность, иначе вам придется написать модуль python на c / c ++.
Если такая функциональность доступна в API .net, вы можете использовать IronPython.