1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Обработка нажатий клавиш макросом

Тема в разделе "CorelDraw", создана пользователем VEG, 4 июн 2007.

Модераторы: Артер
  1. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Нужно написать макрос, который в зависимости от нажатой клавиши будет выполнять те или иные действия. Конкретно - хочу облегчить себе расставление стрелок в сканвордах. В общем все ясно, только не могу найти функцию по обработке клавиатурных нажатий.
     
  2. Kerch

    Kerch Активный участник

    С нами с:
    13.09.2006
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    5
    Пиши отдельные модули а затем цепляй их на хоткеи. Вуаля!
     
  3. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Не пойдет. Слишком много клавиш.
     
  4. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Не пойдет. Слишком много клавиш (около 20).
     
  5. Kerch

    Kerch Активный участник

    С нами с:
    13.09.2006
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    5
    Что именно подразумеваешь под клавиатурными нажатиями?
    SendKeys?
     
  6. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    SendKeys - это когда макрос посылает что-то в буфер, а мне нужно, чтобы он отслеживал, какие кнопки я нажимаю (напр., нажимаю "6", и он рисует стрелку "вправо"...)
     
  7. Kerch

    Kerch Активный участник

    С нами с:
    13.09.2006
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    5
    Ну так самый простой вариант тот который я раньше советовал.
    Зацепить макросы на кнопки. Пишешь макрос который рисует стрелку "вправо" и цепляешь на "6". И т.д.
    После использования макрос можно деактивировать
     
  8. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Повторяю, это не подходит. Для чего-то этот вариант, наверное, приемлем, но в данном случае для меня важна "двусторонняя связь" с макросом. Вообще такое возможно?
     
  9. Kerch

    Kerch Активный участник

    С нами с:
    13.09.2006
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    5
    Наверное это как-то возможно реализовать посредством API
    Но как я незнаю.
     
  10. dizzzy

    dizzzy Пользователь сайта

    С нами с:
    22.05.2007
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Видимо никак. Как бы проблема вот в чем. Нажатие этих клавиш надо присобачить к какому-то событию. То есть если событие произошло, то макрос запускается, а там уже и можно вклинить и проверку нажатия клавиши (Declare Function GetKeyState& Lib "user32" (ByVal vKey&)). Однако события типа "нажалась такая-то клавиша" для дока да и для макроса нет. А подвязывать к чему-то другому в Вашем случае абсурдно. Можно типа макрос зациклить, и он постоянно будет ждать от вас нажатия кнопки, но тогда вся схема будет слишком тормозной. Как бы не советую.

    Хотя можно так наверное. Запустить макрос сочетанием клавиш. И там запустится цикл. Можно даже на GetUserClick подвязать. В F1 найдете пример. Типа клетку выделили дынс макрос и в зависимости в каком углу кликнули такая стрелочка и шлепнулась. Там можно и шифты с контролами учесть. Там скажем с шифтом - по часовой стрелке, без против... Ну там сварьируете под ся. Три кнопки как ни как комбинаций кучу можно наделать. Если запарит макрос запускать, то можете его подвязать на событие SelectionChange. Хотя это уже геморно будет...
     
  11. VEG

    VEG Пользователь сайта

    С нами с:
    25.01.2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Спасибо, dizzy. Меня заинтересовала часть
    Прочитала про эту функцию, и непонятно: GetKeyState("конкретная клавиша") определяет, нажата ли эта "конкретная клавиша". А есть функция, которая не привязывается к этой "конкретной клавише"? Это бы решило проблему. Или я что-то неправильно понимаю?
     
  12. dizzzy

    dizzzy Пользователь сайта

    С нами с:
    22.05.2007
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Че-то я забыл про Вас. Прошу прощенья. На сколько я понял, Вам нужна функция, коя б определяла какая клавиша нажата в данный момент. Можно конечно порыться в API функциях, но мне кажется, что таковой нет. Сами подумайте как она должна выглядеть? Что выдавать на выходе - нажатую клавишу? А если их две нажато... а если десять? Что тогда выдавать? Массив нажатых клавиш?:) Может и есть... сомневаюсь, и потому рыться даже не хочу...
     
Модераторы: Артер

Поделиться этой страницей