![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите как лучше обменеваться данными между DLL и программой.
DLL - хук клавиатуры WH_KEYBOARD, помимо хука, DLL буферит считанные данные в TList типизированные поинтеры, которые содержат данные о нажатых символах (скан код, виртуальный код, таймаут, состояния шифтов/альтов/контролов). Тестовая программа крутит поток, который вызывает динамически подключенные процедуры из DLL, которые возвращают состояния DLL: - занята/не занята, - есть данные в буфере/нет данных - возврат буфера - очистка буфера Нормально ли это, или для постоянного получения/опрашивания данных DLL лучше реализовать по другому работу с DLL? |
|
#2
|
||||
|
||||
|
поток совсем не обязательно крутить - много холостого хода получается. можно, к примеру, посылать уведомляющие сообщения окну программы. хэндл окна передать библиотеке в самом начале.
|
|
#3
|
|||
|
|||
|
Нагрузку поток не делает так как запущен с самым низким приоритетом, + в нем Sleep(1);
Окна у потока нет. Поток крутиться в подклассе не визуальной компоненты которая формирует события. Это лишь маленький кусочек громадного проекта. |
|
#4
|
||||
|
||||
|
-но все-таки он крутится в холостую большую часть времени)
-я не говорил про окно потока - имел в виду главное окно программы. даже если в программе вообще нет окна, то его можно создать через AllocateHWnd, к примеру -поток убрать вообще Последний раз редактировалось NumLock, 24.04.2012 в 12:03. |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
rutony (24.04.2012)
| ||
|
#5
|
|||
|
|||
|
Спасибо, переделал, работает лучше
|