Что нового

Как можно кликнуть по иконке приложения на панели задач?

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Как можно кликнуть по иконке приложения на панели задач и в трее, если известно имя процесса?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Если тебе нужно активировать свернутое окно из панели задачь:
Код:
Global $Process = 'notepad.exe'

$hWnd = _Process2Win($Process)
WinActivate($hWnd)

func _Process2Win($pid)
    if isstring($pid) then $pid = processexists($pid)
    if $pid = 0 then return -1
    $list = WinList()
    for $i = 1 to $list[0][0]
        if $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),2) then
            $wpid = WinGetProcess($list[$i][0])
            if $wpid = $pid then return $list[$i][0]
        EndIf
    next
    return -1
endfunc
 
Автор
V

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Нет, мне нужно кликнуть по иконке правой кнопкой мыши и вызвать ее контекстное меню.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Zaramot [?]
Если тебе нужно активировать свернутое окно из панели задачь:
Тогда надо
Код:
;...
if $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),16) then
;...
 
Автор
V

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Кликом правой кнопки мыши по иконке программы на панели задач или в трее можно вызвать меню из которого выбирать ту или иную опцию. Но так как положение этих иконок постоянно меняется в зависимости от того какие программы открыты, то нужно определять их положение в текущий момент (и в трее и на панели задач). В этом, собственно, и состоит задача.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
vitaliy4us
чтобы кликнуть правой клавишей по иконке в трее, можно так попробовать (если иконка в трее одна)
Нужна _SysTray UDF
http://www.autoitscript.com/forum/topic/103871-systray-udf/

Код:
#NoTrayIcon
#include <GuiToolbar.au3>
#include <_SysTray.au3>

$aProcess = _SysTrayIconProcesses(1) 
$Titles = _SysTrayIconTitles()
$Index = 100
For $i = 0 To UBound($aProcess) - 1 
    If $aProcess[$i] = 'процесс.exe' Then $Index = $i ; процесс
Next

If $Index <> 100 then
$hWnd = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')
$iCommandID = _GUICtrlToolbar_IndexToCommand($hWnd, number($Index))
$aRect = _GUICtrlToolbar_GetButtonRect ($hWnd, $iCommandID)
ControlClick($hWnd, '', '','right',1,$aRect[0],$aRect[1]); клик правой кнопкой
EndIf


или так, обычный клик левой/правой кнопкой с движением мыши:
Код:
#NoTrayIcon
#include <_SysTray.au3>
$var1=_SysTrayIconIndex('процесс.exe', 0, 1) ; функция получения индекса иконки
$var2=_SysTrayIconPos($var1, 1)
MouseClick('left', $var2[0]+2,$var2[1]+2, 1) ; клик левой кнопкой


А вот способы работы с кнопками в панели задач в Win 7, кроме банального кликанья курсором, вряд ли существуют - там другой класс контрола, чем в XP...
 
Автор
V

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Что ж, спасибо. Systray пробовал, поэтому и интересовался в первую очередь панелью задач. С Systray тоже не все работает на Win7. Так что будем банально кликать.
 
Верх