Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Фиксированное положение окна программы при ее запуске

Ответить
Настройки темы
Любой язык - [решено] Фиксированное положение окна программы при ее запуске

Аватара для paulkorotoon

Старожил


Сообщения: 392
Благодарности: 40


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте. Такой вопрос: на каком языке можно написать скрипт, при выполнении которого запускалась бы определенная программа и ее окно занимало бы на рабочем столе определенное положение?

-------
Весь мир — у тебя в голове.


Отправлено: 19:53, 18-09-2009

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Paul-SFL, на скриптовых языках, подерживающих WinAPI (VBA, AutoIT, AutoHotKey и т.д.), либо имеющих специализированный инструментарий по управлению окнами (AutoIT, AutoHotKey), либо на CMD через специализированные утилиты типа CMDOW, пример:
Код: Выделить весь код
@Echo Off

Set $Left=0
Set $Top=0
Set $Width=200
Set $Hight=200

notepad "%~nx0"
cmdow "%~nx0 - Блокнот" /MOV %$Left% %$Top% /SIZ %$Width% %$Hight%
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:29, 20-09-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для paulkorotoon

Старожил


Сообщения: 392
Благодарности: 40

Профиль | Отправить PM | Цитировать


amel27, спасибо . Попробую через CMDOW..

-------
Весь мир — у тебя в голове.


Отправлено: 15:38, 20-09-2009 | #3


Аватара для paulkorotoon

Старожил


Сообщения: 392
Благодарности: 40

Профиль | Отправить PM | Цитировать


amel27, а помочь можешь немного ? Я в скриптах ноль просто.. Скопировал CMDOW в system32, сама программа работает. Вот скрипт, который ты примером привел - не работает (запускал из командной строки). Сначала блокнот предлагает создать файл "%~nx0", после второй попытки уже его открывает, но размер окна не меняется.
Я написал такое:
Код: Выделить весь код
@Echo Off

Set $Left=0
Set $Top=0
Set $Width=1000
Set $Hight=700 

F:\Setups\Sysinternals\Autoruns\autoruns.exe
cmdow "(здесь, как я понял, надо писать имя окна
 в hexadecimal format, но как это сделать - 
не знаю)" /SIZ %$Width% %$Hight%
Autoruns запускается, с размером - пока парюсь. Косячу ли я где-то?

-------
Весь мир — у тебя в голове.


Отправлено: 18:32, 22-09-2009 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Paul-SFL, а не проще ли Вам будет использовать:
Код: Выделить весь код
"C:\Program Files\CMDOW\cmdow.exe" /run /max "C:\Program Files\Autoruns\autoruns.exe"
или даже:
Код: Выделить весь код
start "" /max "C:\Program Files\Autoruns\autoruns.exe"
С «cmdow.exe» работать не очень удобно в том смысле, что она не работает с классами окон, потому сам я предпочитаю «nircmd.exe»/«nircmdc.exe». Тем не менее, можно попробовать сделать, например, так:
Код: Выделить весь код
@echo off

setlocal enableextensions enabledelayedexpansion

set /a Left   = 100
set /a Top    = 100
set /a Width  = 400
set /a Height = 600

set strCMDOW=%ProgramFiles%\CMDOW\cmdow.exe
set strTitle=Autoruns [%USERDOMAIN%\%USERNAME%] - Sysinternals: www.sysinternals.com

start "" "%ProgramFiles%\Autoruns\autoruns.exe"
:Wait
	ping -n 2 localhost >nul
	"%strCMDOW%" "%strTitle%" 1>nul 2>nul
if errorlevel 1 goto :Wait

"%strCMDOW%" "%strTitle%" /MOV %Left% %Top% /SIZ %Width% %Height%

endlocal
exit /b 0
Замечания:
  • Я не очень понял почему, но «autoruns.exe» ведёт себя как консольное приложение (ранее я в пакетных файлах работал только с «autorunsc.exe»); потому — «start …».
  • Заголовок окна «autoruns.exe» содержит «Домен\Пользователь»; добавляем их посредством переменных окружения.
  • Цикл ожидания нужен для того, чтобы приложение «autoruns.exe» гарантированно успело создать окно; проверяется сие обычным образом, через опрос окон посредством самой утилиты «cmdow.exe» и проверку кода возврата, который она поддерживает.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:51, 22-09-2009 | #5


Аватара для paulkorotoon

Старожил


Сообщения: 392
Благодарности: 40

Профиль | Отправить PM | Цитировать


