Cmdow-一个win32窗口管理命令行工具

最近有个需求,将同一个程序运行8个实例,并按照规则在两个窗口上分布,本以为用bat就可以实现,结果发现没那么容易,搜了很久找到了这个工具cmdow.exe,发现这个东西真不错。

符合了我们项目的需求:单文件,离线可用,免安装,非常省心。

直接bat里调用,可以实现很多功能,但是我们这次的需求用bat实现还比较难(bat的for循环里的赋值结合运算很难搞),于是就结合C#实现了。

简易入门教程

第一部分

cmdow    : 显示所有进程

cmdow /t : 显示所有在任务栏上的进程

cmdow /t /p:显示所有任务栏上的进程并显示其窗口位置和大小

第二部分

CMDOW /TH | /TV | /CW | /MA | /UW | /AT | /FS | /WM
这几个都是分布窗口的命令,针对所有窗口的,具体参见官方文档

第三部分

CMDOW window {[/ACT] [/INA] [/ENA] [/DIS] [/VIS] [/HID] [/MIN] [/MAX] [/RES]} CMDOW window {[/REN newcaption] [/TOP] [/NOT] [/MOV left top] [/SIZ width height] [/CLS] [/END]}

针对具体某一个窗口的操作,只介绍一下我用到的:
首先,怎么确定是哪个窗口?
通过cmdow /t ,可以看到进程的 Handle(第一列)以及Caption(最后一列)

