Что нового

Прозрачное окно GUI, пропускающее насквозь - клики мышки

Ragn

Новичок
Сообщения
48
Репутация
0
Добрый день, уважаемые специалисты по Autoit.
Помогите решить сложный вопрос.

Есть окно программы Google Chrome. Окно имеет класс: Chrome_WidgetWin_1
Как наложить на окно этой программы - другое окно, которое создано через GUI, чтобы его размеры (ширина и высота) в точности совпадали с размерами окна браузера?

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

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
так должно пропускать клик или нет?
 
Автор
R

Ragn

Новичок
Сообщения
48
Репутация
0
joiner
Должно пропускать клик.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
заголовок этого окна перекроет вкладки хрома.
 
Автор
R

Ragn

Новичок
Сообщения
48
Репутация
0
joiner сказал(а):
заголовок этого окна перекроет вкладки хрома.
Ничего страшного.
Лишь бы клики пропускало и было бы при этом прозрачным (внутренняя область окна).
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Ragn [?]
Как наложить на окно этой программы - другое окно, которое создано через GUI
Наложить-то можно. Можно даже отслеживать изменение размеров и положения. Вопрос - зачем?
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

While Sleep(11)
  $hWnd = WinGetHandle("[RegexpTitle: - Google Chrome]")
  If $hWnd Then Monitor($hWnd)
WEnd

Func Monitor($hWnd)
  WinActivate($hWnd)
  Local $aPos = WinGetPos($hWnd)
  Local $Frame = GUICreate("", 100, 100, 0, 0, $WS_CAPTION, BitOR($WS_EX_TRANSPARENT, $WS_EX_LAYERED), $hWnd)
  GUISetState()
  WinMove($Frame, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3])
  GUISetBkColor(0xAABBCC)
  _WinAPI_SetLayeredWindowAttributes($Frame, 0xAABBCC, 0, $LWA_COLORKEY)
  While Sleep(11)
    If Not IsHWnd($hWnd) Then ExitLoop
    Local $aNewPos = WinGetPos($hWnd)
    If $aNewPos[0] <> $aPos[0] _
    Or $aNewPos[1] <> $aPos[1] _
    Or $aNewPos[2] <> $aPos[2] _
    Or $aNewPos[3] <> $aPos[3] Then
      $aPos = $aNewPos
      WinMove($Frame, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3])
    EndIf
  WEnd
  GUIDelete($Frame)
EndFunc

OffTopic:

Что у вас за маниакальная идея "встраивать" чужие окна в GUI AutoIt? Был Excel, теперь Chrome...
Кстати, окно Google Chrome прекрасно встраивается через SetParent. Только искать его нужно не по классу, а по заголовку (как в примере под спойлером).
 
Верх