|
|
Всего сообщений: 4153 TrayMenu.exe — Error: «h» — исправление ошибки в Windows 10
Привет!
Сразу скажу что данная хрень появляется не у всех, устранить ее довольно не сложно, для этого нужно зайти в папку C:WindowsSysWOW64Codecs, запустить Uninst.exe, далее убрать все галки кроме пункта Tray Menu и нажать Uninstall
После этого перезагрузить компьютер, это все.
TrayMenu.exe — Error: «h» — исправление ошибки в Windows 10RtbSape
Всего сообщений: 4153 Вернуться в Windows Кто сейчас на конференцииСейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
|
Содержание
- Устранить неполадки TrayMenu.exe (бесплатная загрузка)
- Обзор файла
- Что такое сообщения об ошибках TrayMenu.exe?
- TrayMenu.exe — ошибки выполнения
- Как исправить ошибки TrayMenu.exe — 3-шаговое руководство (время выполнения:
- Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
- Шаг 2. Если вы недавно установили приложение Media Player Codec Pack (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Media Player Codec Pack.
- Шаг 3. Выполните обновление Windows.
- Если эти шаги не принесут результата: скачайте и замените файл TrayMenu.exe (внимание: для опытных пользователей)
- filecheck .ru
- Вот так, вы сможете исправить ошибки, связанные с TrayMenu.exe
- Информация о файле TrayMenu.exe
- Комментарий пользователя
- Лучшие практики для исправления проблем с TrayMenu
- TrayMenu сканер
- 3 простых шага по исправлению ошибок TRAYMENU.EXE
- 1- Очистите мусорные файлы, чтобы исправить traymenu.exe, которое перестало работать из-за ошибки.
- 2- Очистите реестр, чтобы исправить traymenu.exe, которое перестало работать из-за ошибки.
- 3- Настройка Windows для исправления критических ошибок traymenu.exe:
- Как вы поступите с файлом traymenu.exe?
- Некоторые сообщения об ошибках, которые вы можете получить в связи с traymenu.exe файлом
- TRAYMENU.EXE
- процессов:
- [BUG] On Launch I get Error: «ERROR» is not a valid key name. #24
- Comments
- lukoma666 commented Aug 7, 2019
- Sauron-Dev commented Aug 7, 2019
- sWxJaPkT commented Aug 7, 2019 •
- Sauron-Dev commented Aug 7, 2019
- BanditTech commented Aug 7, 2019
- BanditTech commented Aug 8, 2019
- lukoma666 commented Aug 8, 2019
- BanditTech commented Aug 9, 2019
- Traymenu exe error h как исправить
- Вот так, вы сможете исправить ошибки, связанные с TrayMenu.exe
- Информация о файле TrayMenu.exe
- Комментарий пользователя
- Лучшие практики для исправления проблем с TrayMenu
- TrayMenu сканер
- четверг, 23 апреля 2015 г.
- TrayMenu.exe
- Описание угрозы
- Метод заражения EFax Tray Menu
- Скачать утилиту для удаления
- Функции
- Скачайте утилиту для удаления EFax Tray Menu от российской компании Security Stronghold
- Функции
- Наша служба поддержки готова решить вашу проблему с EFax Tray Menu и удалить EFax Tray Menu прямо сейчас!
- Как удалить EFax Tray Menu вручную
Последнее обновление: 06/30/2022 [Время на прочтение:
Разработка Media Player Codec Pack 4.4.8 компанией Media Player Codec Pack послужила толчком для создания последней версии файла TrayMenu.exe. Он также известен как файл Windows Executable (расширение EXE), который классифицируется как файл Win32 EXE (Исполняемое приложение).
Файл TrayMenu.exe изначально был выпущен с Media Player Codec Pack 4.4.8 03/20/2018 для ОС Windows 10. Согласно нашим сведениям, это основная и наиболее актуальная версия файла от компании Media Player Codec Pack.
В этой короткой статье приводятся подробные сведения о файле, шаги по устранению проблем EXE с TrayMenu.exe и список бесплатных загрузок для каждой версии, содержащейся в нашем полном каталоге файлов.

Рекомендуемая загрузка: исправить ошибки реестра в WinThruster, связанные с TrayMenu.exe и (или) Media Player Codec Pack.


Совместимость с Windows 10, 8, 7, Vista, XP и 2000
Средняя оценка пользователей
Обзор файла
| Общие сведения ✻ | |
|---|---|
| Имя файла: | TrayMenu.exe |
| Расширение файла: | расширение EXE |
| Тип объектного файла: | Executable application |
| Тип файла: | Исполняемое приложение |
| Описание: | Windows Executable |
| Файловая операционная система: | Win32 |
| Тип MIME: | application/octet-stream |
| Пользовательский рейтинг популярности: |
| Сведения о разработчике и ПО | |
|---|---|
| Программа: | Media Player Codec Pack 4.4.8 |
| Разработчик: | Media Player Codec Pack |
| Программное обеспечение: | Media Player Codec Pack |
| Версия ПО: | 4.4.8 |
| Сведения о файле | |
|---|---|
| Набор символов: | Unicode |
| Код языка: | English (U.S.) |
| Флаги файлов: | (none) |
| Маска флагов файлов: | 0x0017 |
| Точка входа: | 0x909c3 |
| Размер кода: | 644608 |
| Информация о файле | Описание |
|---|---|
| Размер файла: | 873 kB |
| Дата и время изменения файла: | 2019:10:11 14:23:46+00:00 |
| Тип файла: | Win32 EXE |
| Тип MIME: | application/octet-stream |
| Тип компьютера: | Intel 386 or later, and compatibles |
| Метка времени: | 2016:08:02 10:48:45+00:00 |
| Тип PE: | PE32 |
| Версия компоновщика: | 10.0 |
| Размер кода: | 644608 |
| Размер инициализированных данных: | 237568 |
| Размер неинициализированных данных: | |
| Точка входа: | 0x909c3 |
| Версия ОС: | 5.0 |
| Версия образа: | 0.0 |
| Версия подсистемы: | 5.0 |
| Подсистема: | Windows GUI |
| Номер версии файла: | 1.1.24.1 |
| Номер версии продукта: | 1.1.24.1 |
| Маска флагов файлов: | 0x0017 |
| Флаги файлов: | (none) |
| Файловая ОС: | Win32 |
| Тип объектного файла: | Executable application |
| Подтип файла: | |
| Код языка: | English (U.S.) |
| Набор символов: | Unicode |
| Описание файла: | |
| Версия файла: | 1.1.24.01 |
| Внутреннее имя: | |
| Авторское право: | |
| Название продукта: | |
| Версия продукта: | 1.1.24.01 |
✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.
Ошибки выполнения — это ошибки Media Player Codec Pack, возникающие во время «выполнения». Термин «выполнение» говорит сам за себя; имеется в виду, что данные ошибки EXE возникают в момент, когда происходит попытка загрузки файла TrayMenu.exe — либо при запуске приложения Media Player Codec Pack, либо, в некоторых случаях, во время его работы. Ошибки выполнения являются наиболее распространенной разновидностью ошибки EXE, которая встречается при использовании приложения Media Player Codec Pack.
В большинстве случаев ошибки выполнения TrayMenu.exe, возникающие во время работы программы, приводят к ненормальному завершению ее работы. Большинство сообщений об ошибках TrayMenu.exe означают, что либо приложению Media Player Codec Pack не удалось найти этот файл при запуске, либо файл поврежден, что приводит к преждевременному прерыванию процесса запуска. Как правило, Media Player Codec Pack не сможет запускаться без разрешения этих ошибок.
К числу наиболее распространенных ошибок TrayMenu.exe относятся:
Не удается запустить программу из-за отсутствия TrayMenu.exe на компьютере. Попробуйте переустановить программу, чтобы устранить эту проблему.
Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
Поиск причины ошибки TrayMenu.exe является ключом к правильному разрешению таких ошибок. Несмотря на то что большинство этих ошибок EXE, влияющих на TrayMenu.exe, происходят во время запуска, иногда ошибка выполнения возникает при использовании Media Player Codec Pack 4.4.8. Причиной этого может быть недостаточное качество программного кода со стороны Media Player Codec Pack, конфликты с другими приложениями, сторонние плагины или поврежденное и устаревшее оборудование. Кроме того, эти типы ошибок TrayMenu.exe могут возникать в тех случаях, если файл был случайно перемещен, удален или поврежден вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
Если вы столкнулись с одним из вышеуказанных сообщений об ошибке, выполните следующие действия по устранению неполадок, чтобы решить проблему TrayMenu.exe. Эти шаги по устранению неполадок перечислены в рекомендуемом порядке выполнения.
Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):
Если на этапе 1 не удается устранить ошибку TrayMenu.exe, перейдите к шагу 2 ниже.

Шаг 2. Если вы недавно установили приложение Media Player Codec Pack (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Media Player Codec Pack.
Чтобы удалить программное обеспечение Media Player Codec Pack, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):
После полного удаления приложения следует перезагрузить ПК и заново установить Media Player Codec Pack.
Если на этапе 2 также не удается устранить ошибку TrayMenu.exe, перейдите к шагу 3 ниже.

Media Player Codec Pack 4.4.8
Media Player Codec Pack
Шаг 3. Выполните обновление Windows.
Когда первые два шага не устранили проблему, целесообразно запустить Центр обновления Windows. Во многих случаях возникновение сообщений об ошибках TrayMenu.exe может быть вызвано устаревшей операционной системой Windows. Чтобы запустить Центр обновления Windows, выполните следующие простые шаги:
Если Центр обновления Windows не смог устранить сообщение об ошибке TrayMenu.exe, перейдите к следующему шагу. Обратите внимание, что этот последний шаг рекомендуется только для продвинутых пользователей ПК.

Если эти шаги не принесут результата: скачайте и замените файл TrayMenu.exe (внимание: для опытных пользователей)
Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.
Источник
filecheck .ru
Вот так, вы сможете исправить ошибки, связанные с TrayMenu.exe
Важно: Некоторые вредоносные программы маскируют себя как TrayMenu.exe. Таким образом, вы должны проверить файл TrayMenu.exe на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Комментарий пользователя
Лучшие практики для исправления проблем с TrayMenu
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.

Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
Reimage бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
Источник
В вашей системе запущено много процессов, которые потребляют ресурсы процессора и памяти. Некоторые из этих процессов, кажется, являются вредоносными файлами, атакующими ваш компьютер.
Чтобы исправить критические ошибки traymenu.exe,скачайте программу Asmwsoft PC Optimizer и установите ее на своем компьютере
1- Очистите мусорные файлы, чтобы исправить traymenu.exe, которое перестало работать из-за ошибки.
![]()
3- Настройка Windows для исправления критических ошибок traymenu.exe:
![]()
Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.
Некоторые сообщения об ошибках, которые вы можете получить в связи с traymenu.exe файлом
(traymenu.exe) столкнулся с проблемой и должен быть закрыт. Просим прощения за неудобство.
(traymenu.exe) перестал работать.
traymenu.exe. Эта программа не отвечает.
(traymenu.exe) — Ошибка приложения: the instruction at 0xXXXXXX referenced memory error, the memory could not be read. Нажмитие OK, чтобы завершить программу.
(traymenu.exe) не является ошибкой действительного windows-приложения.
(traymenu.exe) отсутствует или не обнаружен.

Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.
процессов:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
Источник
[BUG] On Launch I get Error: «ERROR» is not a valid key name. #24
Describe the bug
Error on launch
Expected behavior
do something
To Reproduce
Simply launched PoE-Wingman.ahk
Screenshots 
(please complete the following information):
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered:
I think your settings.ini could be missing those hotkey settings the script is demanding. We will need to stabilize this function so it can handle missing parameters.
If that doesnt work we’ll have to wait for bandit, since i am at work i cannot do anything on the code 🙁
rename settings.ini to anything (1.ini) then relaunch poe-wingman.ahk
rename settings.ini to anything (1.ini) then relaunch poe-wingman.ahk
Hi there, thank you for participating 🙂
BanditTech commented Aug 7, 2019
Yeah I just need to add in the defaults to the readFromFile() and we can skip the settings default creation completely. That way someone could delete any portion of the settings file and it will still load properly with default settings.
BanditTech commented Aug 8, 2019
this should be resolved, closing.
Main script stopped erroring but the GottaGoFast.ahk still erroring on hotkey line 207

BanditTech commented Aug 9, 2019
Ok this issue should be resolved, hopefully for the last time! XD
Источник
Подлинный файл является одним из компонентов программного обеспечения VLC, разработанного VideoLAN.
TrayMenu.exe — это исполняемый файл (программа) для Windows. Расширение имени файла .exe — это аббревиатура от англ. слова executable — исполнимый. Необходимо запускать исполняемые файлы от проверенных производителей программ, потому что исполняемые файлы могут потенциально изменить настройки компьютера или нанести вред вашему компьютеру. Бесплатный форум с информацией о файлах может помочь вам разобраться является ли TrayMenu.exe вирусом, трояном, программой-шпионом, рекламой, которую вы можете удалить, или файл принадлежит системе Windows или приложению, которому можно доверять.
Вот так, вы сможете исправить ошибки, связанные с TrayMenu.exe
Процесс Tray Menu принадлежит программе неизвестно от Cole Williams или Cole Williams Software.
Важно: Некоторые вредоносные программы маскируют себя как TrayMenu.exe. Таким образом, вы должны проверить файл TrayMenu.exe на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Комментарий пользователя
Лучшие практики для исправления проблем с TrayMenu
Аккуратный и опрятный компьютер — это главное требование для избежания проблем с TrayMenu. Для этого требуется регулярная проверка компьютера на вирусы, очистка жесткого диска, используя cleanmgr и sfc /scannow, удаление программ, которые больше не нужны, проверка программ, которые запускаются при старте Windows (используя msconfig) и активация Автоматическое обновление Windows. Всегда помните о создании периодических бэкапов, или в крайнем случае о создании точек восстановления.
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.
Следующие программы могут вам помочь для анализа процесса TrayMenu.exe на вашем компьютере: Security Task Manager отображает все запущенные задания Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записей автозагрузки. Уникальная оценка рисков безопасности указывает на вероятность процесса быть потенциально опасным — шпионской программой, вирусом или трояном. Malwarebytes Anti-Malware определяет и удаляет бездействующие программы-шпионы, рекламное ПО, трояны, кейлоггеры, вредоносные программы и трекеры с вашего жесткого диска.

Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
Reimage бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
четверг, 23 апреля 2015 г.
Если при установке windows 7 codec pack ( windows.7.codec.pack.v4.1.1.setup.exe ) или перезагрузке вылезает подобная ошибка:
error: «h» is not a valid key name
line#
— 007 : hotkey? %mwt_Hotkey%? mwt_minimize
the kurrent thread will exit.
Что такое EFax Tray Menu
Скачать утилиту для удаления EFax Tray Menu
Удалить EFax Tray Menu вручную
Получить проффесиональную тех поддержку
Читать комментарии

Описание угрозы
Имя исполняемого файла:
EFax Tray Menu
Badware
Win32 (Windows XP, Windows Vista, Windows Seven, Windows 8)
EFax Tray Menu копирует свои файл(ы) на ваш жёсткий диск. Типичное имя файла (*.*). Потом он создаёт ключ автозагрузки в реестре с именем EFax Tray Menu и значением (*.*). Вы также можете найти его в списке процессов с именем (*.*) или EFax Tray Menu.
Если у вас есть дополнительные вопросы касательно EFax Tray Menu, пожалуйста, заполните эту форму и мы вскоре свяжемся с вами.
Скачать утилиту для удаления
Скачайте эту программу и удалите EFax Tray Menu and (*.*) (закачка начнется автоматически):
* SpyHunter был разработан американской компанией EnigmaSoftware и способен удалить удалить EFax Tray Menu в автоматическом режиме. Программа тестировалась на Windows XP, Windows Vista, Windows 7 и Windows 8.
Функции
Удаляет все файлы, созданные EFax Tray Menu.
Удаляет все записи реестра, созданные EFax Tray Menu.
Программа способна защищать файлы и настройки от вредоносного кода.
Программа может исправить проблемы с браузером и защищает настройки браузера.
Удаление гарантированно — если не справился SpyHunter предоставляется бесплатная поддержка.
Антивирусная поддержка в режиме 24/7 входит в комплект поставки.
Скачайте утилиту для удаления EFax Tray Menu от российской компании Security Stronghold
Если вы не уверены какие файлы удалять, используйте нашу программу Утилиту для удаления EFax Tray Menu.. Утилита для удаления EFax Tray Menu найдет и полностью удалит EFax Tray Menu и все проблемы связанные с вирусом EFax Tray Menu. Быстрая, легкая в использовании утилита для удаления EFax Tray Menu защитит ваш компьютер от угрозы EFax Tray Menu которая вредит вашему компьютеру и нарушает вашу частную жизнь. Утилита для удаления EFax Tray Menu сканирует ваши жесткие диски и реестр и удаляет любое проявление EFax Tray Menu. Обычное антивирусное ПО бессильно против вредоносных таких программ, как EFax Tray Menu. Скачать эту упрощенное средство удаления специально разработанное для решения проблем с EFax Tray Menu и (*.*) (закачка начнется автоматически):
Функции
Удаляет все файлы, созданные EFax Tray Menu.
Удаляет все записи реестра, созданные EFax Tray Menu.
Программа может исправить проблемы с браузером.
Иммунизирует систему.
Удаление гарантированно — если Утилита не справилась предоставляется бесплатная поддержка.
Антивирусная поддержка в режиме 24/7 через систему GoToAssist входит в комплект поставки.
Наша служба поддержки готова решить вашу проблему с EFax Tray Menu и удалить EFax Tray Menu прямо сейчас!
Оставьте подробное описание вашей проблемы с EFax Tray Menu в разделе Техническая поддержка. Наша служба поддержки свяжется с вами и предоставит вам пошаговое решение проблемы с EFax Tray Menu. Пожалуйста, опишите вашу проблему как можно точнее. Это поможет нам предоставит вам наиболее эффективный метод удаления EFax Tray Menu.
Эта проблема может быть решена вручную, путём удаления ключей реестра и файлов связанных с EFax Tray Menu, удалением его из списка автозагрузки и де-регистрацией всех связанных DLL файлов. Кроме того, отсутствующие DLL файлы должны быть восстановлены из дистрибутива ОС если они были повреждены EFax Tray Menu.
Чтобы избавиться от EFax Tray Menu, вам необходимо:
1. Завершить следующие процессы и удалить соответствующие файлы:
Предупреждение: вам необходимо удалить только файлы, контольные суммы которых, находятся в списке вредоносных. В вашей системе могут быть нужные файлы с такими же именами. Мы рекомендуем использовать Утилиту для удаления EFax Tray Menu для безопасного решения проблемы.
2. Удалите следующие папки:
3. Удалите следующие ключи иили значения ключей реестра:
Предупреждение: Если указаны значения ключей реестра, вы должны удалить только указанные значения и оставить сами ключи нетронутыми. Мы рекомендуем использовать Утилиту для удаления EFax Tray Menu для безопасного решения проблемы.
Как предотвратить заражение рекламным ПО? Мы рекомендуем использовать Adguard:
4. Сбросить настройки браузеров
EFax Tray Menu иногда может влиять на настройки вашего браузера, например подменять поиск и домашнюю страницу. Мы рекомендуем вам использовать бесплатную функцию «Сбросить настройки браузеров» в «Инструментах» в программе Spyhunter Remediation Tool для сброса настроек всех браузеров разом. Учтите, что перед этим вам надо удалить все файлы, папки и ключи реестра принадлежащие EFax Tray Menu. Для сброса настроек браузеров вручную используйте данную инструкцию:
Для Internet Explorer
Если вы используете Windows XP, кликните Пуск, и Открыть. Введите следующее в поле Открыть без кавычек и нажмите Enter: «inetcpl.cpl».
Если вы используете Windows 7 или Windows Vista, кликните Пуск. Введите следующее в поле Искать без кавычек и нажмите Enter: «inetcpl.cpl».
Выберите вкладку Дополнительно
Под Сброс параметров браузера Internet Explorer, кликните Сброс. И нажмите Сброс ещё раз в открывшемся окне.
Выберите галочку Удалить личные настройки для удаления истории, восстановления поиска и домашней страницы.
После того как Internet Explorer завершит сброс, кликните Закрыть в диалоговом окне.
Предупреждение: В случае если это не сработает используйте бесплатную опцию Сбросить настройки браузеров в Инструменты в программе Spyhunter Remediation Tool.
Найдите папку установки Google Chrome по адресу: C:Users»имя пользователя»AppDataLocalGoogleChromeApplicationUser Data.
В папке User Data, найдите файл Default и переименуйте его в DefaultBackup.
Запустите Google Chrome и будет создан новый файл Default.
Настройки Google Chrome сброшены
Предупреждение: В случае если это не сработает используйте бесплатную опцию Сбросить настройки браузеров в Инструменты в программе Spyhunter Remediation Tool.
Для Mozilla Firefox
В меню выберите Помощь > Информация для решения проблем.
Кликните кнопку Сбросить Firefox.
После того, как Firefox завершит, он покажет окно и создаст папку на рабочем столе. Нажмите Завершить.
Предупреждение: Так вы потеряте выши пароли! Рекомендуем использовать бесплатную опцию Сбросить настройки браузеров в Инструменты в программе Spyhunter Remediation Tool.
Источник
Теперь ясно. Действительно выяснилось что у этой клавиши 2 vk и sc кода, а также у NumpadClear и Tab 2 sc кода но vk коды одинаковые, других исключений не обнаружил.
Попробуйте это:
#NoEnv
#SingleInstance Force
OnExit("HotkeySet")
Menu, Tray, Click, 1
Menu, Tray, NoStandard
Menu, Tray, Add, Hide/Show, GuiClose
Menu, Tray, Add, ExitApp, ExitApp
Menu, Tray, Default, Hide/Show
Hotkey_IniPath(A_ScriptDir "Hotkey.ini"), Hotkey_IniSection("Hotkeys")
#IF !GuiShow
#IF
Gui, +AlwaysOnTop +HWNDhGui
Gui, Add, Edit, Center w300 r1 hwndhMyHotkey1, % Hotkey_Read("MyHotkey1")
Gui, Add, Edit, Center wp y+10 r1 hwndhMyHotkey2, % Hotkey_Read("MyHotkey2")
Gui, Add, Edit, Center wp y+10 r1 hwndhMyHotkey3, % Hotkey_Read("MyHotkey3")
Hotkey_Register(["MyHotkey1",hMyHotkey1,"KMLRJG1"], ["MyHotkey2",hMyHotkey2,"KMLRJG1"], ["MyHotkey3",hMyHotkey3,"KMLRJDG1"])
GuiClose:
Gui, Show, % (GuiShow := !GuiShow) ? "" : "Hide"
IF !GuiShow
HotkeySet()
Return
HotkeySet() {
Static arr := []
Hotkey, IF, !GuiShow
Loop, 3
{
Hotkey, % arr[A_Index], Off, UseErrorLevel
Hotkey_IniWrite("MyHotkey" A_Index)
Hotkey, % arr[A_Index] := Hotkey_Value("MyHotkey" A_Index), % ("Action" A_Index), UseErrorLevel On
}
Hotkey, IF
}
ExitApp() {
ExitApp
}
Action1:
MsgBox, , , % A_ThisLabel "`n" A_ThisHotkey, 0.3
Return
Action2:
MsgBox, , , % A_ThisLabel "`n" A_ThisHotkey, 0.3
Return
Action3:
MsgBox, , , % A_ThisLabel "`n" A_ThisHotkey, 0.3
Return
; Автор - serzh82saratov
; E-Mail: serzh82saratov@mail.ru
; Описание - http://forum.script-coding.com/viewtopic.php?id=8343
Hotkey_Register(Controls*) {
Static IsStart
Local k, v, g, g1
For k, v in Controls
{
Hotkey_ID(v[2], v[1]), Hotkey_ID(v[1], v[2])
Hotkey_Options(v[2], v[3] = "" ? "K" : v[3])
Hotkey_Value(v[2], Hotkey_Value(v[1]))
PostMessage, 0x00CF, 1, , , % "ahk_id" v[2] ; EM_SETREADONLY
If RegExMatch(v[3], "i)G(d+)", g)
Hotkey_Group("Set", v[1], g1)
}
If IsStart
Return Hotkey_IsRegFocus()
#HotkeyInterval 0
OnMessage(0x203, "Hotkey_WM_LBUTTONDBLCLK") ; WM_LBUTTONDBLCLK
Hotkey_SetWinEventHook(0x8005, 0x8005, 0, RegisterCallback("Hotkey_EventFocus", "F"), 0, 0, 0) ; EVENT_OBJECT_FOCUS := 0x8005
Hotkey_InitHotkeys(), Hotkey_IsRegFocus(), IsStart := 1
}
Hotkey_Main(Param1, Param2 = "") {
Static OnlyMods, ControlHandle, Hotkey, KeyName, K := {}
, Prefix := {"LAlt":"<!","LCtrl":"<^","LShift":"<+","LWin":"<#"
,"RAlt":">!","RCtrl":">^","RShift":">+","RWin":">#"
,"Alt":"!","Ctrl":"^","Shift":"+","Win":"#"}
, EngSym := {"sc2":"1","sc3":"2","sc4":"3","sc5":"4","sc6":"5","sc7":"6"
,"sc8":"7","sc9":"8","scA":"9","scB":"0","scC":"-","scD":"="
,"sc10":"Q","sc11":"W","sc12":"E","sc13":"R","sc14":"T","sc15":"Y"
,"sc16":"U","sc17":"I","sc18":"O","sc19":"P","sc1A":"[","sc1B":"]"
,"sc1E":"A","sc1F":"S","sc20":"D","sc21":"F","sc22":"G","sc23":"H"
,"sc24":"J","sc25":"K","sc26":"L","sc27":"`;","sc28":"'","sc29":"``"
,"sc2B":"","sc2C":"Z","sc2D":"X","sc2E":"C","sc2F":"V","sc30":"B"
,"sc31":"N","sc32":"M","sc33":",","sc34":".","sc35":"/"}
Local IsMod, Text
If Param1 = GetMod
Return K.MLCtrl K.MRCtrl K.MLAlt K.MRAlt K.MLShift K.MRShift K.MLWin K.MRWin K.MCtrl K.MAlt K.MShift K.MWin
If Param2
{
K := {}
If OnlyMods && !(OnlyMods := 0)
SendMessage, 0xC, 0, "" Hotkey_Arr("Empty"), , ahk_id %ControlHandle%
ControlHandle := Param2
Hotkey_Arr("Hook", Hotkey_Options(ControlHandle))
PostMessage, 0x00B1, -1, -1, , ahk_id %ControlHandle% ; EM_SETSEL
}
Else If Hotkey_Arr("Hook")
{
Hotkey_Arr("Hook", 0)
If OnlyMods && !(OnlyMods := 0)
SendMessage, 0xC, 0, "" Hotkey_Arr("Empty"), , ahk_id %ControlHandle%
SetTimer, Hotkey_IsRegFocus, -200
}
Return
Hotkey_Mods:
If InStr(Hotkey_Arr("Hook"), "S") || InStr(Hotkey_Arr("Hook"), "W")
GoTo Hotkey_View
IsMod := InStr(Hotkey_Arr("Hook"), "D") ? A_ThisHotkey : SubStr(A_ThisHotkey, 2)
If (K["M" IsMod] != "")
Return
K["M" IsMod] := IsMod " + ", K["P" IsMod] := Prefix[IsMod]
GoTo Hotkey_ViewMod
Hotkey_ModsUp:
If InStr(Hotkey_Arr("Hook"), "S") || InStr(Hotkey_Arr("Hook"), "W")
Return
IsMod := InStr(Hotkey_Arr("Hook"), "D") ? SubStr(A_ThisHotkey, 1, -3) : SubStr(A_ThisHotkey, 2, -3)
K["M" IsMod] := "", K["P" IsMod] := ""
If (Hotkey != "")
Return
Hotkey_ViewMod:
Hotkey := "", OnlyMods := 1, Hotkey_Value(Hotkey_ID(ControlHandle), ""), Hotkey_Value(ControlHandle, "")
K.Mods := K.MLCtrl K.MRCtrl K.MLAlt K.MRAlt K.MLShift K.MRShift K.MLWin K.MRWin K.MCtrl K.MAlt K.MShift K.MWin
Text := K.Mods = "" ? Hotkey_Arr("Empty") : K.Mods
SendMessage, 0xC, 0, &Text, , ahk_id %ControlHandle%
Return
Hotkey_ViewNum:
If InStr(Hotkey_Arr("Hook"), "N")
KeyName := Hotkey := GetKeyName(A_ThisHotkey)
Else
Hotkey := Format("sc{:x}", GetKeySC(A_ThisHotkey)), KeyName := GetKeyName(Hotkey)
GoTo, Hotkey_Put
Hotkey_ViewSC:
KeyName := Hotkey_Arr("OnlyEngSym") ? EngSym[A_ThisHotkey] : Format("{:U}", GetKeyName(A_ThisHotkey))
Hotkey := A_ThisHotkey
GoTo, Hotkey_Put
Hotkey_View:
KeyName := Hotkey := A_ThisHotkey
Hotkey_Put:
If InStr(Hotkey_Arr("Hook"), "W")
GoTo Hotkey_Double
OnlyMods := 0
K.Prefix := K.PLCtrl K.PRCtrl K.PLAlt K.PRAlt K.PLShift K.PRShift K.PLWin K.PRWin K.PCtrl K.PAlt K.PShift K.PWin
Hotkey_Value(Hotkey_ID(ControlHandle), K.Prefix Hotkey), Hotkey_Value(ControlHandle, K.Prefix Hotkey)
K.Mods := K.MLCtrl K.MRCtrl K.MLAlt K.MRAlt K.MLShift K.MRShift K.MLWin K.MRWin K.MCtrl K.MAlt K.MShift K.MWin
Text := K.Mods KeyName = "" ? Hotkey_Arr("Empty") : K.Mods KeyName
SendMessage, 0xC, 0, &Text, , ahk_id %ControlHandle%
Hotkey_GroupCheck:
If Hotkey_Group("Get", Hotkey_ID(ControlHandle)) && Hotkey_Group("SaveCheck", ControlHandle)
SetTimer, Hotkey_Group, -70
Return
Hotkey_Double:
If !K.Double
{
Hotkey_Value(Hotkey_ID(ControlHandle), ""), Hotkey_Value(ControlHandle, "")
K.DHotkey := Hotkey, K.DName := KeyName, K.Double := 1, OnlyMods := 1
Text := KeyName " & "
SendMessage, 0xC, 0, &Text, , ahk_id %ControlHandle%
Return
}
If (K.DHotkey = Hotkey)
Return
Hotkey_Value(Hotkey_ID(ControlHandle), K.DHotkey " & " Hotkey), Hotkey_Value(ControlHandle, K.DHotkey " & " Hotkey)
Text := K.DName " & " KeyName, K.Double := 0, OnlyMods := 0
SendMessage, 0xC, 0, &Text, , ahk_id %ControlHandle%
GoTo, Hotkey_GroupCheck
Hotkey_RButton:
If Hotkey_Hook("L") && GetKeyState("LButton"`, "P")
KeyName := Hotkey := "LButton"
Else If Hotkey_Hook("R")
KeyName := Hotkey := "RButton"
Else
Return
GoTo, Hotkey_Put
}
Hotkey_InitHotkeys() {
Local S_FormatInteger, S_BatchLines
Static nmMods := "LAlt|RAlt|LCtrl|RCtrl|LShift|RShift|LWin|RWin"
, nmMouse := "MButton|WheelDown|WheelUp|WheelRight|WheelLeft|XButton1|XButton2"
, scSymb := "2|3|4|5|6|7|8|9|A|B|C|D|10|11|12|13|14|15|16|17|18|19|1A|1B|"
. "1E|1F|20|21|22|23|24|25|26|27|28|29|2B|2C|2D|2E|2F|30|31|32|33|34|35|56"
, scOther := "1|E|F|1C|37|39|3A|3B|3C|3D|3E|3F|40|41|42|43|44|45|46|4A|4E|54|57|58|63|64|65|"
. "66|67|68|69|6A|6B|6C|6D|6E|76|7C|11C|135|145|147|148|149|14B|14D|14F|150|151|152|153|15D"
, vkNum := "2E|6E|60|2D|61|23|62|28|63|22|64|25|65|C|66|27|67|24|68|26|69" ; , scNum := "53|52|4F|50|51|4B|4C|4D|47|48|49|59"
, vkOther := "3|13|5F|A6|A7|A8|A9|AA|AB|AC|AD|AE|AF|B0|B1|B2|B3|B4|B5|B6|B7"
S_BatchLines := A_BatchLines
SetBatchLines, -1
#IF Hotkey_IsRegControl()
#IF Hotkey_Hook("K")
#IF Hotkey_Hook("M")
#IF Hotkey_Hook("L") && GetKeyState("RButton", "P")
#IF Hotkey_Hook("R") || Hotkey_Hook("L")
#IF Hotkey_Hook("J") && !Hotkey_Main("GetMod")
#IF Hotkey_Arr("Hook") && !Hotkey_Hook("K")
#IF
Hotkey, IF, Hotkey_Hook("M")
Loop, Parse, nmMouse, |
Hotkey, % A_LoopField, Hotkey_View
Hotkey, IF, Hotkey_Hook("K")
Loop, Parse, nmMods, |
{
Hotkey, % A_LoopField, Hotkey_Mods
Hotkey, % A_LoopField " Up", Hotkey_ModsUp
}
Loop, Parse, scSymb, |
Hotkey, % "sc" A_LoopField, Hotkey_ViewSC
Loop, Parse, scOther, |
Hotkey, % GetKeyName("sc" A_LoopField), Hotkey_View
Loop, Parse, vkNum, |
Hotkey, % "vk" A_LoopField, Hotkey_ViewNum
Loop, Parse, vkOther, |
Hotkey, % GetKeyName("vk" A_LoopField), Hotkey_View
Hotkey, IF, Hotkey_Hook("L") && GetKeyState("RButton"`, "P")
Hotkey, LButton, Hotkey_Return
Hotkey, IF, Hotkey_Hook("R") || Hotkey_Hook("L")
Hotkey, RButton, Hotkey_Return
Hotkey, RButton Up, Hotkey_RButton
S_FormatInteger := A_FormatInteger
SetFormat, IntegerFast, D
Hotkey, IF, Hotkey_Hook("J") && !Hotkey_Main("GetMod")
Loop, 128
Hotkey % Ceil(A_Index / 32) "Joy" Mod(A_Index - 1, 32) + 1, Hotkey_View
SetFormat, IntegerFast, %S_FormatInteger%
Hotkey, IF, Hotkey_IsRegControl()
Hotkey, RButton, Hotkey_RButtonBlock
Hotkey, RButton Up, Hotkey_Return
Hotkey, IF, Hotkey_Arr("Hook") && !Hotkey_Hook("K")
Hotkey, AppsKey Up, Hotkey_Return
Hotkey, +F10, Hotkey_Return
Hotkey, IF
SetBatchLines, %S_BatchLines%
Return
Hotkey_RButtonBlock:
Click
Hotkey_Return:
Return
}
Hotkey_IsRegControl() {
Local Control
MouseGetPos,,,, Control, 2
Return Hotkey_ID(Control) != ""
}
Hotkey_IsRegFocus() {
Local ControlNN, hFocus
ControlGetFocus, ControlNN, A
ControlGet, hFocus, Hwnd, , %ControlNN%, A
Hotkey_ID(hFocus) != "" ? Hotkey_Main("Control", hFocus) : 0
}
Hotkey_WM_LBUTTONDBLCLK(wp, lp, msg, hwnd) {
If (Hotkey_ID(hwnd) = "")
Return
SendMessage, 0xC, 0, "" Hotkey_Arr("Empty"), , ahk_id %hwnd%
Hotkey_Value(hwnd, ""), Hotkey_Value(Hotkey_ID(hwnd), "")
Sleep 50
PostMessage, 0x00B1, -1, -1, , ahk_id %hwnd% ; EM_SETSEL
}
Hotkey_EventFocus(hWinEventHook, event, hwnd) {
Hotkey_ID(hwnd) != "" ? Hotkey_Main("Control", hwnd) : Hotkey_Main("Control")
}
Hotkey_SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags) {
Return DllCall("SetWinEventHook" , "UInt", eventMin, "UInt", eventMax, "Ptr", hmodWinEventProc
, "Ptr", lpfnWinEventProc, "UInt", idProcess, "UInt", idThread, "UInt", dwFlags, "Ptr")
}
; -------------------------------------- Save and get --------------------------------------
Hotkey_Arr(P*) {
Static Arr := {"Empty":"Нет"}
Return P.MaxIndex() = 1 ? Arr[P[1]] : (Arr[P[1]] := P[2])
}
Hotkey_ID(P*) {
Static Arr := {}
Return P.MaxIndex() = 1 ? Arr[P[1]] : P.MaxIndex() = 2 ? (Arr[P[1]] := P[2]) : Arr.Delete(P[1])
}
Hotkey_Value(P*) {
Static Arr := {}
Return P.MaxIndex() = 1 ? Arr[P[1]] : P.MaxIndex() = 2 ? (Arr[P[1]] := P[2]) : Arr.Delete(P[1])
}
Hotkey_Options(P*) {
Static Arr := {}
Return P.MaxIndex() = 1 ? Arr[P[1]] : P.MaxIndex() = 2 ? (Arr[P[1]] := P[2]) : Arr.Delete(P[1])
}
Hotkey_ChangeOption(ID, Option) {
Local Hwnd, Name, g, g1
(ID + 0 = "") ? (Hwnd := Hotkey_ID(ID), Name := ID) : (Hwnd := ID, Name := Hotkey_ID(ID))
If RegExMatch(Hotkey_Options(Hwnd), "i)G(d+)", g)
Hotkey_Group("Delete", Name)
If RegExMatch(Option, "i)G(d+)", g)
Hotkey_Group("Set", Name, g1)
Return Hotkey_Options(Hwnd, Option)
}
Hotkey_Hook(Option) {
Return Hotkey_Arr("Hook") && !!InStr(Hotkey_Arr("Hook"), Option)
}
Hotkey_Delete(ID, Destroy = 0) {
Local Hwnd, Name, hFocus, ControlNN
(ID + 0 = "") ? (Hwnd := Hotkey_ID(ID), Name := ID) : (Hwnd := ID, Name := Hotkey_ID(ID))
Hotkey_Group("Delete", Name)
Hotkey_ID(Hwnd, "", 1), Hotkey_ID(Name, "", 1)
Hotkey_Value(Hwnd, "", 1), Hotkey_Value(Name, "", 1)
Hotkey_Options(Hwnd, "", 1)
ControlGetFocus, ControlNN, A
ControlGet, hFocus, Hwnd, , %ControlNN%, A
(hFocus = Hwnd ? Hotkey_Main("Control") : 0)
If Destroy
DllCall("DestroyWindow", "Ptr", Hwnd)
Else
PostMessage, 0x00CF, 0, , , % "ahk_id" Hwnd ; EM_SETREADONLY
Return Hwnd
}
Hotkey_Set(Name, Value = "") {
Local Text
Text := Hotkey_HKToStr(Value)
SendMessage, 0xC, 0, &Text, , % "ahk_id" Hotkey_ID(Name)
Return Text, Hotkey_Value(Name, Value), Hotkey_Value(Hotkey_ID(Name), Value)
}
Hotkey_Read(Name, Section = "", FilePath = "") {
Local HK
HK := Hotkey_IniRead(Name, Section, FilePath), Hotkey_Value(Name, HK)
Return Hotkey_HKToStr(HK)
}
Hotkey_IniPath(Path = "") {
Return Path = "" ? Hotkey_Arr("IniPath") : Hotkey_Arr("IniPath", Path)
}
Hotkey_IniSection(Section = "") {
Return Section = "" ? Hotkey_Arr("IniSection") : Hotkey_Arr("IniSection", Section)
}
Hotkey_IniRead(Name, Section = "", FilePath = "") {
Local Data
IniRead, Data, % FilePath = "" ? Hotkey_IniPath() : FilePath, % Section = "" ? Hotkey_IniSection() : Section, % Name, % A_Space
Return Data
}
Hotkey_IniWrite(ID, Section = "", FilePath = "") {
Local Name
Name := (ID + 0 = "") ? ID : Hotkey_ID(ID)
If (Name != "")
IniWrite, % Hotkey_Value(ID), % FilePath = "" ? Hotkey_IniPath() : FilePath, % Section = "" ? Hotkey_IniSection() : Section, % Name
}
; -------------------------------------- Group --------------------------------------
Hotkey_Group(Key = "", p1 = "", p2 = "") {
Local Name, Value, k, v, n, m, f, r
Static NG := {}, GN := [], Blink := [], SaveCheck := [], i := 0
If (Key = "") {
For k, Name in SaveCheck {
If ((Value := Hotkey_Value(Name)) != "") {
(f := Hotkey_Arr("GroupEvents")) != "" && (r := {}, r.names := [])
For m, n in GN[NG[Name]] {
If (n != Name && Hotkey_Equal(Value, Hotkey_Value(n))) {
Hotkey_Set(Name)
(f != "") && (r.names.Push(n), r.this := Name, r.value := Value, r.group := NG[Name])
If !DllCall("IsWindowVisible", "Ptr", Hotkey_ID(n))
Continue
DllCall("ShowWindowAsync", "Ptr", Hotkey_ID(n), "Int", 0)
Blink[Hotkey_ID(n)] := 1, i := 3
SetTimer, Hotkey_BlinkControl, -50
}
}
}
SaveCheck.Delete(k)
}
(f != "") && (r.this != "") && %f%(r)
}
Else If (Key = "Set")
NG[p1] := p2, IsObject(GN[p2]) ? GN[p2].Push(p1) : GN[p2] := [p1]
Else If (Key = "SaveCheck")
Return 1, SaveCheck[p1] := Hotkey_ID(p1)
Else If (Key = "Get")
Return NG[p1] != ""
Else If (Key = "CheckAll") {
For k, v in GN
For k, n in v
If ((Value := Hotkey_Value(n)) != "")
For k, m in v
If (n != m && Hotkey_Equal(Value, Hotkey_Value(m)))
Hotkey_Set(m)
}
Else If (Key = "Delete") {
For k, v in GN[NG[p1]]
If (v = p1) {
GN[NG[p1]].RemoveAt(k)
Break
}
NG.Delete(p1)
}
Return
Hotkey_BlinkControl:
For k in Blink
DllCall("ShowWindowAsync", "Ptr", k, "Int", Mod(i, 2) ? 4 : 0)
If (--i > 0) || !(Blink := [])
SetTimer, Hotkey_BlinkControl, -50
Return
}
Hotkey_Equal(HK1, HK2) {
Local Bool
If (HK2 = "")
Return 0
If (HK1 = HK2)
Return 1
If Hotkey_EqualDouble(HK1, HK2, Bool) || Hotkey_EqualDouble(HK2, HK1, Bool)
Return Bool
If !(HK1 ~= "S)[^+!#]") || !(HK2 ~= "S)[^+!#]")
Return 0
If (HK1 ~= "S)[<>]") && (HK2 ~= "S)[<>]")
Return 0
Return (Hotkey_ModsSub(HK1) = Hotkey_ModsSub(HK2))
}
Hotkey_EqualDouble(HK1, HK2, ByRef Bool) {
Static Prefix := {"LAlt":"<!","LCtrl":"<^","LShift":"<+","LWin":"<#"
,"RAlt":">!","RCtrl":">^","RShift":">+","RWin":">#"}
Local K, K1, K2
If InStr(HK1, " & ") && !InStr(HK2, " & ") && (HK2 ~= "S)[^+!#]")
&& (HK1 ~= "S)(L|R)(Ctrl|Alt|Shift|Win) & ")
&& !(HK1 ~= "S) & (L|R)(Ctrl|Alt|Shift|Win)")
{
RegExMatch(HK1, "S)^s*(.*?) & (.*?)s*$", K)
K := Prefix[K1] . K2
If (HK2 ~= "S)[<>]")
Return 1, Bool := K = HK2
Return 1, Bool := RegExReplace(K, "(<|>)") = HK2
}
Return 0
}
Hotkey_ModsSub(Value) {
If !(Value ~= "[<>]")
Return Value
Value := StrReplace(Value, "<")
Value := StrReplace(Value, ">")
Value := StrReplace(Value, "^^", "^", , 1)
Value := StrReplace(Value, "!!", "!", , 1)
Value := StrReplace(Value, "++", "+", , 1)
Return StrReplace(Value, "##", "#", , 1)
}
; -------------------------------------- Format --------------------------------------
Hotkey_HKToStr(HK) {
Static Prefix := {"^":"Ctrl","!":"Alt","+":"Shift","#":"Win","<":"L",">":"R"}
, EngSym := {"sc2":"1","sc3":"2","sc4":"3","sc5":"4","sc6":"5","sc7":"6"
,"sc8":"7","sc9":"8","scA":"9","scB":"0","scC":"-","scD":"="
,"sc10":"Q","sc11":"W","sc12":"E","sc13":"R","sc14":"T","sc15":"Y"
,"sc16":"U","sc17":"I","sc18":"O","sc19":"P","sc1A":"[","sc1B":"]"
,"sc1E":"A","sc1F":"S","sc20":"D","sc21":"F","sc22":"G","sc23":"H"
,"sc24":"J","sc25":"K","sc26":"L","sc27":"`;","sc28":"'","sc29":"``"
,"sc2B":"","sc2C":"Z","sc2D":"X","sc2E":"C","sc2F":"V","sc30":"B"
,"sc31":"N","sc32":"M","sc33":",","sc34":".","sc35":"/","sc56":""
,"vk31":"1","vk32":"2","vk33":"3","vk34":"4","vk35":"5","vk36":"6"
,"vk37":"7","vk38":"8","vk39":"9","vk30":"0","vkBD":"-","vkBB":"="
,"vk51":"Q","vk57":"W","vk45":"E","vk52":"R","vk54":"T","vk59":"Y"
,"vk55":"U","vk49":"I","vk4F":"O","vk50":"P","vkDB":"[","vkDD":"]"
,"vk41":"A","vk53":"S","vk44":"D","vk46":"F","vk47":"G","vk48":"H"
,"vk4A":"J","vk4B":"K","vk4C":"L","vkBA":"`;","vkDE":"'","vkC0":"``"
,"vkDC":"","vk5A":"Z","vk58":"X","vk43":"C","vk56":"V","vk42":"B"
,"vk4E":"N","vk4D":"M","vkBC":",","vkBE":".","vkBF":"/","vkE2":""}
Local K, K1, K2, R, R1, R2, M, P := 1
If InStr(HK, " & ")
{
RegExMatch(HK, "S)^s*(.*?) & (.*?)s*$", K)
If K1 ~= "i)^(vk|sc[^r])"
K1 := Hotkey_Arr("OnlyEngSym") && EngSym.HasKey(K1) ? EngSym[K1] : GetKeyName(K1)
If K2 ~= "i)^(vk|sc[^r])"
K2 := Hotkey_Arr("OnlyEngSym") && EngSym.HasKey(K2) ? EngSym[K2] : GetKeyName(K2)
Return (StrLen(K1) = 1 ? Format("{:U}", K1) : K1) " & " (StrLen(K2) = 1 ? Format("{:U}", K2) : K2)
}
RegExMatch(HK, "S)^s*([~*$^+!#<>]*){?(.*?)}?s*$", K)
If (K2 = "")
Return "" Hotkey_Arr("Empty")
If K2 ~= "i)^(vk|sc[^r])"
K2 := Hotkey_Arr("OnlyEngSym") && EngSym.HasKey(K2) ? EngSym[K2] : GetKeyName(K2)
While P := RegExMatch(K1, "S)([<>])*([^+!#])", R, P) + StrLen(R)
M .= Prefix[R1] . Prefix[R2] . " + "
Return M . (StrLen(K2) = 1 ? Format("{:U}", K2) : K2)
}
Hotkey_HKToSend(HK, Section = "", FilePath = "") {
Static V := {"^":"Ctrl","!":"Alt","+":"Shift","#":"Win","<":"L",">":"R","":"L"}
Local K, K1, K2, M1, M2, R, R1, R2, P := 1
If (HK = "")
Return
If (Section != "")
IniRead, HK, % FilePath = "" ? Hotkey_IniPath() : FilePath, % Section, % HK, % A_Space
If InStr(HK, " & ") && (1, RegExMatch(HK, "S)^s*(.*?) & (.*?)s*$", K))
Return "{" K1 " Down}{" K2 " Down}{" K1 " Up}{" K2 " Up}"
RegExMatch(HK, "S)^s*([~*$^+!#<>]*){?(.*?)}?s*$", K)
While P := RegExMatch(K1, "S)([<>])*([^+!#])", R, P) + StrLen(R)
M1 .= "{" V[R1] V[R2] " Down}", M2 .= "{" V[R1] V[R2] " Up}"
Return M1 . "{" K2 "}" . M2
}
I’ve been working on a new version of this program and I have come up across a problem.
I keep getting:
—————————
PrintSpooler.ahk
—————————
Error: «» is not a valid key name. The current thread will exit.Line#
117: }
120: Gui,Submit
122: ready = true
124: mwt_MaxWindows = 50
126: mwt_StandardMenu = N
129: SetWinDelay,10
130: SetKeyDelay,0
—> 132: Hotkey,%guihide%,mwt_Minimize
133: Hotkey,%guishow%,mwt_UnMinimize
136: OnExit,mwt_RestoreAllThenExit
139: if mwt_StandardMenu = Y
140: Menu,Tray,Add
142: Else
143: {
144: Menu,Tray,NoStandard—————————
OK
—————————
and I have no idea why. If someone could look over the code and tell me what’s wrong that’d be great.
#Persistent
#SingleInstance force
RegRead, saved, HKEY_LOCAL_MACHINE, SOFTWAREPrintSpooler, Saved
paused = false
Gui, Add, Tab, x-4 y5 w830 h450 , Main|Hide|Show
Gui, Tab, Main
Gui, Add, Text, x6 y35 w300 h50 +Center, This handy application hides the active window when you press the hotkey of your choice. You can unhide the window using the tray menu or with a hotkey.
if saved >= 2
{
Gui, Add, Text, x6 y145 w40 h20 , Saved:
Gui, Add, Text, x56 y145 w110 h20 , %saved%
}
Gui, Add, Button, x176 y145 w60 h20 , Email Me
Gui, Add, Button, x246 y145 w60 h20 ggo, OK
Gui, Tab, Hide
Gui, Add, Text, x6 y35 w300 h50 +Center, When you press the hotkey of your choice the program will do what is selected in "On Hotkey" and then hide (not minimize) the active window.
Gui, Add, GroupBox, x6 y95 w140 h70 , Hotkey
Gui, Add, Radio, x16 y115 w20 h20 vhradio checked,
Gui, Add, Radio, x16 y135 w20 h20 ,
Gui, Add, Hotkey, x36 y115 w100 h20 vhhotkey, !x
Gui, Add, DropDownList, x36 y135 w100 h20 r3 vhdropdown, Right Shift + /||Middle Click|Right + Left Click
Gui, Add, GroupBox, x156 y95 w150 h70 , On Hotkey
Gui, Add, CheckBox, x166 y115 w110 h20 vhspace, Send space
Gui, Add, Button, x276 y115 w20 h20 ghspaceinfo, i
Gui, Add, CheckBox, x166 y135 w110 h20 vhmute, Mute volume
Gui, Add, Button, x276 y135 w20 h20 ghmuteinfo, i
Gui, Tab, Show
Gui, Add, Text, x6 y35 w300 h50 +Center, When you press the hotkey of your choice the program will do what is selected in "On Hotkey" and then restore the last hidden window.
Gui, Add, GroupBox, x6 y95 w140 h70 , Hotkey
Gui, Add, Radio, x16 y115 w20 h20 vsradio checked,
Gui, Add, Radio, x16 y135 w20 h20 ,
Gui, Add, Hotkey, x36 y115 w100 h20 vshotkey, !c
Gui, Add, DropDownList, x36 y135 w100 h20 r3 vsdropdown, Right Shift + .||Ctrl + Middle Click|Right + Middle Click
Gui, Add, GroupBox, x156 y95 w150 h70 , On Hotkey
Gui, Add, CheckBox, x166 y115 w110 h20 vsspace, Send space
Gui, Add, Button, x276 y115 w20 h20 gsspaceinfo, i
Gui, Add, CheckBox, x166 y135 w110 h20 vsmute, UnMute volume
Gui, Add, Button, x276 y135 w20 h20 gsmuteinfo, i
Gui, Show, x527 y272 h178 w320, Print Spooler 9.11
Return
hspaceinfo:
Msgbox, The spacebar pauses many media applications, when you press your hide hotkey a space will be sent.
return
hmuteinfo:
Msgbox, When you press your hide hotkey your computer will be muted.
return
sspaceinfo:
Msgbox, The spacebar pauses many media applications, when you press your show hotkey a space will be sent.
return
smuteinfo:
Msgbox, When you press your show hotkey your computer will be unmuted.
return
GuiClose:
ExitApp
return
go:
if hradio = 1
{
if (hhotkey == "")
{
MsgBox, Please choose a hide Hotkey.
} else {
guihide = %hhotkey%
}
}
if hradio = 2
{
if hdropdown = Right Shift + /
{
guihide = >+/
}
if hdropdown = Middle Click
{
guihide = MButton
}
if hdropdown = Right + Left Click
{
guihide = ~RButton & ~LButton
}
}
if sradio = 1
{
if (shotkey == "")
{
MsgBox, Please choose a show Hotkey.
} else {
guihide = %shotkey%
}
} else {
if sdropdown = Right Shift + .
{
guishow = >+.
}
if sdropdown = Ctrl + Middle Click
{
guishow = ^MButton
}
if sdropdown = Right + Middle Click
{
guishow = ~RButton & ~MButton
}
}
Gui, Submit
ready = true
mwt_MaxWindows = 50
mwt_StandardMenu = N
#HotkeyModifierTimeout 100
SetWinDelay 10
SetKeyDelay 0
Hotkey, %guihide%, mwt_Minimize
Hotkey, %guishow%, mwt_UnMinimize
OnExit, mwt_RestoreAllThenExit
if mwt_StandardMenu = Y
Menu, Tray, Add
else
{
Menu, Tray, NoStandard
Menu, Tray, Add, P&ause, Pause
Menu, Tray, Add, E&xit, mwt_RestoreAllThenExit
;Menu, Tray, Icon, %A_WinDir%SYSTEM32PRINTUI.DLL, 132, 1
if A_IsCompiled = 1
{
Menu, Tray, Icon, %A_ScriptName%, , 1
}
}
Menu, Tray, Add, &Show All Hidden Windows, mwt_RestoreAll
Menu, Tray, Add
Menu, Tray, Tip, 1 document(s) pending for %A_UserName%
if a_AhkVersion =
mwt_MaxLength = 100
else
mwt_MaxLength = 260 ; Reduce this to restrict the width of the menu.
return ; End of auto-execute section.
mwt_Minimize:
if mwt_WindowCount >= %mwt_MaxWindows%
{
MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously.
return
}
; Set the "last found window" to simplify and help performance.
; Since in certain cases it is possible for there to be no active window,
; a timeout has been added:
WinWait, A,, 2
if ErrorLevel <> 0 ; It timed out, so do nothing.
return
; Otherwise, the "last found window" has been set and can now be used:
WinGet, mwt_ActiveID, ID
WinGetTitle, mwt_ActiveTitle
WinGetClass, mwt_ActiveClass
if mwt_ActiveClass in Shell_TrayWnd,Progman
{
MsgBox, The desktop and taskbar cannot be hidden.
return
}
if hspace = 1
{
Send, {Space}
}
if hmute = 1
{
SoundSet, 1, , mute
}
Send, !{esc}
WinHide
saved := ++saved
if mwt_ActiveTitle =
mwt_ActiveTitle = ahk_class %mwt_ActiveClass%
StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength%
Loop, %mwt_MaxWindows%
{
if mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
{
; Match found, so it's not unique.
; First remove the 0x from the hex number to conserve menu space:
StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2
StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort
StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle
mwt_ActiveTitleLength += %mwt_ActiveIDShortLength%
mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID.
if mwt_ActiveTitleLength > %mwt_MaxLength%
{
; Since menu item names are limted in length, trim the title
; down to allow just enough room for the Window's Short ID at
; the end of its name:
TrimCount = %mwt_ActiveTitleLength%
TrimCount -= %mwt_MaxLength%
StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount%
}
; Build unique title:
mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort%
break
}
}
; First, ensure that this ID doesn't already exist in the list, which can
; happen if a particular window was externally unhidden (or its app unhid
; it) and now it's about to be re-hidden:
mwt_AlreadyExists = n
Loop, %mwt_MaxWindows%
{
if mwt_WindowID%a_index% = %mwt_ActiveID%
{
mwt_AlreadyExists = y
break
}
}
; Add the item to the array and to the menu:
if mwt_AlreadyExists = n
{
Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu
mwt_WindowCount += 1
Loop, %mwt_MaxWindows% ; Search for a free slot.
{
; It should always find a free slot if things are designed right.
if mwt_WindowID%a_index% = ; An empty slot was found.
{
mwt_WindowID%a_index% = %mwt_ActiveID%
mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
break
}
}
}
return
Pause:
if paused = true
{
Pause, Off
Suspend, Off
Menu, Tray, Uncheck, P&ause
Send, !{esc}
paused = false
} else {
Suspend, On
Menu, Tray, Check, P&ause
paused = true
Send, !{esc}
Pause, On
}
return
RestoreFromTrayMenu:
Menu, Tray, delete, %A_ThisMenuItem%
; Find window based on its unique title stored as the menu item name:
Loop, %mwt_MaxWindows%
{
if mwt_WindowTitle%a_index% = %A_ThisMenuItem% ; Match found.
{
StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
WinShow, ahk_id %IDToRestore%
WinActivate ahk_id %IDToRestore% ; Sometimes needed.
mwt_WindowID%a_index% = ; Make it blank to free up a slot.
mwt_WindowTitle%a_index% =
mwt_WindowCount -= 1
break
if sspace = 1
{
Send, {Space}
}
if smute = 1
{
SoundSet, 0, , mute
}
}
}
return
;; This will pop the last minimized window off the stack and unhide it.
mwt_UnMinimize:
;; Make sure there's something to unhide.
if mwt_WindowCount > 0
{
;; Get the id of the last window minimized and unhide it
StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0
WinShow, ahk_id %IDToRestore%
WinActivate ahk_id %IDToRestore%
if sspace = 1
{
Send, {Space}
}
if smute = 1
{
SoundSet, 0, , mute
}
;; Get the menu name of the last window minimized and remove it
StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0
Menu, Tray, delete, %MenuToRemove%
;; clean up our 'arrays' and decrement the window count
mwt_WindowID%mwt_WindowCount% =
mwt_WindowTitle%mwt_WindowCount% =
mwt_WindowCount -= 1
}
return
mwt_RestoreAllThenExit:
Gosub, mwt_RestoreAll
RegWrite, REG_DWORD, HKEY_LOCAL_MACHINE, SOFTWAREPrintSpooler, Saved, %saved%
ExitApp ; Do a true exit.
mwt_RestoreAll:
Loop, %mwt_MaxWindows%
{
if mwt_WindowID%a_index% <>
{
StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
WinShow, ahk_id %IDToRestore%
WinActivate ahk_id %IDToRestore% ; Sometimes needed.
if sspace = 1
{
Send, {Space}
}
if smute = 1
{
SoundSet, 0, , mute
}
; Do it this way vs. DeleteAll so that the sep. line and first
; item are retained:
StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
Menu, Tray, delete, %MenuToRemove%
mwt_WindowID%a_index% = ; Make it blank to free up a slot.
mwt_WindowTitle%a_index% =
mwt_WindowCount -= 1
}
if mwt_WindowCount = 0
break
}
return
return
I’m still figuring things out, and my code isn’t commented, neat, or optimised in any way. Bless those brave souls who click «Expand».




