我目前正在尝试通过一个批处理文件打开两个窗口,然后调整大小并移动它们(以拆分屏幕)。打开单独的窗口很容易:
@echo off
cd "C:\Program Files (x86)\Internet Explorer"
start iexplore.exe
cd "C:\Program Files (x86)\Mozilla Firefox"
start firefox.exe
exit
但是我找不到一种方法来调整和移动我正在打开的窗口。我不希望使用任何第三方程序。我试着查看了start /?
的帮助菜单,但我不相信其中的任何选项对我有用。
Microsoft Windows [Version 10.0.10586]
(c) 2015 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>start /?
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
path Starting directory.
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application.
I The new environment will be the original environment passed
to the cmd.exe and not the current environment.
MIN Start window minimized.
MAX Start window maximized.
SEPARATE Start 16-bit Windows program in separate memory space.
SHARED Start 16-bit Windows program in shared memory space.
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class.
HIGH Start application in the HIGH priority class.
REALTIME Start application in the REALTIME priority class.
Press any key to continue . . .
发布于 2016-01-05 09:27:02
如果你已经安装了PowerShell (你很可能已经安装了),你可以使用user32.dll来移动和调整窗口。曾几何时,我需要一个脚本来完成您需要的工作,于是我找到了this,并对其进行了调整以满足我的需求。然后,我使用this将其转换为批处理/ PowerShell混合文件,以便只需双击该文件即可运行PowerShell脚本。
<# :
:: Based on https://gist.github.com/coldnebo/1148334
:: Converted to a batch/powershell hybrid via http://www.dostips.com/forum/viewtopic.php?p=37780#p37780
@echo off
setlocal
cls
set "POWERSHELL_BAT_ARGS=%*"
if defined POWERSHELL_BAT_ARGS set "POWERSHELL_BAT_ARGS=%POWERSHELL_BAT_ARGS:"=\"%"
endlocal & powershell -NoLogo -NoProfile -Command "$_ = $input; Invoke-Expression $( '$input = $_; $_ = \"\"; $args = @( &{ $args } %POWERSHELL_BAT_ARGS% );' + [String]::Join( [char]10, $( Get-Content \"%~f0\" ) ) )"
goto :EOF
#>
# Add the relevant section of the Win32 API to the PowerShell session
# Allows windows to be moved and resized
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
}
"@
################################################################################
# Moves and resizes the window based the broswer
#
# Arguments: $browser - the browser being moved and resized
# Returns: None
################################################################################
Function MoveAndResize ($browser)
{
# $browser_path is the full path to the browser
# $screen_x is the horizontal location of the window on the screen
# $screen_y is the vertical location of the window on the screen
# $win_x is the width of the target window
# $win_y is the height of the target window
Switch($browser){
InternetExplorer{
$browser_path="C:\Program Files\Internet Explorer\IEXPLORE.EXE"
$screen_x = 0
$screen_y = 0
$win_x = 960
$win_y = 1080
break
}
Firefox{
$browser_path="C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
$screen_x = 960
$screen_y = 0
$win_x = 960
$win_y = 1080
break
}
default {continue}
}
# Start the desired browser
Start-Process $browser_path
# Wait one second until the browser is fully loaded
Start-Sleep -S 1
# Find the running process where the application path matches $browser_path
$browser = (Get-Process | where {$_.Path -eq $browser_path}).MainWindowHandle
[Win32]::MoveWindow($browser, $screen_x, $screen_y, $win_x, $win_y, $true)
}
MoveAndResize "InternetExplorer"
MoveAndResize "Firefox"
请注意,我使用的是iexplore的Program Files
版本,而不是Program Files (x86)
版本,因为由于某些原因,该版本不能移动或调整大小。
https://stackoverflow.com/questions/34597083
复制相似问题