Автор Тема: Назначить HotKeySet пункту меню программы  (Прочитано 4266 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2713
  • Репутация: 1137
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Столкнулся с такой задачей, прикрутить горячую клавишу к пункту меню для которого проверяется событие в цикле. Понимаю, что можно функцию вызвать из события (под Case $msg = ), но тогда проблема генерации переменных, они все (переменные) окажутся изолированными в функции.

Код: AutoIt [Выделить]
HotKeySet("^{F12}", "_copybyfer")
$createF=0

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = 1 Or $createF = 1
            If $createF = 1 Then Send("^{ins}")
            $createF = 0
            MsgBox(0, "", "нунаконецто")
        Case $msg = -3
            Exit
    EndSelect
WEnd


Func _copybyfer()
    $createF=1
EndFunc


глюки: после использования горячей клавиши происходит непонятное, контекстное меню не вызывается, в NP++ выделение работает выделяя столбиком, помогает вызов Диспетчера задач. Глюк появляется через раз, особенно стабильно на скрипте, к которому я пытаюсь его прикрутить. Проблема точно не NP++, так как в эксплорере и SciTE почти тоже самое, из трея нет конт. меню.
« Последнее редактирование: Май 13, 2010, 15:34:18 от AZJIO »

Русское сообщество AutoIt

Назначить HotKeySet пункту меню программы
« Отправлен: Май 13, 2010, 15:26:45 »

Оффлайн Redline [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 506
  • Репутация: 369
  • Пол: Мужской
    • Награды
Цитата из помощи:

F12 It is also reserved by Windows, according to its API.
(нельзя использовать эту клавишу).
Уроки по регулярным выражениям на AutoIt: RegExp

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2713

  • Автор темы
  • Репутация: 1137
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Redline
Вообщето Ctrl+F12... но и Alt+F12 и Ctrl+F11 и Alt+F11 пробовал, всё работало одинаково глючно.

Оффлайн beve [?]

  • Осваивающий
  • **
  • Сообщений: 104
  • Репутация: 30
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
AZJIO  [?]
Цитировать
глюки: после использования горячей клавиши происходит непонятное
Пробовал и этот пример, и этот скрипт (который в спойлере) в котором я пробовал по Ctrl+F12 - и текст из буфера обмена прекрасно добавляется куда нужно, и кнопка создается и нету никаких косяков. Пробовал и в SciTE и в Notepad++ - Пробовал раз 5-8, глюков не вижу.
« Последнее редактирование: Май 13, 2010, 16:31:38 от beve »
Верь в возможность того, что ты делаеш, крепко держи это у себя в сердце и перед глазами - и оно произойдет!

Русское сообщество AutoIt

Re: Назначить HotKeySet пункту меню программы
« Ответ #3 Отправлен: Май 13, 2010, 16:26:33 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2713

  • Автор темы
  • Репутация: 1137
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
beve
Проверил сняв все процессы, кроме системных. После первого добавления кнопки горячей клавишей Ctrl+F11 (и Ctrl+F12) и Enter (в качестве OK в диалоге) появляется глюк: кнопка "на уровень вверх" вместо перехода открывает новое окно эксплорера. После запуска "Диспетчера задач" переход на уровень вверх нормально работает. Кроме этого на панели задач не разворачиваются приложения, и их контекстное меню предлагает закрыть все окна проводника, а если запущен "сократ" то вылетает его меню перевода, которое срабатывает по Ctrl+"правая кнопка мыши". Система WindowsXP SP3, AutoIt3 v3.3.0.0, Notepad++.
Если просто использовать клавиши Ctrl+F11 и Ctrl+Insert в проводнике никаких проблем.



Всё сводится к тому, что остаётся как бы зажатая клавиша Ctrl, так как в проводнике у меня происходит выделение каталогов, аналогично при зажатой кнопке, и когда нажал Ctrl, то исправляется. Добавление Send("{LCTRL}"), Send("{RCTRL}"), Send("{LCTRL up}"), Send("{RCTRL up}"), Send("{^ up}") не помогает.
« Последнее редактирование: Май 13, 2010, 21:25:06 от AZJIO »

Оффлайн beve [?]

  • Осваивающий
  • **
  • Сообщений: 104
  • Репутация: 30
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
AZJIO  [?]
Цитировать
появляется глюк
Нету ничего в скрипте для такого глюка просто. Залипание клавиш не включено случайно?
« Последнее редактирование: Май 13, 2010, 21:45:59 от beve »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
AZJIO  [?]
Цитировать
Всё сводится к тому, что остаётся как бы зажатая клавиша Ctrl

[?]
Цитировать
метод обхода залипания клавиш-модификаторов:

Код: AutoIt [Выделить]
#include <Misc.au3>

_SendEx("+{F1}")

Func _SendEx($sSend_Data)
    Local $hUser32DllOpen = DllOpen("User32.dll")
   
    While _IsPressed("10", $hUser32DllOpen) Or _IsPressed("11", $hUser32DllOpen) Or _IsPressed("12", $hUser32DllOpen)
        Sleep(10)
    WEnd
   
    Send($sSend_Data)
   
    DllClose($hUser32DllOpen)
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2713

  • Автор темы
  • Репутация: 1137
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
beve  [?]
Цитировать
Залипание клавиш не включено случайно?
Настройки клавиатуры и специальные возможности всё по умолчанию, наоборот искали возможность отключить многократное нажатие Shift (более 5 раз) чтоб не расценивалось как залипание. Понял теперь причину, добавил паузу 130мс, проблема исчезла (120 недостаточно).

CreatoR
Тоже помогло, смысл понял, каждые 10мс проверяется зажатие клавиши и следующая сочетание не используется пока не произойдёт отжатие...

Русское сообщество AutoIt

Re: Назначить HotKeySet пункту меню программы
« Ответ #7 Отправлен: Май 14, 2010, 14:37:30 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
6377 Просмотров
Последний ответ Февраль 11, 2011, 01:37:14
от `p r o x y
0 Ответов
2343 Просмотров
Последний ответ Февраль 11, 2011, 01:40:48
от `p r o x y
9 Ответов
6614 Просмотров
Последний ответ Апрель 05, 2011, 23:21:57
от zlo-kazan
3 Ответов
3860 Просмотров
Последний ответ Июнь 12, 2011, 23:56:15
от Arei
16 Ответов
8477 Просмотров
Последний ответ Сентябрь 07, 2011, 21:34:03
от at
0 Ответов
1213 Просмотров
Последний ответ Ноябрь 21, 2013, 04:49:17
от Astel064
1 Ответов
806 Просмотров
Последний ответ Июль 15, 2015, 14:17:22
от DanSaratov
3 Ответов
1820 Просмотров
Последний ответ Февраль 16, 2016, 22:19:27
от SP1K3
0 Ответов
1093 Просмотров
Последний ответ Февраль 16, 2016, 20:18:55
от Garrett
4 Ответов
1248 Просмотров
Последний ответ Апрель 21, 2017, 16:28:51
от joiner