通过命令行设置应用程序的窗口位置

问题描述 投票:32回答:6

我有一个应用程序,从我桌面的0x0位置开始。我想在桌面中心打开它。我不想打开它并使用移动命令将其移动到中心,只是希望我的应用程序立即开始在中心位置。

有没有办法通过命令提示符这样做?还有其他方法吗?

windows command-line position
6个回答
24
投票

你需要一个额外的实用程序,如cmdow.exe来实现这一目标。特别注意/mov开关。您可以从cmdow启动程序或单独运行它,然后根据需要调用cmdow来移动/调整它。


25
投票

已经发现AutoHotKey非常适合窗口定位任务。

这是一个示例脚本。将其命名为notepad.ahk,然后从命令行运行它或双击它。

Run, notepad.exe
WinWait, ahk_class Notepad
WinActivate
WinMove A,, 10, 10, A_ScreenWidth-20, A_ScreenHeight-20

它将启动一个应用程序(记事本),然后调整窗口大小,使其在窗口中居,所有边都有10像素边框。


18
投票

我只是在寻求做同样的事情时才发现这个问题。

经过一些实验后,我发现了一个按照OQ想要的方式运行的答案,并且很简单,但不是很通用。

在桌面或其他地方创建快捷方式(可以使用右键单击菜单中的create-shortcut帮助程序),将其设置为运行程序“cmd.exe”并运行它。窗口打开后,将其放置在您想要窗口的位置。要保存该位置,请调出属性菜单并单击“保存”。

现在,如果你想要你也可以设置其他属性,如颜色,我强烈建议将缓冲区更改为120-240的宽度和9999的高度,并启用快速编辑模式(为什么这些不是默认值!?!)

现在你有一个可行的快捷方式。为要在其他位置打开的每个CMD窗口创建其中一个。

现在有了这个技巧,windows CMD START命令可以运行快捷方式。您无法在启动之前以编程方式重新定位窗口,但至少它会出现在您想要的位置,您可以从批处理文件或其他程序启动它(以及其他程序)。

使用cmd / c的快捷方式,您可以创建一个快捷方式,可以使用如下所示的命令一次启动所有链接:

cmd /c "start cmd_link1 && start cmd_link2 && start cmd_link3"

这将打开您喜爱的位置的所有命令窗口,并单击设置属性,如前景色,背景色,字体,管理员模式,快速编辑模式等等。现在将一个“链接”移动到您的启动文件夹中,您就可以进行自动状态恢复,而根本没有外部程序。

这是一个非常直接的解决方案。这不是一般目的,但我相信它将解决大多数读这个问题的人试图解决的问题。

我最近这样做了所以我会在这里发布我的cmd文件:

cd /d C:\shortucts
for %%f in (*.lnk *.rdp *.url) do start %%f
exit

编辑后期:我没有提到如果原始cmd / c命令运行提升,那么你的每一个窗口都可以(如果选择了提升)开始提升,而不会单独重新提示你。这非常方便,因为我每次启动计算机时都会启动3 cmd窗口和3个其他应用程序。


3
投票

比尔K.的答案是最优雅的,如果你只是想在启动时启动一个窗口或从桌面上的快捷方式开始。

只需打开您想要的窗口,右键单击并选择属性。选择“布局”,取消选中“让系统位置窗口”,然后单击“确定”。

窗口现在将在您想要的位置打开。您可以在其他选项卡上同时设置字体和窗口颜色。甜。


2
投票

这可能应该是cmdow.exe答案下的注释,但这里是一个简单的批处理文件,我写的是允许对任务栏中可以看到的所有窗口进行相当复杂和简单的控制。

第一步是运行cmdow /t以显示这些窗口的列表。查看列Image中的图像名称,然后命令行:

mycmdowscript.cmd imagename

以下是批处理文件的内容:

:: mycmdowscript.cmd

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

SET IMAGE=%1
SET ACTION=/%2
SET REST=1
SET PARAMS=

:: GET ANY ADDITIONAL PARAMS AND STORE THEM IN A VARIABLE

FOR %%I in (%*) DO (
   IF !REST! geq 3 (
      SET PARAMS=!PARAMS! %%I
   )
   SET /A REST+=1
)

FOR /F "USEBACKQ tokens=1,8" %%I IN (`CMDOW /t`) DO (
     IF %IMAGE%==%%J (

     :: you now have access to the handle in %%I
     cmdow %%I %ACTION% !PARAMS!

     )
)

ENDLOCAL
@echo on

EXIT /b

示例用法

:: will set notepad to 500 500

mycmdowscript.cmd notepad siz 500 500

您可能可以重写此操作以允许对单个命令执行多个操作,但我还没有尝试过。

为此,cmdow.exe必须位于您的路径中。请注意,当您下载此文件时,您的AV程序可能会对您大喊大叫。此工具过去曾被恶意软件作者用来操纵窗口(I guess)。它本身并无害处。


1
投票

如果您乐意运行批处理文件以及一些小帮助程序,则会在此处发布完整的解决方案: How can a batch file run a program and set the position and size of the window? - Stack Overflow (asked: May 1, 2012)

© www.soinside.com 2019 - 2024. All rights reserved.