Перейти к содержанию
  • Регистрация

Поиск сообщества

Показаны результаты для тегов 'hook'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
  • Вопросы по использованию RAD Studio
  • Native FGX
  • Обучение
  • Поиск специалистов по FireMonkey
  • Дополнительные ресурсы по FireMonkey
  • Организация работы данного форума
  • Видеокурсы

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

Найдено: 2 результата

  1. Ребята здарова! выручайте) весь уже измучился =( не получается =( Тема такая, работаю с хуком, использую WH_KEYBOARD_LL тк нужно работать и с 32 битной и 64 битной разрядностью. и вообще мне нравится с ним работать всё очень просто и удобно но появилось одно НО =( WH_KEYBOARD_LL работает до добавления сообщения в очередь в контексте потока. и это действительно так =( дело в том что я через хук ловлю введённую информацию и потом обрабатываю это через idHTTP (ищу в интернете ответ)... если сигнал хороший то всё круть... а когда связь не очень.. и происходят небольшие задержки.. как я понимаю в WH_KEYBOARD_LL складируются результаты которые он не может передать и затем хук выбивается... тоесть чтобы всё вновь заработало нужно сделать так KeyboardHandle:=SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHook, HInstance, 0); и хук по прежнему работает до тех пор пока не вылетит вновь. Чтобы решить эту проблему как я понял нужно использовать PeekMessage или GetMessage и удалять излишки... Но в сети очень мало информации о том как ими пользоваться я не понимаю куда и как их вставлять. Я делал вот так... писал в ДЛЛке function KeyboardHook(code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var msg:TMsg; begin if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; if code>=0 then begin if (wParam=WM_KEYDOWN) then begin SendMessage(FindWindow('TForm1', 'Form1'), KeyboardEvent, 0,PBDLLHOOKSTRUCT(lParam).vkCode); end; end; Result:=CallNextHookEx(KeyboardHandle, code, wParam, lParam) end; // if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; // типа если есть излишки выходи так же вставлял там это: while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; но не помогает =( Может это где-то в ЕХЕшнике нужно вставлять? я не понимаю как с ним работать =( Может кто на форуме знает? помогите пожалуйста ответом
  2. dnekrasov

    Глобальный Hook в OSX

    Создаю глобальный hook на несколько событий: {$IFDEF MACOS} var EvtTap: CFMachPortRef; RunLoopSource: CFRunLoopSourceRef; {$ENDIF} ... procedure CreateGlobalHook; {$IFDEF MACOS} var EvtMask: UInt64; {$ENDIF} begin {$IFDEF MACOS} if EvtTap = nil then begin EvtMask := (1 shl kCGEventKeyDown) or (1 shl kCGEventFlagsChanged) or (1 shl kCGEventLeftMouseUp); EvtTap := CGEventTapCreate(kCGAnnotatedSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, EvtMask, @EventTapHandler, nil); RunLoopSource := CFMachPortCreateRunLoopSource(kCFAllocatorDefault, EvtTap, 0); CFRunLoopAddSource(CFRunLoopGetCurrent, RunLoopSource, kCFRunLoopCommonModes); end; CGEventTapEnable(EvtTap, 1); {$ENDIF} end; function EventTapHandler(proxy: CGEventTapProxy; type_: CGEventType; event: CGEventRef; refcon: Pointer): CGEventRef; cdecl; {$IFDEF MACOS} var iKey: Integer; iType: Integer; {$ENDIF} begin {$IFDEF MACOS} Result := event; iType := CGEventGetType(event); iKey := CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode); case iType of kCGEventFlagsChanged: ...; kCGEventLeftMouseUp: ...; kCGEventKeyDown: ...; end; {$ENDIF} end; При обработке события возникает проблема: приходят все события кроме kCGEventKeyDown В документации нашел, что kCGEventKeyDown и kCGEventKeyUp приходят только в том случае если приложение запущено от root-а или внесено в список "System Preferences->Security & Privacy->Privacy->Accessibility" Может кто знает как мне программно получить доступ к этим событиям?
×
×
  • Создать...