Уроки PureBasic

Categories

Other Sites

Other Sites

Other Sites



             Поиск по сайту

     

                


    Оставить мне сообщение:



Регистрации хуков на кнопки  - HotKeyAdd

Уроки PureBasic

Регистрации хуков на кнопки  - HotKeyAdd
В зависимости от версии PureBasic подключаем нужную версию  Droopy Library

Уроки PureBasic
Пример кода:

Procedure CreateSkrinAll()
   MessageRequester("", "Нажата кнопка PrintScreen")
EndProcedure
Procedure CreateSkrinWindow()
   MessageRequester("", "Нажаты кнопки Ctrl + PrintScreen")
EndProcedure

OpenWindow(0, 0, 0, 100, 80, "Окно", #PB_Window_SystemMenu |#PB_Window_ScreenCentered )
    HotKeysInit() ; Инициализация библиотеки HotKeys
    HotKeyAdd(WindowID(0), 44, @CreateSkrinAll(), "SkrinAll", 0,0,0)    ; Перехват кнопки PrintScreen
    HotKeyAdd(WindowID(0), 44, @CreateSkrinWindow(), "SkrinWin", 0,0,1) ; Пер.  кн. Ctrl + PrintScreen
Repeat
Event=HotkeyWaitWindowEvent()
Until Event=#PB_Event_CloseWindow


44 - код кнопки PrintScreen.
3 последних аргумента - состояние кнопок Shift, Alt и Control.
0 - кнопка не контроллируется
1 - событие произойдёт только после нажатия кнопки
Уроки PureBasic
Как узнать коды кнопок ?

Программа для получения числого соответствия кнопок:

OpenWindow(0,0,0,230,150,"", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(0))
  EditorGadget(0,10,10,210,130 )
Repeat
  Event=WaitWindowEvent()
  If Event=#WM_KEYDOWN ; Была нажата кнопка
    AddGadgetItem(0,-1,Str( EventwParam())+"  " ) ; Помещаем её код в редактор
    SendMessage_(GadgetID(0),#EM_SETSEL,100000000,100000000) ; Прокрутка текста
  EndIf
Until Event=#PB_Event_CloseWindow


Описание функций ищем в справке библиотеки Друпии...Уроки PureBasic
Пример  программа в трее, перехват Ctrl+C :


Procedure.s GetSysDirectory() ; Путь к системной папке
   Path.s=Space(500)
   GetSystemDirectory_(@Path,500)
ProcedureReturn Path
EndProcedure

CreatePopupMenu(0) ; Контекстное меню для трея
 MenuItem(0,"Выход")

OpenWindow(0,0,0,200,100,"",#PB_Window_Invisible)

AddSysTrayIcon(1,WindowID(0),ExtractIcon_(0,GetSysDirectory()+"\shell32.dll",4))
AddWindowTimer(0,2,100)

Repeat
  Event=WaitWindowEvent()
  If Event=#PB_Event_SysTray
    If EventType()=#PB_EventType_RightClick
      DisplayPopupMenu(0,WindowID(0))
    EndIf
  ElseIf Event=#PB_Event_Menu
    If EventMenu()=0
      Break
    EndIf
  ElseIf Event=#PB_Event_Timer
    If EventTimer()=2
      If GetKeyState_( #VK_CONTROL)<0 And GetKeyState_( #VK_C)<0
        Debug "Нажали Ctrl + C"
      EndIf
    EndIf
  EndIf
Until Event=#PB_Event_CloseWindow


Константы нужных кнопок (Ctrl и С) смотрим в таблице.
Уроки PureBasic
Пример  программа в окне, перехват Ctrl+C :

OpenWindow(0,0,0,200,100,"",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
AddWindowTimer(0,2,100)
Repeat
  Event=WaitWindowEvent()
  If Event=#PB_Event_Timer
    If EventTimer()=2
      If GetKeyState_( #VK_CONTROL)>1 And GetKeyState_( #VK_S)<0
        Debug "Нажали Ctrl + C"
      EndIf
    EndIf
  EndIf
Until Event=#PB_Event_CloseWindow


Уроки PureBasic
Перехват нажатия кнопок при активном окне
 

OpenWindow(0, 296, 218, 507, 135, "Окно",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
Repeat
event=WaitWindowEvent()

If event=#WM_KEYDOWN
   key=EventwParam()
   If key= #VK_F1
      MessageBox_(WindowID(0),"нажата клавиша F1",0,0)
   ElseIf key= #VK_ESCAPE
      Break
   ElseIf key= #VK_CONTROL
      MessageBox_(WindowID(0),"нажата клавиша Ctrl",0,0)   
   EndIf
EndIf

Until event=#PB_Event_CloseWindow


Уроки PureBasic
Эмуляция нажатия нопки  Ctrl+C

Запустить программу, выделить любой текст на компютере и нажать кнопку  A (english).

Перехват кнопок Ctrl+C расматривался  раннее.

Эмуляция происходит через API keybd_event_().

Вывод  текста через функцию GetClipboardText().

Enumeration
 #Window_0=333
EndEnumeration

ClearClipboard() 
;  очищаем буфер

Procedure CreateSkrinAll()          
   keybd_event_ ( #VK_CONTROL, 0,0,0)  ; нажали Ctrl
   keybd_event_ (67, 0,0,0)                     ; нажали C
   Delay(100)         ;  задержка  между  нажали/отпустили
   keybd_event_ ( #VK_CONTROL, 0,#KEYEVENTF_KEYUP,0)   ; отпустили Ctrl
   keybd_event_ (67,          0,#KEYEVENTF_KEYUP,0)  
; отпустили C
Debug GetClipboardText()  ;  вывод из буфера
EndProcedure

OpenWindow(#Window_0, 0, 0, 100, 80, "Окно", #PB_Window_SystemMenu |#PB_Window_ScreenCentered )

    HotKeysInit() ; Инициализация библиотеки HotKeys
    HotKeyAdd(WindowID(#Window_0), 65, @CreateSkrinAll(), "SkrinAll", 0,0,0)    ; Перехват кнопки А 
           
Repeat
Event=HotkeyWaitWindowEvent()
Until Event=#PB_Event_CloseWindow

Уроки PureBasic
Таблица констант кнопок

Следующая таблица содержит имена символьных констант шестнадцетеричные значения, и эквиваленты виртуальных кодов клавиш для мышки и клавиатуры используемые системой
Коды внесены в таблицу по порядку нумерации.

Числовое значение констант получаем через  Debug.   ( напр.  Debug   #VK_SHIFT  результат 16)

Символьное имя константы Эквивалент клавиатуры или мышки
#VK_LBUTTON Левая кнопка мыши
#VK_RBUTTON Правая кнопка мыши
#VK_CANCEL Обработка Control-Break
#VK_MBUTTON Средняя кнопка мыши
#VK_XBUTTON1 Windows 2000: X1 кнопка мыши
#VK_XBUTTON2 Windows 2000: X2 кнопка мыши
#VK_BACK BACKSPACE клавиша
#VK_TAB TAB клавиша
#VK_CLEAR CLEAR клавиша
#VK_RETURN ENTER клавиша
#VK_SHIFT SHIFT клавиша
#VK_CONTROL CTRL клавиша
#VK_MENU ALT клавиша
#VK_PAUSE PAUSE клавиша
#VK_CAPITAL CAPS LOCK клавиша
#VK_KANA IME Kana режим
#VK_HANGUEL IME Hanguel режим
#VK_HANGUL IME Hangul режим
#VK_JUNJA IME Junja режим
#VK_FINAL IME final режим
#VK_HANJA IME Hanja режим
#VK_KANJI IME Kanji режим
#VK_ESCAPE ESC клавиша
#VK_CONVERT IME конвертировать
#VK_NONCONVERT IME не конвертировать
#VK_ACCEPT IME принять
#VK_MODECHANGE IME режим изменения запроса
#VK_SPACE SPACEBAR
#VK_PRIOR PAGE UP клавиша
#VK_NEXT PAGE DOWN клавиша
#VK_END End клавиша
#VK_HOME HOME клавиша
#VK_LEFT LEFT ARROW клавиша
#VK_UP UP ARROW клавиша
#VK_RIGHT RIGHT ARROW клавиша
#VK_DOWN DOWN ARROW клавиша
#VK_SELECT Select клавиша
#VK_PRINT PRINT клавиша
#VK_EXECUTE EXECUTE клавиша
#VK_SNAPSHOT PRINT SCREEN клавиша
#VK_INSERT INS клавиша
#VK_DELETE DEL клавиша
#VK_HELP HELP клавиша
#VK_LWIN Левая Windows клавиша (Microsoft® Natural® клавиатура)
#VK_RWIN Правая Windows клавиша (Natural клавиатура)
#VK_APPS Прикладная клавиша (Natural клавиатура)
#VK_SLEEP Спящего режима клавиша
#VK_NUMPAD0 Числовая клавиатура клавиша 0
#VK_NUMPAD1 Числовая клавиатура клавиша 1
#VK_NUMPAD2 Числовая клавиатура клавиша 2
#VK_NUMPAD3 Числовая клавиатура клавиша 3
#VK_NUMPAD4 Числовая клавиатура клавиша 4
#VK_NUMPAD5 Числовая клавиатура клавиша 5
#VK_NUMPAD6 Числовая клавиатура клавиша 6
#VK_NUMPAD7 Числовая клавиатура клавиша 7
#VK_NUMPAD8 Числовая клавиатура клавиша 8
#VK_NUMPAD9 Числовая клавиатура клавиша 9
#VK_MULTIPLY Умножить клавиша
#VK_ADD Добавить клавиша
#VK_SEPARATOR Разделитель клавиша
#VK_SUBTRACT Вычитания клавиша
#VK_DECIMAL Десятичная клавиша
#VK_DIVIDE Деления клавиша
#VK_F1 F1 клавиша
#VK_F2 F2 клавиша
#VK_F3 F3 клавиша
#VK_F4 F4 клавиша
#VK_F5 F5 клавиша
#VK_F6 F6 клавиша
#VK_F7 F7 клавиша
#VK_F8 F8 клавиша
#VK_F9 F9 клавиша
#VK_F10 F10 клавиша
#VK_F11 F11 клавиша
#VK_F12 F12 клавиша
#VK_F13 F13 клавиша
#VK_F14 F14 клавиша
#VK_F15 F15 клавиша
#VK_F16 F16 клавиша
#VK_F17 F17 клавиша
#VK_F18 F18 клавиша
#VK_F19 F19 клавиша
#VK_F20 F20 клавиша
#VK_F21 F21 клавиша
#VK_F22 F22 клавиша
#VK_F23 F23 клавиша
#VK_F24 F24 клавиша
#VK_NUMLOCK NUM LOCK клавиша
#VK_SCROLL SCROLL LOCK клавиша
#VK_LSHIFT Левый SHIFT клавиша
#VK_RSHIFT Правый SHIFT клавиша
#VK_LCONTROL Левый CONTROL клавиша
#VK_RCONTROL Правый CONTROL клавиша
#VK_LMENU Левый MENU клавиша
#VK_RMENU Правый MENU клавиша
#VK_BROWSER_BACK Windows 2000: Browser клавиша назад
#VK_BROWSER_FORWARD Windows 2000: Browser клавиша вперед
#VK_BROWSER_REFRESH Windows 2000: Browser клавиша обновить
#VK_BROWSER_STOP Windows 2000: Browser клавиша стоп
#VK_BROWSER_SEARCH Windows 2000: Browser клавиша поиск
#VK_BROWSER_FAVORITES Windows 2000: Browser клавиша избранное
#VK_BROWSER_HOME Windows 2000: Browser клавиша старт и домой
#VK_VOLUME_MUTE Windows 2000: Звук выключить клавиша
#VK_VOLUME_DOWN Windows 2000: Звук уменьшить клавиша
#VK_VOLUME_UP Windows 2000: Звук увеличиьть клавиша
#VK_MEDIA_NEXT_TRACK Windows 2000: Следующий трек клавиша
#VK_MEDIA_PREV_TRACK Windows 2000: Предыдущий трек клавиша
#VK_MEDIA_STOP Windows 2000: Media клавиша остановить
#VK_MEDIA_PLAY_PAUSE Windows 2000: Media клавиша воспроизвести/пауза
#VK_LAUNCH_MAIL Windows 2000: Почта запуск клавиша
#VK_LAUNCH_MEDIA_SELECT Windows 2000: Media выбрать клавиша
#VK_LAUNCH_APP1 Windows 2000: Запустить приложение 1 клавиша
#VK_LAUNCH_APP2 Windows 2000: Запустить приложение 2 клавиша
#VK_OEM_1 Windows 2000: Для стандартной клавиатуры US ';:' клавиша
#VK_OEM_PLUS Windows 2000: Для любого региона/страны '+' клавиша
#VK_OEM_COMMA Windows 2000: Для любого региона/страны ',' клавиша
#VK_OEM_MINUS Windows 2000: Для любого региона/страны '-' клавиша
#VK_OEM_PERIOD Windows 2000: Для любого региона/страны '.' клавиша
#VK_OEM_2 Windows 2000: Для стандартной клавиатуры US '/?' клавиша
#VK_OEM_3 Windows 2000: Для стандартной клавиатуры US '`~' клавиша
#VK_OEM_4 Windows 2000: Для стандартной клавиатуры US '[{' клавиша
#VK_OEM_5 Windows 2000: Для стандартной клавиатуры US '\|' клавиша
#VK_OEM_6 Windows 2000: Для стандартной клавиатуры US ']}' клавиша
#VK_OEM_7 Windows 2000: Для стандартной клавиатуры US 'одинарные кавычки/двойные кавычки' клавиша
#VK_OEM_8
#VK_OEM_102 Windows 2000: Или наклонная скобка или черта влево клавиша на RT 102-клавишной клавиатуре
#VK_PROCESSKEY Windows 95/98, Windows NT 4.0, Windows 2000: IME PROCESS клавиша
#VK_PACKET E7 Windows 2000: Используется для передачи символов Unicode как будто бли нажаты клавиши.Клавиша VK_PACKET является нижним словом 32-разрядной клавиши, используется для метода не клавиатурного ввода. Для большей информации смотри ремарку в KEYBDINPUT, SendInput, WM_KEYDOWN, и WM_KEYUP
   
#VK_ATTN F6 Attn клавиша
#VK_CRSEL CrSel клавиша
#VK_EXSEL ExSel клавиша
#VK_EREOF Erase EOF клавиша
#VK_PLAY Play клавиша
#VK_ZOOM Zoom клавиша
#VK_NONAME Зарезервировано для будущего использования
#VK_PA1 PA1 клавиша
#VK_OEM_CLEAR Clear клавиша
   










Используются технологии uCoz