使用 Handle 或者 Caption 都可以指定具体的窗口,但是建议使用Handle,因为是唯一的(Caption可能存在一样的,例如上图中的“UE4_Program (64-bit, PCD3D_SM5)"就有两个实例)

例如设置上图中UE4_Program (64-bit, PCD3D_SM5)的窗口大小和位置:

cmdow 0x080A30 /siz 500 500

cmdow 0x080A30 /mov 0 0

这种方法可以具体设置到某个实例。

或者:

cmdow "UE4_Program (64-bit, PCD3D_SM5)" /siz 500 500

cmdow "UE4_Program (64-bit, PCD3D_SM5)" /mov 0 0

这种方法只能模糊查找,在两个UE4的进程中选一个进行设置,注意,因为Caption中含有空格,所以名字要用引号包含起来。

第四部分

其他命令举例:

/hid可以将进程隐藏,任务栏和系统托盘里都看不到(难怪cmdow容易被杀毒软件杀掉,这容易偷偷干坏事)

/cls将任务关闭

第五部分

此外使用cmdow还可以启动进程, 格式如下:

CMDOW /RUN [state] file [args] 

其中 state 可以是这三个参数中的一个: /MAX  /MIN  /HID,分别是最大化,最小化以及隐藏

file就是要执行的可执行文件,如果名称中包含空格,一样要用双引号包裹。 args就是可执行文件的其他参数(程序自己定义的)

第六部分

官方的几个使用案例:

关闭所有任务栏上的进程:

@echo off
:: Hide this console window so its not shown on taskbar
cmdow @ /hid
for /f %%a in (‘cmdow /t‘) do cmdow %%a /cls
:: Now close this console window
cmdow @ /cls

输出当前屏幕的尺寸:(level是0的进程是个特殊进程,能通过他获得当前屏幕分辨率)

@echo off
for /f "tokens=2,10-11" %%a in (‘cmdow /p‘) do (
if "%%a"=="0" set "WIDTH=%%b" & set "HEIGHT=%%c"
)
echo Resolution is %WIDTH%x%HEIGHT%

根据官方的案例,我们也可很容易写出这样的功能:
例如,设置所有名称为RAS_General的进程的窗口大小为800*800,并把窗口位置移动到0,0 点:

@echo off

for /f "tokens=1,9" %%a in (‘cmdow /t‘) do(

if "%%b"=="RAS_General"  (

cmdow %%a /siz 800 800

cmdow %%a /mov 0 0

)

)

时间: 2024-10-07 11:41:52

Cmdow-一个win32窗口管理命令行工具的相关文章

Linux 下一个很棒的命令行工具

导读 Taskwarrior 是 Ubuntu/Linux 下一个简单而直接的基于命令行的 TODO 工具.这个开源软件是我曾用过的最简单的基于命令行的工具之一.Taskwarrior 可以帮助你更好地组织你自己,而不用安装笨重的新工具——这有时丧失了 TODO 工具的目的. Taskwarrior是一个开源.跨平台.基于命令行的 TODO 工具,它帮你在终端中管理你的 to-do 列表.这个工具让你可以轻松地添加任务.展示列表.移除任务.而且,在你的默认仓库中就有,不用安装新的 PPA.在 U

Mac OS电源管理命令行工具pmset

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Yahei Mono"; color: #000000 } span.s1 { } 查看当前的电源管理配置: pmset -g 查看所有电源管理配置: pmset -g custom 修改外接电源供电状态下电源管理配置: sudo pmset -c <option> <value> 修改电池供电状态下电源管理配置: sudo pmset -b <op

JSON在线编缉器命令行工具-解放你的双手

对于JSON这种明星来说,哪哪儿都有对TA无微不至的关怀.各种IDE里已经成了标配.各种在线工具也是体贴入微,该有的功能都有了. 但对于我这种懒人来说,这还是不够简单,还是太麻烦: 1:打开本地文件,我还得双击或者右击打开文件. 2:打开了后还得拷贝 3:拷贝好后还得打开网站(首先我得记得住),然后再粘贴到线上编缉器 整修流程还是太繁琐,有没有一种方法,或者一条命令,让我一下子把这些事全都帮我干了? 当然有,下面为大家推荐一个好用的命令行工具: 官方 NPM package 安装:npm ins

**代码审查:Phabricator命令行工具Arcanist的基本用法

Phabricator入门手册 http://www.oschina.net/question/191440_125562 Pharicator是FB的代码审查工具,现在我所在的团队也使用它来进行代码质量的控制.其提供了一个differential(code review)命令行工具Arcanist(arc).本文仅从本人的日常使用中总结出Arcanist比较常用的用法做个简单介绍. 环境说明 OS: OS X Mountail Lion SCV: svn IDE: Eclipse 安装 将Ar

Tools - Windows系统下的命令行工具Cmder

cmder简介 官网:http://cmder.net/ GitHub:https://github.com/cmderdev/cmder Cmder是一个windows下的命令行工具,用来替代windows自带的cmd,非常简洁美观易用. 完整版cmder内建msysgit,支持git和常用Linux命令 支持左右上下分屏, 多 tab 终端 绿色便携,解压即可使用 cmder的组成 cmder结合了msysgit.ConEmu与Clink等多个程序组件,因此也同时具备了多种组件的功能. ms

显示器 Linux 性能 18 (一个命令行工具传递)

对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因.我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每一个Linux/Unix 系统管理员的工作.这些命令行工具能够在各种Linux系统下使用.能够用于监控和查找产生性能问题的解决办法.这个命令行工具列表提供了足够的工具.您能够挑选适用于您的监控场景的工具. 1.Top-Linux进程监控

BCP是SQL Server中负责导入导出数据的一个命令行工具

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.BCP可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出.在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中. 下面将详细讨论如何利用BCP导入导出数据. 1. BCP的主要参数介绍 BCP共有四个动作可以选择. (1) 导入. 这个动作使用in命令完成,后面

巧用命令行工具UCloud CLI,轻量操作API管理云资源

截止目前,UCloud已提供Python/Java/Golang等不同语言的API SDK.为进一步降低用户的运维人力投入,又推出了基于Golang SDK的命令行工具CLI(Command Line Interface),提供轻量化的API命令行调用方式,并在GitHub开源(https://github.com/ucloud/ucloud-cli).CLI的命令行交互方式更符合研发运维的操作习惯,并且一些典型使用场景通过CLI也更容易代码化的沉淀和维护. 下面是一些用户遇到的实际场景, 用C

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本. Mssql-scripter是一个跨平台的命令行工具,功能等同于SQL Server Management Studio中的Generate and Publish Scripts Wizard. 咱们能够在Linux.macOS和Windows上使用它