Что нового

touch event по полупрозрачному окну

Poma_007

Новичок
Сообщения
24
Репутация
0
Как я могу передать событие клика в приложение, если поверх приложения открыт попап окно autoit?
Суть проблемы: у меня тач экран, я хочу переделать события в клики, набросал такой код:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <AutoItConstants.au3>
#Include <WinAPI.au3>

$GUI = GUICreate("fullscreencover",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP)
GUISetState()

GUISetBkColor(0xABCDEF)
WinSetTrans($GUI, "", 70)

GUIRegisterMsg(0x024B, "WM_POINTERACTIVATE")
GUIRegisterMsg(0x0246, "WM_POINTERDOWN")
GUIRegisterMsg(0x0247, "WM_POINTERUP")
GUIRegisterMsg(0x0200, "WM_MOUSEMOVE")

$clicked = false;

Func WM_POINTERACTIVATE()
	$pos = MouseGetPos()

    ToolTip('WM_POINTERACTIVATE X: ' & $pos[0] & ', Y: ' & $pos[1])
EndFunc

Func WM_POINTERDOWN()
   $pos = MouseGetPos()

   ToolTip('WM_POINTERDOWN x: ' & $pos[0] & ', Y: ' & $pos[1])

   MouseDown($MOUSE_CLICK_LEFT)
   $clicked = true;
EndFunc

Func WM_POINTERUP()
   $pos = MouseGetPos()

   ToolTip('WM_POINTERUP X: ' & $pos[0] & ', Y: ' & $pos[1])

   MouseUp($MOUSE_CLICK_LEFT) ; Set the left mouse button state as up.
   $clicked = false;
EndFunc

Func WM_MOUSEMOVE()
	$pos = MouseGetPos()

    ToolTip('X: ' & $pos[0] & ', Y: ' & $pos[1])

	if $clicked Then
	  MouseMove($pos[0], $pos[1])
	EndIf
 EndFunc

HotKeySet("{ESC}", "Terminate")

Func Terminate()
    Exit
EndFunc   ;==>Terminate

While 1
    $msg = GUIGetMsg($GUI)
    Select
        Case $msg = $GUI_EVENT_CLOSE
                Exit
    EndSelect
WEnd
 
Автор
Poma_007

Poma_007

Новичок
Сообщения
24
Репутация
0
Также я пробовал так:

Код:
Func WM_POINTERUP()
   $pos = MouseGetPos()

   ToolTip('WM_POINTERUP X: ' & $pos[0] & ', Y: ' & $pos[1])

   if $clicked Then
	  ControlClick("firefox.exe","","","",1,$pos[0],$pos[1])
   EndIf

   $clicked = false;
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Добавьте окну GUI расширенный стиль $WS_EX_TRANSPARENT и все события мыши будут проходить сквозь окно.
 
Автор
Poma_007

Poma_007

Новичок
Сообщения
24
Репутация
0
InnI сказал(а):
Добавьте окну GUI расширенный стиль $WS_EX_TRANSPARENT и все события мыши будут проходить сквозь окно.

Так, а я могу как-то запретить проходить некоторым событиям через окно? типа WM_POINTERDOWN
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Poma_007

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Poma_007 сказал(а):
Так, а я могу как-то запретить проходить некоторым событиям через окно? типа WM_POINTERDOWN

Нет такие сообщения будут проходить сквозь окно и так же не рекомендую вызывать
Код:
MouseMove()

Из сообщения WM_MOUSEMOVE потому что получается рекурсия
 
Верх