Оболочки для запуска програм.

Ответить
Аватара пользователя
semiono

Оболочки для запуска програм.

Сообщение semiono »

source + binary




Вот написал себе игрушку, наверняка у всех есть кодеки xvid/ac3 итп.. Хотелось бы узнать насколько удачно я зделал мой детский скрипт )))





Код:

Код: Выделить всё

SplashImageOn("", @ScriptDir & "\xvid.bmp" , 213, 44, -1, 100, 1)
ShellExecute('rundll32.exe', 'xvid.ax,Configure', @SystemDir & '\')
WinWait('[Class:#32770]')
WinSetTitle('[Class:#32770]', '', '          ..::. XviD .::..')
WinMove('          ..::. XviD .::..', '', 401, 163, 350, 532, 4)
SplashOff()

Если есть идеи улучшить тут что-то?

У меня есть ещё вопрос... , вот ac3config.exe не поддерживает стили XP, особенно под x64,

я пытался подложить ac3config.exe.manifest, и даже так ac3filter.ax.manifest - не помогло!

Тоже самое манифест для скрипта тоже ничего не дал.

Есть ли возможность через автоит скрипт как-то заставить окно поддерживать стили?

Ведь скрипт вроде бы должен выступать в роли хоста или родительского окна??

Хотя ShellExecute() тут не лучшее решение, так как запускает прогу как внешний процесс... ??



Вот на всякий случай минимальный манифест для x64



Код:

Код: Выделить всё

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="amd64"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
</dependentAssembly>
</dependency>
</assembly>

----

Чуть не забыл самое главное! Хотел давно ещё узнать, как можно получить текущий размер экрана?

Мне это нужно для того чтобы установить любое окно программы посередине экрана...

И не только по середине, а разные варианты могут быть. Но главное тут как получить разрешение,

и как от него отсчитать, если не трудно подробно покажите?
Аватара пользователя
madmasles

Re: Оболочки для запуска програм.

Сообщение madmasles »

Цитата semiono:



как можно получить текущий размер экрана?
Оболочки для запуска програм.




Макросы (из русской справки):


Цитата:



@DesktopWidth - ширина экрана в пикселах (разрешение по вертикали горизонтали).

@DesktopHeight - высота экрана в пикселах (разрешение по горизонтали вертикали).



Это числа с которыми можно производить арифметические действия.
Аватара пользователя
semiono

Re: Оболочки для запуска програм.

Сообщение semiono »

Очень нужна такая штука - GetCommandLine()... Сейчас поясню!

Нужно чтоб скрипт запускающий приложение передавал любые параметры коммандной строки на вход приложения...



Например,



script.exe /help - данный скрипт запустит "msiexec.exe /help" или что угодно наподобие этому.

Никакого парсинга не должно быть, просто передача или игнорирование любого ввода.



Так же открытым вопрос об стилях XP, можно ли прорисовать стиль приложению которое

не поддерживает manifest, или даже если поддерживает, но manifest просто отсутствует.



@DesktopWidth - это действительно ценная штука! Можно сразу прописать параметры экрана

в реестр и потом открыть приложение с предустановленными параметрами на любом экране!
Аватара пользователя
FlatX007

Re: Оболочки для запуска програм.

Сообщение FlatX007 »

"Сырой" рабочий пример





Код:

Код: Выделить всё

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$Key = "/help"
$aArray = StringSplit($CmdLineRaw, " ")
If $aArray[1]  "" Then
    For $i = 1 To $aArray[0]
        ConsoleWrite("Key #" & $i & " = " & $aArray[$i] & @CRLF)
    Next
    If $aArray[1] = $Key And $aArray[0] = 1 Then RunWait("msiexec.exe " & $aArray[1])
EndIf
Аватара пользователя
semiono

Re: Оболочки для запуска програм.

Сообщение semiono »

Код:

Код: Выделить всё

$Key = "/help"

Зачем ключ ввода указан явно? Я же говорил нужна передача любого ввода как есть.

Иначе придётся каждый раз описывать все свитчеры приложений которые не всегда сразу известны.

Хотелось бы универсальный метод, если это возможно. Чтобы потом как шаблон использовать.

...что передал скрипту, то и вылетело на вход приложению...

если это не валидно, то приложение само разберётся...



Или это как пример было? Но я сам не разберусь. Изображение
Аватара пользователя
FlatX007

Re: Оболочки для запуска програм.

Сообщение FlatX007 »

Ключ был для примера




Цитата semiono:



...что передал скрипту, то и вылетело на вход приложению...
Оболочки для запуска програм.




На примере Aimp



Код:

Код: Выделить всё

$aArray = StringSplit($CmdLineRaw, " ")
;~ If $aArray[1]  "" Then RunWait("msiexec.exe " & $aArray[1])
If $aArray[1]  "" Then
    RunWait("aimp_2.61.570.exe " & $aArray[1]) ; Запуск с ключём ( aimp_2.61.570.exe /S )
Else
    RunWait("aimp_2.61.570.exe") ; Если нет ключа, запускаем без него.
EndIf
Аватара пользователя
semiono

Re: Оболочки для запуска програм.

Сообщение semiono »

Хорошо! Изображение

Один вопросик ещё, а вот в батниках обычно я пишу так aimp_2.61.570.exe %*

А здесь в автоит похожего ничего нет? Чисто из любопытства спрашиваю.

Или автоит это не батник и само собой что тут другие законы. Изображение

И ещё, а что интересно если после Else комманду убрать, хотя это можно проверить... ошибка будет?

Вообщем я доволен, надеюсь что будет хорошо работать... ОК!
Аватара пользователя
dwerf

Re: Оболочки для запуска програм.

Сообщение dwerf »

$CmdLine[0] - Кол-во параметров

$CmdLine[1] - %1

$CmdLine[2] - %2

$CmdLineRaw - %*



Читаем справку про параметры командной строки.
Ответить

Вернуться в «AutoIt»