Я сделал скрипт, который просто открывает или активирует конкретное приложение.
это прекрасно работает, но у меня есть одна проблема, когда приложение сворачивается в трей Windows. горячая клавиша активирует часть инструкции Else , поэтому он создает другой экземпляр того же приложения.
!a:: If WinExist(«ahk_exe Orzeszek Timer.exe») < WinActivate, ahk_exe Orzeszek Timer.exe >Else < Run, «D:PortablePortableAppsOrzeszek TimerOrzeszek Timer.exe» >Return
Мне нужна помощь со сценарием, чтобы вызвать часть инструкции IF , если приложение появляется в системном трее.
Большое спасибо заранее)
leo007 17 Дек 2019 в 12:23
3 ответа
Лучший ответ
!a:: Process, Exist, Orzeszek Timer.exe If (Errorlevel != 0) ; is running < WinGet, WinState, MinMax, ahk_exe Orzeszek Timer.exe If (WinState = «») ; is minimized to tray SendInput, #bo; Win+b activates the tray, o marks the icon of Orzeszek Timer else WinActivate, ahk_exe Orzeszek Timer.exe > else ; is NOT running Run, «D:PortablePortableAppsOrzeszek TimerOrzeszek Timer.exe» return
Если у программы есть собственная горячая клавиша для восстановления окна, используйте эту горячую клавишу вместо #bo .
Запусти майнер НЕЗАМЕТНО))) Как скрыть окно майнера с панели задач и из трея ^^
Если SendInput, #bo слишком быстр для восстановления программы, добавьте спящий режим между ключами для отправки:
. If (WinState = «») ; is minimized to tray < SendInput, #b ; Win+b activates the tray ; WinWaitActive, ahk_class Shell_TrayWnd Sleep, 300 SendInput, o ; o marks the icon of Orzeszek Timer. Try first of all manually which letter marks the icon Sleep, 300 SendInput, > .
РЕДАКТИРОВАТЬ 2:
Я загрузил это маленькое портативное приложение, и оно работает в моей системе:
!a:: Process, Exist, Orzeszek Timer.exe If (Errorlevel != 0) ; is running < WinGet, WinState, MinMax, ahk_exe Orzeszek Timer.exe If (WinState = «») ; is minimized to tray ; SendInput, #bot; OR: SendInput, #bot > else ; is NOT running Run, «D:PortablePortableAppsOrzeszek TimerOrzeszek Timer.exe» WinWait, Orzeszek Timer,, 10 If (!ErrorLevel) < WinActivate, Orzeszek Timer WinWaitActive Orzeszek Timer,, 5 If (!ErrorLevel) MouseMove, 150, 80, 0 >return
РЕДАКТИРОВАТЬ 3:
Если у вас нет опции «Всегда показывать все значки в области уведомлений» в настройках, попробуйте заменить
SendInput, #bot
SendInput, #bot
user3419297 18 Дек 2019 в 22:31
user3419297 большое спасибо за ваш скрипт, он прекрасно работает. Я немного изменил его, чтобы открыть приложение.
!a:: Process, Exist, Orzeszek Timer.exe If (Errorlevel != 0) ; is running < WinGet, WinState, MinMax, ahk_exe Orzeszek Timer.exe If (WinState = «») < SendInput, #bo Sleep, 500 CoordMode, Mouse, Window MouseMove, 150, 80, 0 > else WinActivate, ahk_exe Orzeszek Timer.exe > else ; is NOT running Run, «D:PortablePortableAppsOrzeszek TimerOrzeszek Timer.exe» return
Только один незначительный недостаток скрипта зависит от того, где приложение было размещено на первом месте
Как свернуть любую программу в трей Windows 10
в списке Windows.
Конечно, я всегда мог переопределить размещение , но есть ли более эффективный способ автоматически найти размещение приложения в трее?
leo007 18 Дек 2019 в 06:30
Наконец работает! единственной отсутствующей частью в скрипте была клавиша , как указано в правке 3, чтобы системный трей стал доступным для поиска. так что теперь у меня не было проблем, чтобы найти точный ключ. в моем случае это было
SendInput, #btt Sleep, 100 SendInput,
Я действительно не знаю, как поблагодарить вас. Вы мне очень помогли )
Источник: question-it.com
AHK: Активация программ из трея
Народ, сам я новичок, помогите написать скрипт для активации программы из трея по нажатию на комбинацию клавиш Ctrl+Б для русской и английской раскладки (как я понимаю, фиксированого vk-кода клавиши для обоих раскладок нет)
программа в трее зафиксирована, имеет координаты 1170, 755.
имя программы в трее PENGUI |DVD-ROM|Звук|Блокнот|
https://www.mjtnet.com/blog/2006/07/13/ … ray-icons/ Здесь дан примерный код для реализации на macrosheluder, не знаю, поможет ли.
2 Ответ от Malcev 2015-03-30 00:27:11
- Malcev
- Разработчик
- Неактивен
Re: AHK: Активация программ из трея
3 Ответ от HepoH 2015-03-30 07:55:35 (изменено: HepoH, 2015-03-30 08:00:20)
Re: AHK: Активация программ из трея
Malcev пишет:
Что, и прокомментировать ссылку нельзя? Например — восстанавливает ли команда окна(судя по названию), которых нет?
Программа висит в трее и окна пока ее не активируешь нет (хотя для этого есть WinActivate). Хорошо, активирует ли команда окно, которое еще не открывалось, т.е. будет ли работать скрипт сразу после запуска системы?
К тому же хотелось бы знать что делать с языковой раскладкой, пока я ковырялся по форуму, я понял что это для меня довольно трудно а в статьях я там такого не нашел.
Клавиша «Б» имеет плавающий сканкод в зависимости от раскладки клавиатуры, как сделать изменение сканкода в зависимости от раскладки?
P.S. проверил, действует только когда окно свернуто, по крайней мере в скрипте ( во время русской раскладки)
^Б::WinRestore, — Блокнот для записей — ; это заголовок разворачиваемого окна
4 Ответ от yalanne 2015-03-30 13:04:59
- yalanne
- Разработчик
- Неактивен
Re: AHK: Активация программ из трея
^SC033::msgbox 1
Вот так будет нажиматься на рус. и англ. раскладке.
5 Ответ от Malcev 2015-03-30 13:05:20 (изменено: Malcev, 2015-03-30 17:26:04)
- Malcev
- Разработчик
- Неактивен
Re: AHK: Активация программ из трея
Что, и прокомментировать ссылку нельзя? Например — восстанавливает ли команда окна(судя по названию), которых нет?
Программа висит в трее и окна пока ее не активируешь нет (хотя для этого есть WinActivate). Хорошо, активирует ли команда окно, которое еще не открывалось, т.е. будет ли работать скрипт сразу после запуска системы?
А тут уже от окна зависит. С некоторыми прокатывает, с некоторыми нет.
В начале надо прописать:
SetTitleMatchMode, 2 DetectHiddenWindows, On
Клавиша «Б» имеет плавающий сканкод в зависимости от раскладки клавиатуры, как сделать изменение сканкода в зависимости от раскладки?
Сканкод как и виртуальный код у клавиш всегда один, вне зависимости от раскладки.
vkBC:: msgbox, нажата «б» или «,»
6 Ответ от yalanne 2015-03-31 23:26:02 (изменено: yalanne, 2015-04-01 00:36:09)
- yalanne
- Разработчик
- Неактивен
Re: AHK: Активация программ из трея
Я на просторах инэта нашел скрипт который может считывать информацию о иконках,скрывать и удалять их а также на них кликать левой, правой или средней кнопкой.
Вот скрипт:
+ открыть спойлер
; ———————————————————————————————————————- ; Name . TrayIcon library ; Description . Provide some useful functions to deal with Tray icons. ; AHK Version . AHK_L 1.1.13.01 x32/64 Unicode ; Author . Sean (http://goo.gl/dh0xIX) Thanks . FanaticGuru ; License . WTFPL — http://www.wtfpl.net/txt/copying/ ; Changelog . Dic. 31, 2013 — v0.1 — First revision. ; . Jan.
16, 2014 — v0.2 — Added NotifyIconOverflowWindow icon parsing and DetectHiddenWindows management. ; ———————————————————————————————————————- ; ———————————————————————————————————————- ; Function . TrayIcon_GetInfo ; Description . Get a series of useful information about tray icons. ; Parameters . sExeName — The exe for which we are searching the tray icon data. Leave it empty to receive data for ; . all tray icons. ; Return . oTrayInfo — An array of objects containing tray icons data. Any entry is structured like this: ; . oTrayInfo[A_Index].idx — 0 based tray icon index. ; . oTrayInfo[A_Index].idcmd — Command identifier associated with the button. ; . oTrayInfo[A_Index].pid — Process ID. ; . oTrayInfo[A_Index].uid — Application defined identifier for the icon. ; . oTrayInfo[A_Index].msgid — Application defined callback message. ; . oTrayInfo[A_Index].hicon — Handle to the tray icon. ; . oTrayInfo[A_Index].hwnd — Window handle. ; . oTrayInfo[A_Index].class — Window class. ; . oTrayInfo[A_Index].process — Process executable. ; . oTrayInfo[A_Index].tooltip — Tray icon tooltip. ; . oTrayInfo[A_Index].place — Place where to find the icon. ; Info . TB_BUTTONCOUNT message — http://goo.gl/DVxpsg ; . TB_GETBUTTON message — http://goo.gl/2oiOsl ; . TBBUTTON structure — http://goo.gl/EIE21Z ; ———————————————————————————————————————- TrayIcon_GetInfo(sExeName:=»») < d := A_DetectHiddenWindows DetectHiddenWindows, On oTrayInfo := Object() For key, sTrayP in [«Shell_TrayWnd», «NotifyIconOverflowWindow»] < idxTB := TrayIcon_GetTrayBar() WinGet, pidTaskbar, PID, ahk_class %sTrayP% hProc := DllCall( «OpenProcess», UInt,0x38, Int,0, UInt,pidTaskbar ) pRB := DllCall( «VirtualAllocEx», Ptr,hProc, Ptr,0, UInt,20, UInt,0x1000, UInt,0x4 ) szBtn := VarSetCapacity( btn, (A_Is64bitOS) ? 32 : 24, 0 ) szNfo := VarSetCapacity( nfo, (A_Is64bitOS) ? 32 : 24, 0 ) szTip := VarSetCapacity( tip, 128 * 2, 0 ) SendMessage, 0x418, 0, 0, ToolbarWindow32%idxTB%, ahk_class %sTrayP% ; TB_BUTTONCOUNT Loop, %ErrorLevel% < SendMessage, 0x417, A_Index — 1, pRB, ToolbarWindow32%idxTB%, ahk_class %sTrayP% ; TB_GETBUTTON DllCall( «ReadProcessMemory», Ptr,hProc, Ptr,pRB, Ptr,ReadProcessMemory», Ptr,hProc, Ptr,dwData, Ptr,ReadProcessMemory», Ptr,hProc, Ptr,iString, Ptr, «idx»: A_Index-1, «idcmd»: idCmd, «pid»: pid, «uid»: uID, «msgid»: nMsg , «hicon»: hIcon, «hwnd»: hWnd, «class»: sClass, «process»: sProcess , «tooltip»: StrGet(UTF-16″), «place»: sTrayP >) > DllCall( «VirtualFreeEx», Ptr,hProc, Ptr,pRB, UInt,0, UInt,0x8000 ) DllCall( «CloseHandle», Ptr,hProc ) > DetectHiddenWindows, %d% Return oTrayInfo > ; ———————————————————————————————————————- ; Function . TrayIcon_Hide ; Description . Hide or unhide a tray icon. ; Parameters . idCmd — Command identifier associated with the button. ; . sTrayP — Place where to find the icon («Shell_TrayWnd» or «NotifyIconOverflowWindow»). ; . bHide — True for hide, False for unhide. ; Info . TB_HIDEBUTTON message — http://goo.gl/oelsAa ; ———————————————————————————————————————- TrayIcon_Hide(idCmd, sTrayP:=»Shell_TrayWnd», bHide:=True) < d := A_DetectHiddenWindows DetectHiddenWindows, On idxTB := TrayIcon_GetTrayBar() SendMessage, 0x404, idCmd, bHide, ToolbarWindow32%idxTB%, ahk_class %sTrayP% ; TB_HIDEBUTTON SendMessage, 0x1A, 0, 0, , ahk_class %sTrayP% DetectHiddenWindows, %d% >; ———————————————————————————————————————- ; Function . TrayIcon_Remove ; Description . Remove a Tray icon. It should be more reliable than TrayIcon_Delete. ; Parameters . hWnd — Window handle. ; . uID — Application defined identifier for the icon. ; ———————————————————————————————————————- TrayIcon_Remove(hWnd, uID) < sz := VarSetCapacity( NID, (A_PtrSize == 4) ? 832 : 848, 0 ) NumPut( sz, NID, 0 ), NumPut( hWnd, NID, A_PtrSize ), NumPut( uID, NID, A_PtrSize*2 ) DllCall( «Shell32.dllShell_NotifyIcon», UInt,2, Ptr,; ———————————————————————————————————————- ; Function . TrayIcon_Delete ; Description . Delete a tray icon. ; Parameters . idx — 0 based tray icon index. ; . sTrayP — Place where to find the icon («Shell_TrayWnd» or «NotifyIconOverflowWindow»). ; Info . TB_DELETEBUTTON message — http://goo.gl/L0pY4R ; ———————————————————————————————————————- TrayIcon_Delete(idx, sTrayP:=»Shell_TrayWnd») < d := A_DetectHiddenWindows DetectHiddenWindows, On idxTB := TrayIcon_GetTrayBar() SendMessage, 0x416, idx, 0, ToolbarWindow32%idxTB%, ahk_class %sTrayP% ; TB_DELETEBUTTON SendMessage, 0x1A, 0, 0, , ahk_class %sTrayP% DetectHiddenWindows, %d% >; ———————————————————————————————————————- ; Function . TrayIcon_Move ; Description . Move a tray icon. ; Parameters . idxOld — 0 based index of the tray icon to move. ; . idxNew — 0 based index where to move the tray icon. ; . sTrayP — Place where to find the icon («Shell_TrayWnd» or «NotifyIconOverflowWindow»). ; Info . TB_MOVEBUTTON message — http://goo.gl/1F6wPw ; ———————————————————————————————————————- TrayIcon_Move(idxOld, idxNew, sTrayP:=»Shell_TrayWnd») < d := A_DetectHiddenWindows DetectHiddenWindows, On idxTB := TrayIcon_GetTrayBar() SendMessage, 0x452, idxOld, idxNew, ToolbarWindow32%idxTB%, ahk_class %sTrayP% ; TB_MOVEBUTTON DetectHiddenWindows, %d% >; ———————————————————————————————————————- ; Function . TrayIcon_GetTrayBar ; Description . Get the tray icon handle. ; ———————————————————————————————————————- TrayIcon_GetTrayBar() < d := A_DetectHiddenWindows DetectHiddenWindows, On WinGet, ControlList, ControlList, ahk_class Shell_TrayWnd RegExMatch(ControlList, «(?<=ToolbarWindow32)d+(. *ToolbarWindow32)», nTB) Loop, %nTB% < ControlGet, hWnd, hWnd,, ToolbarWindow32%A_Index%, ahk_class Shell_TrayWnd hParent := DllCall( «GetParent», Ptr,hWnd ) WinGetClass, sClass, ahk_id %hParent% If (sClass <>»SysPager») Continue idxTB := A_Index Break > DetectHiddenWindows, %d% Return idxTB > ; ———————————————————————————————————————- ; Function . TrayIcon_GetHotItem ; Description . Get the index of tray’s hot item. ; Info . TB_GETHOTITEM message — http://goo.gl/g70qO2 ; ———————————————————————————————————————- TrayIcon_GetHotItem() < idxTB := TrayIcon_GetTrayBar() SendMessage, 0x447, 0, 0, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd ; TB_GETHOTITEM Return ErrorLevel > 32 > ; ———————————————————————————————————————- ; Function . TrayIcon_Button ; Description . Simulate mouse button click on a tray icon. ; Parameters . sExeName — Executable Process Name of tray icon. ; . sButton — Mouse button to simulate (L, M, R). ; . bDouble — True to double click, false to single click. ; . index — Index of tray icon to click if more than one match. ; ———————————————————————————————————————- TrayIcon_Button(sExeName, sButton := «L», bDouble := false, index := 1) < Setting_A_DetectHiddenWindows := A_DetectHiddenWindows DetectHiddenWindows, On WM_MOUSEMOVE = 0x0200 WM_LBUTTONDOWN = 0x0201 WM_LBUTTONUP = 0x0202 WM_LBUTTONDBLCLK = 0x0203 WM_RBUTTONDOWN = 0x0204 WM_RBUTTONUP = 0x0205 WM_RBUTTONDBLCLK = 0x0206 WM_MBUTTONDOWN = 0x0207 WM_MBUTTONUP = 0x0208 WM_MBUTTONDBLCLK = 0x0209 sButton := «WM_» sButton «BUTTON» oIcons := <>oIcons := TrayIcon_GetInfo(sExeName) msgID := oIcons[index].msgID uID := oIcons[index].uID hWnd := oIcons[index].hWnd if bDouble PostMessage, msgID, uID, %sButton%DBLCLK, , ahk_id %hWnd% else < PostMessage, msgID, uID, %sButton%DOWN, , ahk_id %hWnd% PostMessage, msgID, uID, %sButton%UP, , ahk_id %hWnd% >DetectHiddenWindows, %Setting_A_DetectHiddenWindows% return >
этот скрипт работает с теми иконками, которые есть на панели задач, то бишь вот тут:
Пример использования покажу на иконке от NVIDIA:
TrayIcon_Button(«nvtray.exe», «L»)
Эта функция сделает клик на иконку.
1)nvtray.exe — exe файл который находится в трее.
2)L — тык левой кнопкой мыши.
2)R — тык правой кнопкой мыши.
2)M — тык средней кнопкой мыши.
Так же что бы вывести информацию о иконках в трее:
oIcons := <> oIcons := TrayIcon_GetInfo() for index, element in oIcons sInfoDisplay .= «idx: » element.idx » | cmdID: » element.cmdID » | pID: » element.pID » | uID: » element.uID » | msgID: » element.msgID » | hIcon: » element.hIcon » | hWnd: » element.hWnd » | Class: » element.Class » | Process: » element.Process » | Tray: » element.Tray » | Tooltip: » element.Tooltip «`n`n» MsgBox % sInfoDisplay
Ответ будет таким: (это в моем в случае)
нет 4й иконки потому что она уже не из трея, а новая кнопка настроекуведомлений из win10.
вроде все:)
7 Ответ от teadrinker 2015-03-31 23:52:28
- teadrinker
- Администратор
- Неактивен
Re: AHK: Активация программ из трея
yalanne пишет:
Я тоже.
Сообщения 7
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Источник: forum.script-coding.com
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.
Reload to refresh your session.
This amazing app was written for easy running from tray the most used programs, especially for don’t have a link in Start, and also for any documents, that you have to open. In addition, it may be used for running your scripts. Эта замечательная программа написана для облегчения запуска из трея наиболее часто используемых программ, особенно для …
avmaksimov/StartFromTray
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
This amazing app was written for easy running the most used programs from the system tray. Especially it can be useful for situation when you don’t have a link in Start, and for any documents, that you have to open. In addition, it may be used for running your scripts.
Эта замечательная программа написана для облегчения запуска из трея наиболее часто используемых программ, особенно для тех, для которых нет ярлыка, а также для любых других документов, которые приходится когда-либо открывать. Также она может быть полезна для запуска каких-либо скриптов.
- Лёгкость в создании произвольного дерева элементов с группами. Также можно отменить и не сохранять все изменения.
- Возможность запуска действия по умолчанию левой, а редактора — правой кнопкой мыши по элементу в трее. Очень полезно для скриптов!
- Также вы можете открыть элемент в программе для настроек средней кнопкой.
- Возможность назначения группе или элементу (что важнее) иконки из файла ресурсов (.exe, .dll, .ico) или иконке расширения файла. Это особенно полезно если вы запускаете скрипт, который после каких-либо действий запускает исполняемый файл или документ. По умолчанию для групп служит обычная иконка папки, а для элементов — иконка папки (если команда указывает на папку), иконка ресурса (.exe, .dll, .ico) или расширение команды файла.
- Возможность запускать команды и редактирование под администратором.
- Если для команды не найдено действие для редактирования, то откроется папка и выделится этот файл.
- Переопределение действий в системе по умолчанию для редактирования и запуска через Расширения. Также это позволяет вам добавить фильтрацию файлов при выборе команд.
- Возможность назначить открытие определённой папке.
- Использование родного или любого другого языка и резинового интерфейса. Отсутствие необходимости в установке.
- Подсветка несуществующего файла (для .exe-файла ищется в Path, а также в реестре, аналогично, как это делает Windows).
About
This amazing app was written for easy running from tray the most used programs, especially for don’t have a link in Start, and also for any documents, that you have to open. In addition, it may be used for running your scripts. Эта замечательная программа написана для облегчения запуска из трея наиболее часто используемых программ, особенно для …
Источник: github.com