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

时间:2011-11-02 08:09:22

标签: windows command-line position

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

有没有办法通过命令提示符执行此操作?还有别的吗?

8 个答案:

答案 0 :(得分:25)

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

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

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

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

答案 1 :(得分:22)

您需要一个额外的实用程序,例如cmdow.exe来完成此操作。请特别注意/mov开关。您可以从cmdow启动程序或单独运行程序,然后调用cmdow根据需要移动/调整其大小。

答案 2 :(得分:16)

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

经过一些实验后,我发现了一个按照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 :(得分: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)恶意软件作者用来操纵窗口。它本身并无害。

答案 4 :(得分:2)

如果您只是想在启动时启动一个窗口或从桌面上的快捷方式开始,那么Bill K的回答是最优雅的。

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

感谢 FuzzyWuzzy ,在 AutoHotKey 中设置以下代码(1920x1080屏幕分辨率的快速和肮脏示例-无需自动宽度和高度计算或功能使用等) 实现以下目标: enter image description here

v_cmd = c:\temp\1st_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
SetTitleMatchMode 2
SetTitleMatchMode Fast
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, 0,1920,500

v_cmd = c:\temp\2nd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, 500,960,400

v_cmd = c:\temp\3rd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 960, 500,960,400

小编辑自动X / Y屏幕尺寸计算[4台显示器] 相同的代码,但也可以用于3/2台显示器。

Screen_X = %A_ScreenWidth%
Screen_Y = %A_ScreenHeight%

v_cmd = c:\temp\1st_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
SetTitleMatchMode 2
SetTitleMatchMode Fast
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, 0,Screen_X/2,Screen_Y/2

v_cmd = c:\temp\2nd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, Screen_X/2, 0,Screen_X/2,Screen_Y/2

v_cmd = c:\temp\3rd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, Screen_Y/2,Screen_X/2,Screen_Y/2

v_cmd = c:\temp\4th_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, Screen_X/2, Screen_Y/2,Screen_X/2,Screen_Y/2

答案 7 :(得分:1)

您可以在此处使用nircmd项目:http://www.nirsoft.net/utils/nircmd.html

示例代码:

nircmd win move ititle "cmd.exe" 5 5 10 10
nircmd win setsize ititle "cmd.exe" 30 30 100 200
nircmd cmdwait 1000 win setsize ititle "cmd.exe" 30 30 1000 600