Iska, только давай на "ты" . Спасибо за советы , но я, признаться, не слишком понимаю.
Цитата Iska:
Тем не менее, можно попробовать сделать, например, так »
Это через CMDOW, да? Или через Nircmd?
P.S. Я еще, прочитав help по cmdow, так писал:
Код: Выделить весь код
cmdow /run F:/Setups/Sysinternals/Autoruns/autoruns.exe window (опять же, не знаю, как имя окна записать) /siz 1000 700
- бред полный , да?

-------
Весь мир — у тебя в голове.


Отправлено: 21:54, 22-09-2009 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Paul-SFL:
Это через CMDOW, да? Или через Nircmd?
Через «cmdow.exe»,
читать дальше »
смотрите выше:
Цитата:
Код: Выделить весь код
…
set strCMDOW=%ProgramFiles%\CMDOW\cmdow.exe
	…
	"%strCMDOW%" "%strTitle%" 1>nul 2>nul
…
"%strCMDOW%" "%strTitle%" /MOV %Left% %Top% /SIZ %Width% %Height%
…
В переменной «strCMDOW» указываем путь к исполняемому файлу «cmdow.exe». У меня он такой: «c:\Program Files\CMDOW\cmdow.exe», потому пишем «%ProgramFiles%\CMDOW\cmdow.exe»; Вы, естественно, указываете свой (если, конечно, «cmdow.exe» не лежит в одном из каталогов, перечисленных в PATH).

В переменной «strTitle» указываем заголовок окна «autoruns.exe». У меня версия 9.41; при её запуске я вижу в заголовке окна такой текст: «Autoruns [ДоменXXX\ПользовательXXX] - Sysinternals: www.sysinternals.com», потому вместо «ДоменXXX» подставляем переменную окружения «USERDOMAIN», а вместо «ПользовательXXX», соответственно, — «USERNAME». В итоге получаем следующую конструкцию:
Код: Выделить весь код
set strTitle=Autoruns [%USERDOMAIN%\%USERNAME%] - Sysinternals: www.sysinternals.com
Переменные «strCMDOW» и «strTitle» используются ниже, например:
Код: Выделить весь код
"%strCMDOW%" "%strTitle%" 1>nul 2>nul
разворачивается при исполнении в нечто наподобие:
Код: Выделить весь код
"c:\Program Files\CMDOW\cmdow.exe" "Autoruns [MyDomain\Pupkin] - Sysinternals: www.sysinternals.com" 1>nul 2>nul

Если что-то непонятно, спрашивайте, но лучше конкретными вопросами. Можете для начала закомментировать «@echo off», убрать «…>nul» и посмотреть, как это работает. Также весьма рекомендую Process Monitor от того же автора [подразумевается Autoruns — Iska] — очень помогает отслеживать порядок вызова/исполнения приложений в рамках пакетного файла, возможные неточности при передаче параметров, потерянные/лишние кавычки и т.п.

Цитата Paul-SFL:
P.S. Я еще, прочитав help по cmdow, так писал…
Paul-SFL, судя по описанию
читать дальше »
Цитата CMDOW Commandline Window Utility [v1.4.3]:

Usage 4. This form of CMDOW executes the specified file or opens it using the the application associated with the filename extension.

CMDOW /RUN [state] file [args]

/RUN : Executes the specified file if possible, otherwise opens it using the the application associated with the filename extension.
state : Requests how the applications window is initially displayed. Use /MIN for minimized, /MAX for maximized and /HID for hidden. If omitted the application is started in its default show state. Some applications ignore this, use CMDOW to alter the window state after the application has started.
file : File to execute/open. Use double quotes if filename contains spaces.
args : Optional arguments passed on to the application. Specify any args exactly as you would if executing/opening the file directly.
и по:
Код: Выделить весь код
cmdow.exe /?
такая форма командной строки утилитой не поддерживается.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:32, 23-09-2009 | #7


Аватара для paulkorotoon

Старожил


Сообщения: 392
Благодарности: 40

Профиль | Отправить PM | Цитировать


Спасибо всем. Сейчас нет ни времени, ни особой потребности этим заниматься, но на будущее непременно учту все советы.

-------
Весь мир — у тебя в голове.


Отправлено: 00:22, 15-10-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Фиксированное положение окна программы при ее запуске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Пропадает Aero при запуске программы art_2012 Microsoft Windows 7 4 23-09-2011 11:35
Разное - [решено] Ошибка при запуске программы (Миранда) в Vista bnw Microsoft Windows Vista 8 28-07-2009 16:25
черные окна MS DOS при запуске любой программы Just_K Лечение систем от вредоносных программ 11 23-07-2009 23:38
Окна при запуске и выключении comsun Автоматическая установка Windows 2000/XP/2003 15 04-01-2009 20:05
Разное - [решено] изменить положение окна San_dr Оформление Windows XP 4 24-11-2008 11:57




 
Переход