Компьютерный форум 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=171092)

Mikhail83 24-03-2010 13:11 1376012

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

zonderz 24-03-2010 15:21 1376115

Mikhail83

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

Mikhail83 24-03-2010 15:54 1376139

Простите, не пояснил, я имел ввиду стороннюю программу, которую нужно открыть с помощью AutoIt. К сожалению в ней нет данной опции.

kaster 24-03-2010 16:00 1376142

а программа запускается AutoIt'ом или другими средствами?
можно развернуть программу зная например Title окна, который отвечает за эту программу.
Например через функцию
Код:

WinList()
можно посмотреть список всех окон и найти свой, каким-то образом.

После выявления нужного окна, нужно ему задать состояние "разворачивания на весь экран"
Код:

$title = 'Title нужного окна'
WinSetState($title, '', @SW_MAXIMIZE)


Mikhail83 24-03-2010 16:09 1376148

Цитата:

Цитата kaster
а программа запускается AutoIt'ом или другими средствами?
можно развернуть программу зная например Title окна, который отвечает за эту программу.
Например через функцию »

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

madmasles 24-03-2010 16:50 1376184

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 1376201

Цитата:

Цитата Mikhail83
Да, но окна программы пока еще нет »

ты пробовал смотреть список всех существующих окон через команду
Код:

#include <array.au3>
$a = WinList()
_ArrayDisplay($a)

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

И вот еще, лучше сделай не просто @SW_SHOW, еще и можно сделать его активным
Код:

WinSetState($title, '', @SW_SHOW)
WinActivate($title)


Mikhail83 24-03-2010 17:25 1376210

Цитата:

Цитата kaster
ты пробовал смотреть список всех существующих окон через команду »

подтверждаю, окно висит, однако после команд:
Код:

WinSetState("окно программы", "", @SW_SHOW)
WinSetState("окно программы", "", @SW_MAXIMIZE)

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

kaster 24-03-2010 17:46 1376228

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

Mikhail83 25-03-2010 08:39 1376628

Цитата:

Цитата kaster
вполне возможно, что ты не то окно пытаешься активировать. в смысле что у одной программы могут быть несколько окон. »

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


Время: 17:08.

Время: 17:08.
© OSzone.net 2001-