Wie macht man eine Variable oder Gruppe global verfügbar?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

mgutt
Posts: 4
Joined: 22 Jul 2021, 13:53
Contact:

Wie macht man eine Variable oder Gruppe global verfügbar?

Post by mgutt » 22 Jul 2021, 14:17

Ich möchte gerne ein bestimmtes Browserfenster transparent machen, wenn es nicht aktiv ist. Zuerst möchte ich es aber im Vordergrund fixieren, was schon mal gut klappt:

Code: Select all

#NoEnv

^!T::
  Winset, Alwaysontop, TOGGLE, A
  WinGet, ExStyle, ExStyle, A
  Tooltip,  % (ExStyle & 0x8 = 0) ? "Not on top" : "On top"
  Sleep, 1500
  ToolTip
return
Also STRG+ALT+T und das aktuelle aktive Fenster ist im Vordergrund aktiv.

Nun möchte ich, dass das Fenster transparent wird, wenn es nicht mehr aktiv ist, allerdings ist die Variable "active_id" oder Gruppe "active_group" im anderen Script nicht greifbar, weshalb ich mir im Moment mit einem Keyword aus dem Fenstertitel behelfe:

Code: Select all

#Persistent

SetTitleMatchMode,2

SetTimer, ActiveCheck, 100
return

ActiveCheck:
If WinActive("Twitch")
  WinSet, Transparent, 255, Twitch
else
  WinSet, Transparent, 100, Twitch
return
Deutlich besser wäre aber, wenn ich mehrere Fenster der active_group hinzufügen könnte und dann auf diese globale Gruppe über das andere Script zugreifen könnte. Jemand einen Tipp wie ich das umsetzen könnte?
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Wie macht man eine Variable oder Gruppe global verfügbar?

Post by BoBo » 23 Jul 2021, 03:05

Kommunikation über Ini-Datei? :think:
mgutt
Posts: 4
Joined: 22 Jul 2021, 13:53
Contact:

Re: Wie macht man eine Variable oder Gruppe global verfügbar?

Post by mgutt » 23 Jul 2021, 03:19

Eine Methode, die über die Zwischenablage, also den RAM geht, gibt es nicht? Wirkt "übertrieben" deswegen immer in eine INI Datei auf der Platte zu schreiben.
Rohwedder
Posts: 7551
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Wie macht man eine Variable oder Gruppe global verfügbar?

Post by Rohwedder » 23 Jul 2021, 04:07

Hallo,
warum darf es denn nicht dasselbe Skript sein? Wirkt "übertrieben" dafür zwei Skripte zu verwenden.
Das erste Skript könnte ein Fenster deiner Transparenz-Gruppe zu 255 % transparent machen.
Das zweite Skript kann an der Transparenz: 100 % oder 255 % erkennen, ob ein Fenster zur Transparenz-Gruppe gehört.
mgutt
Posts: 4
Joined: 22 Jul 2021, 13:53
Contact:

Re: Wie macht man eine Variable oder Gruppe global verfügbar?

Post by mgutt » 23 Jul 2021, 07:12

Rohwedder wrote:
23 Jul 2021, 04:07
warum darf es denn nicht dasselbe Skript sein?
Ehrlich gesagt habe ich es erst einfach nicht hinbekommen, da ich SetTimer ziemlich weit unten positioniert hatte, aber nun sollte es passen:

Code: Select all

#NoEnv
#Persistent

SetTimer, ActiveCheck, 200
return

^!T::
  Winset, Alwaysontop, TOGGLE, A
  WinGet, ontop_id, ID, A
  GroupAdd, ontopWindows, ahk_id %ontop_id% ; Add this window to our group
  WinGet, ExStyle, ExStyle, A
  Tooltip,  % (ExStyle & 0x8 = 0) ? "Not on top" : "On top"
  Sleep, 1500
  ToolTip
return

ActiveCheck:
WinGet, activeWindowID, ID, A ; get active window ID
WinGet GroupIDs, List, ahk_group ontopWindows
Loop %GroupIDs% {
  If ( GroupIDs%A_Index% = activeWindowID ) {
    WinSet, Transparent, 255, ahk_id %activeWindowID% ; make active window visible
  }
  else {
    WinSet, Transparent, 100, % "ahk_id" GroupIDs%A_Index% ; set inactive windows of this group transparent
  }
}
STRG+ALT+T fügt das aktuelle Fenster der Gruppe "ontopWindows" hinzu und alle 200ms läuft der durch die Fenster dieser Gruppe und macht das aktive sichtbar und alle anderen unsichtbar (wenn sie das nicht eh schon sind).
Post Reply

Return to “Ich brauche Hilfe”