Есть ли утилита чтобы сделать окно любого приложения «прозрачным» для мыши?
Нужно чтобы можно было выбрать окно любого приложения и сделать его с небольшой прозрачностью и чтобы висело поверх всех окон, а главное было "прозрачно" для мышки, то есть нельзя было на него нажать, а на контролы под этим окном других приложений нажать можно было. Типа как сообщение Windows "Активация Windows...".
Утилит чтобы сделать окно поверх всех великое множество. А есть ли такие утилитки?
wisgest, честно говоря сразу так и не вспомню, но... Нужно просто добавить окну определенный флаг. Сразу нашел у себя сниппет для скрытия заголовка окна:
Toggle_Window(Window:="") {
static A := Init()
if (!Window)
MouseGetPos,,, Window
WinGet, S, Style, % (i := "_" Window) ? "ahk_id " Window :
if (S & +0xC00000) {
WinGet, IsMaxed, MinMax, % "ahk_id " Window
if (A[i, "Maxed"] := IsMaxed = 1 ? true : false)
WinRestore, % "ahk_id " Window
WinGetPos, X, Y, W, H, % "ahk_id " Window
for k, v in ["X", "Y", "W", "H"]
A[i, v] := %v%
Loop, % A.MCount {
if (X >= A.Monitor[A_Index].Left
&& X < A.Monitor[A_Index].Right
&& Y >= A.Monitor[A_Index].Top
&& Y < A.Monitor[A_Index].Bottom) {
WinSet, Style, -0xC00000, % "ahk_id " Window
break
}
}
}
else if (S & -0xC00000) {
WinSet, Style, +0x40000, % "ahk_id " Window
WinSet, Style, +0xC00000, % "ahk_id " Window
WinMove, % "ahk_id " Window,, A[i].X, A[i].Y, A[i].W, A[i].H
if (A[i].Maxed)
WinMaximize, % "ahk_id " Window
A.Remove(i)
}
}
Init() {
A := {}
SysGet, n, MonitorCount
Loop, % A.MCount := n {
SysGet, Mon, Monitor, % i := A_Index
for k, v in ["Left", "Right", "Top", "Bottom"]
A["Monitor", i, v] := Mon%v%
}
return A
}
Скрипт учитывает многомониторные конфигурации, без этого можно и проще. А вот чтобы окно было прозрачно для кликов - нужно добавить флаг +E0x20
Пример: