Показать полную графическую версию : [решено] управление окнами из командной строки
нужно через батник запустить несколько окон и расположить их в определеном порядке
с запуском все понятно
какой командой можно задавать координаты положения окон?
ОС windows 7 x64, windows XP x86 (32)
iron86, пакетные файлы не поддерживают работу с окнами. Используйте сторонние средства для манипулирования окном приложения после запуска, например NirCmd - Windows command line tool (http://www.nirsoft.net/utils/nircmd.html), либо переходите на PowerShell.
либо переходите на PowerShel »
это вариант, только не сталкивался еще
там можно сохранять в файлы типа bat?
если да, то какой командой можно реализовать задуманное?
там можно сохранять в файлы типа bat? »
Поясните Ваш вопрос.
если да, то какой командой можно реализовать задуманное? »
Например, так (на основе Win32 API из PowerShell 1.0 « PowerShell и другие скрипты (http://xaegr.wordpress.com/2009/02/11/powershell1-api/)):
# Создаём объект CodeProvider, для выполнения кода c# в нашем сценарии
$CodeProvider = New-Object -TypeName Microsoft.CSharp.CSharpCodeProvider
# В этой переменной можно задать параметры для выполнения кода
$CompilerParameters = New-Object System.CodeDom.Compiler.CompilerParameters
# Константы задающие действие функции SetWindowPos
$HideWindow = 0x0080
$ShowWindow = 0x0040
# С помощью конструкции "HereString" помещаем в переменную $Code код c# объявляющий функцию SetWindowPos
$Code = @"
using System;
using System.Runtime.InteropServices;
namespace Win32API
{
public class Window
{
[DllImport("user32.dll")]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
}
}
"@
# Выполняем код c#
[void]$CodeProvider.CompileAssemblyFromSource($CompilerParameters, $Code)
# Запускаем процесс 'notepad.exe'
$oProcess = [System.Diagnostics.Process]::Start("notepad.exe")
# Ожидаем основного окна приложения
[void]$oProcess.WaitForInputIdle()
# Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, 0, 100, 100, 400, 400, $ShowWindow))
# Запоминаем хэндл окна
$hPrev = $oProcess.MainWindowHandle
# Запускаем процесс 'calc.exe'
$oProcess = [System.Diagnostics.Process]::Start("calc.exe")
[void]$oProcess.WaitForInputIdle()
#Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, $hPrev, 200, 200, 400, 400, $ShowWindow))
# Запоминаем хэндл окна
$hPrev = $oProcess.MainWindowHandle
# Запускаем процесс 'wordpad.exe' с параметром
$oProcess = [System.Diagnostics.Process]::Start("wordpad.exe", "C:\WINDOWS\system32\eula.txt")
[void]$oProcess.WaitForInputIdle()
#Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, $hPrev, 300, 300, 500, 500, $ShowWindow))
на калькулятор почему-то не действует
iron86, вот на этом сайте (http://www.f2ko.de/programs.php?lang=en&pid=cmd) найдете нужные Вам утилиты для данной задачи.
sewell, вместо кучи утилит достаточно одного NirCmd (http://www.nirsoft.net/utils/nircmd.html), о котором было упомянуто выше.
Поясните Ваш вопрос. »
последовательность команд командной строки можно сохранить в исполнительный файл bat, запустив который выполняются команды
можно ли сделать тоже самое в пауер шел?
iron86, PowerShell — это такая же исполнительная оболочка операционной системы, как и командный процессор. Со своими командами. Основа его — платформа .Net.
попробовал NirCmd, действительно прикольная штука, но нужных мне команд не нашел
подскажите, кто хорошо знает
Например, команды exec (http://www.nirsoft.net/utils/nircmd2.html#exec) и win (http://www.nirsoft.net/utils/nircmd2.html#win).
Например, команды exec и win. »
мне нужно именно задать координаты на мониторе например 0х100, а не минимизировать, максимизировать и скрыть
с помощью cmdow делаю так:
start file1
start file2
start file3
start file4
cmdow /th
все прекрасно работает, но при каждом перезапуске окна располагаются в разном порядке, необходимо же чтоб порядок расположения всегда был одинаков.
Можно, имея дескриптор окна, задать окну нужное положение?
cmdow позволяет получить дескрипторы всех запущеных окон. как выделить нужный дескриптор?
мне нужно именно задать координаты на мониторе например 0х100, а не минимизировать, максимизировать и скрыть »
Должно быть мы с Вами читаем разную документацию к одному и тому же приложению:
win [action] [find] [window to find] [Additional Parameters]
…
This command allows you to close, hide, show, maximize, and minimize the specified window.
The parameters:
[action]: The action you want to do on the specified window:
…
* setsize: Set the size of the specified windows. the values in [Additional Parameters] specifies the desired window size - x, y, width, height.
* move: move/resize the window. the values in [Additional Parameters] specifies the number of pixels to move/change: x, y, width, height.
…
Iska »
простите, я от этого отказался, использую cmdow
параметр /mov left top »
спасибо, с этим тоже уже разобрался.
осталось только понять как автоматизировать получение десриптора нужного окна и использовать его
дескриптор всех окон, которые есть в панели задач получаю так:
C:\>cmdow /t /p
размер окна и его положение задаю так:
C:\>cmdow 0x040848 /siz 500 200 /mov 100 50
кто б еще объяснил как автоматизировать получение и выделение нужного дескриптора, проблема была б решена :)
спасибо
Разобрался!
Сделал так:
start ren_7
pause
cmdow "udp://239.1.1.7:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.7:1234 - медиа-проигрыватель vlc" /mov 481 0
start rtvi_1
pause
cmdow "udp://239.1.1.1:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.1:1234 - медиа-проигрыватель vlc" /mov 0 0
start tnt_5
pause
cmdow "udp://239.1.1.5:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.5:1234 - медиа-проигрыватель vlc" /mov 961 0
start tdk_3
pause
cmdow "udp://239.1.1.3:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.3:1234 - медиа-проигрыватель vlc" /mov 1441 0
start perez_6
pause
cmdow "udp://239.1.1.6:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.6:1234 - медиа-проигрыватель vlc" /mov 0 541
start dom_4
pause
cmdow "udp://239.1.1.4:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.4:1234 - медиа-проигрыватель vlc" /mov 481 541
start sts_2
pause
cmdow "udp://239.1.1.2:1234 - медиа-проигрыватель vlc" /siz 480 540
cmdow "udp://239.1.1.2:1234 - медиа-проигрыватель vlc" /mov 961 541
pause
Всем спасибо за помощь!!!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.