如何确保应用程序窗口始终位于顶部?

时间:2010-09-09 17:24:20

标签: python windows

我有一个在控制台窗口中运行的简单Python脚本。

如何确保控制台窗口始终位于顶部,如果可能,请调整其大小?

3 个答案:

答案 0 :(得分:6)

使用Mark's answer我到达了:

import win32gui
import win32con

hwnd = win32gui.GetForegroundWindow()
win32gui.SetWindowPos(hwnd,win32con.HWND_TOPMOST,100,100,200,200,0)

答案 1 :(得分:1)

如果您要创建自己的窗口,可以使用Tkinter创建一个“永远在线”窗口,如下所示:

from Tkinter import *
root = Tk()
root.wm_attributes("-topmost", 1)
root.mainloop()

然后把你想要的东西放在主循环中。

如果您正在谈论命令提示符窗口,那么您将不得不使用一些特定于Windows的实用程序来保持该窗口的顶部。你可以try this script for Autohotkey

答案 2 :(得分:1)

要使用cmd窗口执行此操作,您可能需要调用许多win32调用。

  1. 使用win32gui.EnumWindows枚举所有窗口以获取窗口句柄
  2. 找到与您运行程序的方式相匹配的“窗口标题”。例如,双击我系统上的.py文件,窗口标题为“C:\ Python26 \ python.exe”。在命令行上运行它,它被称为c:\ Windows \ system32 \ cmd.exe - c:\ python26 \ python.exe test.py
  3. 使用适当的标题获取cmd窗口句柄。
  4. 使用win32gui.SetWindowPos使您的窗口成为“最顶层”的窗口等......

  5. mport win32gui, win32process, win32con
    import os
    
    windowList = []
    win32gui.EnumWindows(lambda hwnd, windowList: windowList.append((win32gui.GetWindowText(hwnd),hwnd)), windowList)
    cmdWindow = [i for i in windowList if "c:\python26\python.exe" in i[0].lower()]
    win32gui.SetWindowPos(cmdWindow[0][1],win32con.HWND_TOPMOST,0,0,100,100,0) #100,100 is the size of the window