2010-09-09 76 views
2

我有一個簡單的Python腳本,在控制檯窗口中運行。如何確保應用程序窗口始終位於頂部?

如何確保控制檯窗口始終位於頂部,並且如果可能,請調整它的大小?

+0

有點困惑 - 是你從一個不同的窗口/框中運行它,你想要打開一個新的cmd窗口,或者你正在談論在cmd窗口中執行python腳本,希望它在執行期間保持在最前面? – XanderLynn 2010-09-09 17:36:58

+0

...正在執行腳本(雙擊它)並保持最佳狀態 – Shady 2010-09-09 18:17:34

+0

您試圖完成的高級別目標是什麼? – 2010-09-09 18:21:50

回答

0

要使用cmd窗口執行此操作,您可能必須調用很多win32調用。使用win32gui.EnumWindows得到窗口

  1. 枚舉所有的窗口句柄
  2. 找到符合您如何運行程序的「窗口標題」。例如,雙擊我的系統上的.py文件,窗口標題是「C:\ Python26 \ python.exe」。在命令行上運行它,它被稱爲c:\ Windows \ system32 \ cmd.exe -c:\ python26 \ python.exe test.py
  3. 使用適當的標題獲取cmd窗口句柄。
  4. 使用win32gui.SetWindowPos讓你的窗口 「最頂層」 窗口,等...

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 
1

如果您正在創建自己的窗口,您可以用Tkinter的像這樣創建一個「總在最前面」窗口:

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

然後把任何你想擁有主循環內發生。

如果您正在討論命令提示符窗口,那麼您將不得不使用一些特定於Windows的實用程序來將該窗口置於頂部。你可以try this script for Autohotkey

5

使用Mark's answer我來到這個:

import win32gui 
import win32con 

hwnd = win32gui.GetForegroundWindow() 
win32gui.SetWindowPos(hwnd,win32con.HWND_TOPMOST,100,100,200,200,0) 
相關問題