-
Как добраться до программы в трее при помощи клав-ры?
Есть программа. У нее значок в трее. Вопрос соотв. в subj
Павел
AVZ HijackThis помощь с 10-00 до 18-00МСК
Windows7, SEP(work)
WindowsXP KIS(home)
На up не реагирую
-
-
Будь в курсе!
Будь в курсе!
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:
-
Сообщение от
PavelA
Есть программа. У нее значок в трее. Вопрос соотв. в subj
ну опять я не знаю, как это по-русски:
В общем надо войти в раздел установок для слабовидящих и включить режим Клавиатура-мышь.
В принципе символы в трее в большинстве случаев управляются из программного интерфейса.
Последний раз редактировалось Rene-gad; 02.05.2008 в 17:54.
-
-
Сообщение от
PavelA
Есть программа. У нее значок в трее. Вопрос соотв. в subj
Клавиша "Windows", далее Tab несколько раз, пока не дойдете до значка скрытия/отображения значков трея, далее клавиши "стрелка вправо"/"стрелка влево" (уже внутри Tray Notification area).
-
-
@Rene-gad Этот способ мне известен. Нельзя его в программу скрипта
встроить.
@aintrust К сожалению, после нажатия кл. "Виндовс" после ТАВ никуда не ухожу.
Павел
AVZ HijackThis помощь с 10-00 до 18-00МСК
Windows7, SEP(work)
WindowsXP KIS(home)
На up не реагирую
-
-
Junior Member
- Вес репутации
- 64
Естесно ... жать то надо Ctrl+Tab, а Win+Tab для панели инструментов тока.
Кстати вот так лучше ... Win+Tab (падаем на панел) -> Ctrl+Tab (перемещаемся куда надо)
-
Сообщение от
PavelA
@Rene-gad Этот способ мне известен. Нельзя его в программу скрипта встроить.
Можешь раэьяснить в деталях, что ты конкретно хочешь:
- удалить программу из трея через клаву
- вызвать программу из трея через клаву
- что-то еще
???
-
-
Сообщение от
Rene-gad
Можешь раэьяснить в деталях, что ты конкретно хочешь:
- удалить программу из трея через клаву
- вызвать программу из трея через клаву
- что-то еще
???
- вызвать программу из трея через клаву. А затем ее настраивать. Доделать не имею возможности, буржуинская она.
@MacRos-78 Спасибо.
К сожалению, понял, что этот способ не прокатит. Я не знаю сколько программ в данный момент запущено и ск. сидит в трее, да и в каком порядке. Будем искать другой способ.
Павел
AVZ HijackThis помощь с 10-00 до 18-00МСК
Windows7, SEP(work)
WindowsXP KIS(home)
На up не реагирую
-
-
Сообщение от
PavelA
К сожалению, понял, что этот способ не прокатит. Я не знаю сколько программ в данный момент запущено и ск. сидит в трее, да и в каком порядке. Будем искать другой способ.
Если это надо сделать на уровне скрипта, вряд ли вообще что-либо "прокатит" (в общем случае это зависит от кол-ва отображенных панелей)... Похоже, вы не совсем корректно сформулировали исходный вопрос.
-
-
Сообщение от
PavelA
- вызвать программу из трея через клаву.
AFAIK это возможно только с помощью настроки определенных клавиш вместо мышиных клавиш и шарика-ролика-сканнера, т.е. как я написал и как тебе известно. Через скрипт наверное тоже как-то можно, но для этого надо устроиться на работу в Ричмонде .
Доделать не имею возможности, буржуинская она.
Придется тебе, Мальчиш-Плохиш, в Буржуинство записаться
-
-
Сообщение от
MakRos-78
Естесно ... жать то надо Ctrl+Tab, а Win+Tab для панели инструментов тока.
Кстати вот так лучше ... Win+Tab (падаем на панел) -> Ctrl+Tab (перемещаемся куда надо)
Ctrl+Tab просто "перепрыгивает" через область taskbar, только и всего... Про Win+Tab я не писал - не знаю, где вы это взяли...
-
-
Junior Member
- Вес репутации
- 64
aintrust
Я то же не писал что это вы писали. А взял это с клавиатуры.
Тем более я не виноват что ваш способ у человека не сработал. Возможно у него что-то запущено, что этому и мешает. Встречал я токае.
Если вас это обидело .. приношу извенения ... задних мыслей не имел.
Просто щитал что для достижения цели любой способ можно использовать, лишь бы сработало как надо.
-
Сообщение от
MakRos-78
...
Просто щитал что для достижения цели любой способ можно использовать, лишь бы сработало как надо.
No problemo, как говорил Шварц в Терминаторе-2! Я с вами согласен - лишь бы сработало! У меня (да и не только у меня) это работает в том виде, что я описал, и этому есть вполне определенное объяснение с точки зрения виндового и-фейса. И я этим пользуюсь уже много лет. Вполне вероятно, что по каким-то причинам это где-то не срабатывает - что же, всяко бывает... Жаль только, что вопрос был совсем не про это!
-
-
А из-за чего собственно вопрос? Если для создания скрипта - можно использовать AutoIt, из скрипта окно с определенным содержимым или атрибутами можно распахнуть принудительно, судя по задаче необходима "нажималка" кнопок, на Au3 "нажималка" пишется просто.
-
-
Сообщение от
RiC
...можно использовать AutoIt, из скрипта окно с определенным содержимым или атрибутами можно распахнуть принудительно...
Не у всякой иконки (точнее, не у всякого пункта popup-меню иконки), что болтается в трее, есть соответствующее ей "спрятанное" окно (возьмите, к примеру, иконку Сетевого соединения, хотя это и немного особый случай). Создание и отображение окна/диалога может являться реакцией только на нажатие пункта popup-меню иконки. Тем самым вам придется как-то вызывать нажатие кнопки мыши на определенной иконке (последовательность и число иконок в трее может изменяться). Системное окошко, где располагаются иконки (его заголовок в русской версии "Область уведомлений", класс ToolbarWindow32) - одно на все пользовательские иконки в трее, и чтобы угадать, где именно находится ваша конкретная иконка (чтобы затем "щелкнуть" на ней), в скрипте придется применить что-то типа распознавания образов. Я уже не говорю о тех случаях, когда у приложения может быть "вырожденное" окно (применяемое только для отслеживания сообщений) или когда все содержимое окна отрисовывается вручную без использования контролов (например, с целью защиты от "нажималок").
Или же с помощью AutoIt эта задача решается просто (я просто не знаю, не видел этот продукт)?
А может я сильно усложняю поставленную задачу?
Последний раз редактировалось aintrust; 06.06.2007 в 08:20.
Причина: Небольшое уточнение...
-
-
Сообщение от
aintrust
Или же с помощью AutoIt эта задача решается просто (я просто не знаю, не видел этот продукт)?
А может я сильно усложняю поставленную задачу?
Autoit заточен под написание разного рода скиптов, кликалок и т.д. пример кликанья в трей -
Код:
#include<Systray.au3>
#include<Array.au3>
Global $title = "XXX"
;Global $prcoess = "icqlite.exe"
Global $prcoess = "winampa.exe"
;clickSysTrayByTitle($title, "right")
clickSysTrayByProcess($prcoess, "right")
Func clickSysTrayByTitle($winTitle, $click = "left", $times = 1)
Local $a = _SysTrayIconTitles ()
Local $p = MouseGetPos()
For $i = 0 To UBound($a) - 1
If $a[$i] = $winTitle Then
$pos = _SysTrayIconPos($i)
MouseClick($click, $pos[0], $pos[1], $times, 1)
ExitLoop
EndIf
Next
MouseMove($p[0], $p[1], 1)
EndFunc ;==>clickSysTray
Func clickSysTrayByProcess($winProcess, $click = "left", $times = 1)
Local $a = _SysTrayIconProcesses()
;_ArrayDisplay($a, "")
Local $p = MouseGetPos()
For $i = 0 To UBound($a) - 1
If $a[$i] = $winProcess Then
$pos = _SysTrayIconPos($i)
MouseClick($click, $pos[0], $pos[1], $times, 1)
ExitLoop
EndIf
Next
MouseMove($p[0], $p[1], 1)
EndFunc ;==>clickSysTray
-
-
Сообщение от
RiC
Autoit заточен под написание разного рода скиптов, кликалок и т.д. пример кликанья в трей -
...
Что же, это довольно интересно и, при должном прилежании, вполне может подойти в качестве средства для решения "проблемы". Правда я не нашел в документации на сайте AutoIt описания функций _SysTrayIconProcesses() и _SysTrayIconTitles(), хотя из названия и можно предположить об их функционале.
-
-
Вчера был в отгуле, не читал форум. Спасибо RiC за скрипт. Именно эту программу и собирался использовать для борьбы/настройки.
До чего же я отвык от программирования Почитал скрипт и понял насколько же это элементарно можно сделать.
@aintrust Вопрос начальный был сформулирован точно. Встраивание этого дела в программу - другая тема.
Павел
AVZ HijackThis помощь с 10-00 до 18-00МСК
Windows7, SEP(work)
WindowsXP KIS(home)
На up не реагирую
-
-
Сообщение от
RiC
Autoit заточен под написание разного рода скиптов, кликалок и т.д. пример кликанья в трей -
...
RiC, а у вас тот код, что вы привели, работает? Файла Systray.au3 (с функциями работы с треем _SysTrayIconTitles() и _SysTrayIconProcesses()) нет в каталоге Include, поиск на форуме не привел к приемлемому результату. Нашелся лишь какой-то SysTray_UDF.au3 (который, как оказалось, написан для беты 3-й версии AutoIt), но он сразу же потребовал небольшой правки в константах, после чего уже посыпались ошибки в тексте приведенного вами куска. Может, вы поделитесь файлом Systray.au3, раз уж сослались на него ранее, чтобы мне "не париться" в поисках этого инклуда?
-
-
Сообщение от
aintrust
RiC, а у вас тот код, что вы привели, работает?
Работает вот с этим - http://www.autoitscript.com/forum/in...e=post&id=8946
Описание константы Const $WM_GETTEXT = 13 в инклуде лишнее и его нужно удалить.
-
-
Это тот же самый файл SysTray_UDF.au3, о котором я уже писал в предыдущем посте, и с которым скрипт у меня (Windows XP, русская версия) не работает.
Сообщение при этом следующее:
Код:
MouseClick($click, $pos[0], $pos[1], $times, 1)
MouseClick($click, $pos^ERROR
Error: Subscript used with non-Array variable.
Насколько я могу понять, функция _SysTrayIconPos() в строке
Код:
...
$pos = _SysTrayIconPos($i)
...
возвращает переменную, отличную от ожидаемого типа "массив" (точнее, она сразу же возвращает значение -1, что означает ошибку в работе), в результате чего дальнейшее использование этой переменной и вызывает ошибку.
PS. Пока все это описывал, решил глянуть на код функций из этого инклуда. В общем, теперь мне понятно, почему эта функция не работает как надо - все написано на скорую руку, код довольно ненадежный, и я вряд ли буду его использовать (лучше уж написать свой). Похоже, что он может сработать в Windows 2000, но мне это не на чем проверить (да и не особо хочется, если честно). У вас случаем не эта ОС?
PPS. Да, забыл сказать. Функции _SysTrayIconTitles() и _SysTrayIconProcesses() у меня возвращают неверные значения. К примеру _SysTrayIconTitles() ошибочно многократно (от двух и более раз) возвращает одно из значений, пропуская при этом (что более важно) часть того, что должно быть выведено. В общем, получается полный suxx... (=
Последний раз редактировалось aintrust; 07.06.2007 в 23:15.
Причина: PPS...
-