Visual Studio控制台窗口位置
Visual Studio Console Window Location
是否可以使Visual Studio中的控制台窗口在每次编译时显示在屏幕上的同一位置?
我总是需要移动它每当我编译因为它的起始位置重叠的东西。
默认情况下,您可以更改每个应用程序的控制台窗口设置,并且windows将在下次运行此应用程序时保存它们。您可以通过单击控制台标题栏上的右键,然后选择Properties和Layout选项卡来更改开始位置。然后取消选中"让系统位置窗口"复选框并键入您想要的坐标。
不幸的是,当你运行一个没有调试器(Ctrl + F5)的应用程序时,Visual Studio将启动cmd.exe /c <your app>
命令。因此,更改此窗口的属性也将更改系统中所有控制台会话的设置。
这不适用于调试运行,因为在调试器VS下只启动应用程序,因此设置仅适用于其控制台窗口。
我带着同样的问题来到这里,并且确信在vs中必须有一个选项。我最终编写了一个在后台运行的快速python脚本,搜索窗口并设置其最后位置。还可选地将其设置为始终位于顶部,并在文件中持久化该位置。希望能帮到别人。
import win32api
import win32gui
import win32con
import msvcrt
import sys
import time
import threading
import pywintypes
import argparse
import re
import weakref
import pickle
def log_message(message,*args):
print(("[%s]" % message).ljust(30) ," ... ",*(str(arg) for arg in args))
def make_file_name(arguments):
return arguments.save_file_name or "window_" + re.sub("[^a-z]","_",arguments.title_text,flags=re.IGNORECASE)
def update_proc(flags,arguments):
found_pos = (0,0,500,500)
found_hwnd = -1
if arguments.save_to_file and not arguments.reset:
load_file_name = make_file_name(arguments)
try:
with open(load_file_name,"rb") as load_file:
found_pos = pickle.load(load_file)
except:pass
while not flags.exit:
try:
hwnd = win32gui.FindWindow(arguments.class_text,arguments.title_text)
if not hwnd: continue
if hwnd != found_hwnd:
log_message("new window found",hwnd)
for _ in range(10):
win32gui.SetWindowPos(hwnd,0 if not arguments.on_top else win32con.HWND_TOPMOST,*found_pos,0)
time.sleep(0.01)
log_message("setting window position",found_pos)
found_hwnd = hwnd
time.sleep(0.1)
if win32gui.IsIconic(found_hwnd):
continue
rect = win32gui.GetWindowRect(found_hwnd)
new_pos = (rect[0],rect[1],rect[2]-rect[0],rect[3]-rect[1])
#ignore negative pos
if True in [ r < 0 for r in new_pos[0:2] ]:
continue
if new_pos == found_pos:
continue
if arguments.save_to_file:
log_message("saving position",new_pos)
save_file_name = make_file_name(arguments)
try:
with open(save_file_name,"wb") as save_file:
pickle.dump(new_pos,save_file)
except:pass
else:
log_message("updading stored position",new_pos)
found_pos = new_pos
except pywintypes.error:pass
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-s","--savetofile",help="Save window settings to a file",action="store_true",dest="save_to_file")
parser.add_argument("-sfn","--savefilename",type=str,help="File name to use if --savetofile specified (or a default is generated)",dest="save_file_name")
parser.add_argument("-ot","--ontop",help="Window Always Ontop",dest="on_top",action="store_true")
parser.add_argument("-c","--class",type=str,help="Window Class Name",dest="class_text")
parser.add_argument("-r","--reset",help="Reset Window Position",action="store_true")
parser.add_argument("-t","--title",type=str,help="Window Title Text",required=True,dest="title_text")
arguments = parser.parse_args()
flags = type("", (), {"exit":False})()
update_thread = threading.Thread(target=update_proc,args=[weakref.proxy(flags),arguments])
update_thread.start()
if arguments.save_to_file:
log_message("saving to file",make_file_name(arguments))
while True:
if flags.exit: break
key = msvcrt.getch()
if key == b'q':
flags.exit = True
log_message("exiting")
break
update_thread.join()
相关文章:
- glfw 在创建之前/创建时实例化窗口位置
- Win32 C++ 将窗口位置设置为右下角
- QT:即使在static_cast后也无法在主窗口中设置对象的位置
- 恢复Qt窗口大小和位置问题
- 获取窗口中的鼠标位置
- 如何以编程方式更改基于对话框的窗口的大小和位置?
- 在qt中更改show()上的窗口位置
- SFML参考窗口在绝对位置绘制
- 如何在Mac OSX上的窗口客户端内获取真实的鼠标位置?
- 如何在应用程序窗口中设置光标位置?(C )
- 如何设置GLFW窗口的(0,0)坐标位置
- 将文件从一个位置移至窗口C 的另一个位置
- 如何在主窗口.ui界面的特定位置设置QSpinBox
- SDL2切换全屏:窗口位置重置
- C :使用全局鼠标钩的窗口重新位置
- 在DOS窗口中的任何位置写入
- 窗口多个显示器位置
- Gtkmm - 固定窗口的位置?
- 如何在使用网格布局时重叠qwidgets,并将重叠的widget定位在距离窗口边界特定距离的位置
- Win32 C++-检查窗口位置X/PositionY和宽度/高度是否已更改