Что нового

Окно видимое на экране, но невидимое для мыши

Сообщения
34
Репутация
0
Доброго времени суток.
Вопрос по графической теме.

Можно ли в автоите - сделать определенное окно - "безтелесным" ?

То есть допустим, скрипт автоита создает некое окно, которое отображается на экране - как обычное видимое окно.
Но если под этим созданным окном находится - окно программы Калькулятор - то когда я щелкаю вроде бы по созданному окну - мышка не замечает созданного окна и щелкает по кнопкам Калькулятора (хотя окна калькулятора - не видно).
Иными словами - данное "безтелесное" окно - просто загораживает другие окна, но при этом с точки зрения мыши - его как бы нет.

Можно ли подобное сделать ?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Когда окно не активно - пропускает клики
Код:
#include <GuiConstants.au3>
#include <WinAPI.au3>
Global $hGUI = GUICreate(Null, 200, 200, Default, Default, Default, $WS_EX_TOPMOST), $iExStyle = _WinAPI_GetWindowLong($hGUI, $GWL_EXSTYLE)
GUICtrlCreateLabel("Hello World", 5, 5)
GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE")
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_ACTIVATE($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hGUI
			Switch _WinAPI_LoWord($wParam)
				Case 0
					GUISetStyle(Default, $WS_EX_TRANSPARENT)
					WinSetTrans($hGUI, Null, 255)
				Case 1, 2
					_WinAPI_SetWindowLong($hGUI, $GWL_EXSTYLE, $iExStyle)
			EndSwitch
	EndSwitch
EndFunc   ;==>WM_ACTIVATE
 
Верх