PDA

Показать полную графическую версию : Оболочки для запуска програм.


semiono
31-07-2010, 04:55
source + binary (http://slil.ru/29518633)

Вот написал себе игрушку, наверняка у всех есть кодеки 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
как можно получить текущий размер экрана? »
Макросы (из русской справки):
@DesktopWidth - ширина экрана в пикселах (разрешение по вертикали горизонтали).
@DesktopHeight - высота экрана в пикселах (разрешение по горизонтали вертикали).
Это числа с которыми можно производить арифметические действия.

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

Например,

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

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

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

FlatX007
02-08-2010, 18:55
"Сырой" рабочий пример

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

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

FlatX007
02-08-2010, 21:35
Ключ был для примера

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

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

dwerf
03-08-2010, 11:07
$CmdLine[0] - Кол-во параметров
$CmdLine[1] - %1
$CmdLine[2] - %2
$CmdLineRaw - %*

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




© OSzone.net 2001-2012