代码实现
# coding: utf-8
import win32gui
import win32con
import sys
def main():
if len(sys.argv) < 2:
print('请指定窗口名称(尽可能准确)')
return
name = sys.argv[1]
wnds = get_all_windows()
if not wnds:
print('枚举窗口失败')
return
hwnd = get_wnd_contains(name, wnds)
if not hwnd:
print('获取目标窗口失败:', name)
return
set_wnd_top(hwnd, True)
print('目标置顶设置完成')
def get_all_windows():
def function(handle, argument):
argument.append(handle)
argument = []
win32gui.EnumWindows(function, argument)
return argument
def set_wnd_top(hwnd, top):
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
if top:
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0, 0, 0, 0,
win32con.SWP_NOMOVE | win32con.SWP_NOACTIVATE | win32con.SWP_NOOWNERZORDER | win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE)
else:
win32gui.SetWindowPos(hwnd, win32.HWND_NOTOPMOST, 0, 0, 0, 0,win32con.SWP_SHOWWINDOW|win32con.SWP_NOSIZE|win32con.SWP_NOMOVE)
def get_wnd_contains(name, wnds):
texts = []
for v in wnds:
text = win32gui.GetWindowText(v)
texts.append(text)
# 当前运行窗口
if text.find('python ') > 0 and text.find(sys.argv[0]) > 0:
continue
if text and text.find(name) >= 0:
print('获取目标成功:' + text)
return v
print('查找窗口失败,请确认是否在以下窗口列表中:', '\n\t'.join(set(texts)))
return None
if __name__ == '__main__':
main()
使用方法
python top.py 窗口标题名
其中top.py
是保存的代码文件名;窗口标题名
可以是标题全程,也可以是一部分,能唯一根据该关键字定位窗口即可。
当找不到目标窗口时,程序会显示当前所有的窗口标题名称。