Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Оболочки для запуска програм. (http://forum.oszone.net/showthread.php?t=181818)

semiono 31-07-2010 04:55 1463957

Оболочки для запуска програм.
 
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 31-07-2010 09:12 1463973

Цитата:

Цитата semiono
как можно получить текущий размер экрана? »

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

@DesktopWidth - ширина экрана в пикселах (разрешение по вертикали горизонтали).
@DesktopHeight - высота экрана в пикселах (разрешение по горизонтали вертикали).
Это числа с которыми можно производить арифметические действия.

semiono 02-08-2010 08:06 1464957

Очень нужна такая штука - GetCommandLine()... Сейчас поясню!
Нужно чтоб скрипт запускающий приложение передавал любые параметры коммандной строки на вход приложения...

Например,

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

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

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

FlatX007 02-08-2010 18:55 1465417

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

Код:

#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 02-08-2010 20:03 1465472

Код:

$Key = "/help"
Зачем ключ ввода указан явно? Я же говорил нужна передача любого ввода как есть.
Иначе придётся каждый раз описывать все свитчеры приложений которые не всегда сразу известны.
Хотелось бы универсальный метод, если это возможно. Чтобы потом как шаблон использовать.
...что передал скрипту, то и вылетело на вход приложению...
если это не валидно, то приложение само разберётся...

Или это как пример было? Но я сам не разберусь. :(

FlatX007 02-08-2010 21:35 1465558

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

Цитата:

Цитата 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 03-08-2010 04:06 1465701

Хорошо! :)
Один вопросик ещё, а вот в батниках обычно я пишу так aimp_2.61.570.exe %*
А здесь в автоит похожего ничего нет? Чисто из любопытства спрашиваю.
Или автоит это не батник и само собой что тут другие законы. :)
И ещё, а что интересно если после Else комманду убрать, хотя это можно проверить... ошибка будет?
Вообщем я доволен, надеюсь что будет хорошо работать... ОК!

dwerf 03-08-2010 11:07 1465839

$CmdLine[0] - Кол-во параметров
$CmdLine[1] - %1
$CmdLine[2] - %2
$CmdLineRaw - %*

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


Время: 05:38.

Время: 05:38.
© OSzone.net 2001-