import time
import win32con
import keyboard
import pywintypes # Not used, but need it for win32gui to import correctly
import win32gui
id(pywintypes)
def keep_game_awake(handles: set):
for n in range(60 * 24):
for handle in list(handles):
try:
foreground = win32gui.GetForegroundWindow()
if not foreground:
raise Exception('foreground', foreground)
if foreground != handle:
# win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE)
win32gui.ShowWindow(handle, win32con.SW_MINIMIZE)
# win32gui.SetActiveWindow(handle)
win32gui.SetForegroundWindow(handle)
keyboard.press_and_release('T')
if foreground != handle:
win32gui.SetForegroundWindow(foreground)
except Exception as e:
print(handle, e.args)
if len(e.args) >= 3 and ('No error message is available' != e.args[2]):
handles.remove(handle)
finally:
time.sleep(3)
if not len(handles):
print('exit the loop')
break
time.sleep(60)
#def debug():
# handles = set(filter(
# lambda handle: handle > 0,
# map(lambda title: win32gui.FindWindowEx(None, None, None, title), ['title1', #'title2']),
# ))
#
# print(handles)
#
# win32gui.SetWindowText(
# win32gui.FindWindowEx(None, None, None, '[#] 网易云游戏-光遇-菜单键:Esc [#]'), '[#] 光遇 - 2 [#]'
# )
def get_win_handles(titles: list):
def _ew_callback(handle, ref_result):
title = win32gui.GetWindowText(handle)
if title and (title in titles):
ref_result.append((handle, title))
result = []
win32gui.EnumWindows(_ew_callback, result)
for res in result:
print(*res)
return set(map(lambda t: t[0], result))
if __name__ == '__main__':
keep_game_awake(get_win_handles([
'网易云游戏-光遇-菜单键:Esc',
'[#] 网易云游戏-光遇-菜单键:Esc [#]',
'[#] 网易云游戏-光遇(小米)-菜单键:Esc [#]',
]))
05-23
5953
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交