Cmdow-一個win32視窗管理命令列工具

來源:互聯網
上載者:User

標籤:for迴圈   需求   awr   命令列   螢幕   圖片   特殊   evel   github   

最近有個需求,將同一個程式運行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

  )

)

Cmdow-一個win32視窗管理命令列工具

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.