PDA

Показать полную графическую версию : Как открыть программу, которая запускается сразу в трей, при том что трей не виден


Mikhail83
24-03-2010, 13:11
Как с помощью AutoIt развернуть на весь экран окно сторонней программы, которая запускается сразу в трей при том что трей не виден (это терминальный сервер и explorer там не загружается, установлен запуск сразу программы и её просто не видно).

zonderz
24-03-2010, 15:21
Mikhail83

просто: включите опцию в программе Запускать в полноэкранном режиме.

Mikhail83
24-03-2010, 15:54
Простите, не пояснил, я имел ввиду стороннюю программу, которую нужно открыть с помощью AutoIt. К сожалению в ней нет данной опции.

kaster
24-03-2010, 16:00
а программа запускается AutoIt'ом или другими средствами?
можно развернуть программу зная например Title окна, который отвечает за эту программу.
Например через функцию
WinList()
можно посмотреть список всех окон и найти свой, каким-то образом.

После выявления нужного окна, нужно ему задать состояние "разворачивания на весь экран"
$title = 'Title нужного окна'
WinSetState($title, '', @SW_MAXIMIZE)

Mikhail83
24-03-2010, 16:09
а программа запускается AutoIt'ом или другими средствами?
можно развернуть программу зная например Title окна, который отвечает за эту программу.
Например через функцию »

Да, но окна программы пока еще нет, чтобы оно появилось нужно два раза кликнуть на значке в трее, а проблема еще и в том что самого значка не видно, несмотря на то что программа в процессах висит. Поскольку explorer.exe не будет загружен. Можно ли как то по PID её вызвать?

madmasles
24-03-2010, 16:50
Mikhail83,
Мне кажется, все зависит от свойств самой программы. Например, чтобы открыть окно ESET Smart Security достаточно WinSetState("ESET Smart Security", "", @SW_SHOW)А чтобы открыть окно Ad Muncher, надо или кликнуть по иконке в трее, илиIf ProcessExists("AdMunch.exe") Then
Run("C:\Program Files\Ad Muncher\AdMunch.exe")
EndIf

kaster
24-03-2010, 17:13
Да, но окна программы пока еще нет »
ты пробовал смотреть список всех существующих окон через команду
#include <array.au3>
$a = WinList()
_ArrayDisplay($a)
и найти там нужное? я более чем уверен, что окно есть, просто оно скрытое.

И вот еще, лучше сделай не просто @SW_SHOW, еще и можно сделать его активным
WinSetState($title, '', @SW_SHOW)
WinActivate($title)

Mikhail83
24-03-2010, 17:25
ты пробовал смотреть список всех существующих окон через команду »
подтверждаю, окно висит, однако после команд:
WinSetState("окно программы", "", @SW_SHOW)
WinSetState("окно программы", "", @SW_MAXIMIZE)
оно появляется, но "пустое", без интерфейса. Если нажать на кнопку в трее то интерфейс у онка появляется. Все таки надо нажимать на иконку, которую к сожалению не видно.

kaster
24-03-2010, 17:46
Mikhail83, вполне возможно, что ты не то окно пытаешься активировать. в смысле что у одной программы могут быть несколько окон.

Mikhail83
25-03-2010, 08:39
вполне возможно, что ты не то окно пытаешься активировать. в смысле что у одной программы могут быть несколько окон. »

Да нет, вроде то самое окно, оно появляется с минимальным интерфейсом, и активируется (заполняется кнопками) только если нажать иконку в трее, это сама программа так написана. А нет ли еще какого нибудь метода, например эмулировать нажатие иконки программы в трее?




© OSzone.net 2001-2012