forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PureBasic (http://forum.boolean.name/forumdisplay.php?f=90)
-   -   Mышь? (http://forum.boolean.name/showthread.php?t=18652)

Artfrost 24.10.2013 11:17

Mышь?
 
Как отлавливать клики мыша в фоне ?
(когда фокус не на нашей проге, а в другой программе windows)

ситуация:
программа запущена и свёрнута в панель задач, юзер работает в других программах,
так вот, надо чтобы моя программа регистрировала каждый клик мыша юзера где бы он не находился
без хуков не обойтись?

kvitaliy 24.10.2013 13:59

Re: Mыш?
 
Если эта программа не использует для работы с мышкой DirectX® ( к примеру игры), то легко отлавливается при помощи
Код:

GetAsyncKeyState_(#VK_LBUTTON)
GetAsyncKeyState_(#VK_RBUTTON)

Так же и координаты мышки через API GetCursorPos
Вполне решаемо без хуков.

Artfrost 24.10.2013 14:35

Ответ: Mыш?
 
поставил в обработку главного цикла
GetAsyncKeyState_(#VK_LBUTTON)
GetAsyncKeyState_(#VK_RBUTTON)
клик отлавливается только если жамкать по форме программы
или я что-то сделал не так?

похоже что палки в колёса ставит WaitWindowEvent() который участвует в цикле
видимо надо GetAsyncKeyState_ выносить в отдельный поток...

Artfrost 24.10.2013 17:01

Ответ: Mыш?
 
с потоком вроде пашет
поправьте если что не так:
Код:

Procedure TREAD_CLICK(period)
        Repeat
                If GetAsyncKeyState_(#VK_LBUTTON) = -32767
                        Debug "!!!!!!!!!!!!!!!!!"
                EndIf
                Delay(period)
        ForEver
EndProcedure

OpenWindow(0, 605, 501, 295, 150, "Test click", #PB_Window_SystemMenu|#PB_Window_TitleBar)

TREAD_CLICK = CreateThread(@TREAD_CLICK(), 1)

Repeat
 
  Select WaitWindowEvent()
            Case #PB_Event_CloseWindow
            Select EventWindow()
                Case 0
                        KillThread(TREAD_CLICK)
                    Break
            EndSelect
  EndSelect
 
ForEver



Часовой пояс GMT +4, время: 10:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot