Fremdes Fenster verstecken?

Anfängerfragen zum Programmieren mit PureBasic.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

KatSeiko hat geschrieben:Äh... Ich hätte dann ein Problem: Ich habe zwei Fenster die gleich heißen. Gibt es einen Weg, die zu unterscheiden oder ist das "auf gut Glück"?
Auf Glueck sollte man sich eher nich verlassen ...
Es gibt noch einen anderen Weg, den Fensterhandle zu ermitteln...

Mit EnumWindows_(Adresse zur Funktion, zusaetzlicher Wert fuer Funktion)

Mit EnumWindows_() ermittelst du alle geoeffneten Fenster (und bei Bedarf sogar noch mehr!)
Es funktioniert aehnlich wie eine Schleife.
Ich zeig es dir am besten anhand eines Beispieles:

Code: Alles auswählen

Global str$
str$ = ""

Procedure EnumWindows(hWnd)
newwin$ = Space(1024)
GetWindowText_(hWnd, newwin$, 1024)
If IsWindowVisible_(hWnd) And newwin$ <> ""
  str$ = str$ + newwin$ + Chr(13) + Chr(10)
EndIf
  
ProcedureReturn #True
EndProcedure

EnumWindows_(@EnumWindows(), 0)
MessageRequester("Alle geoeffneten Fenster", str$)
Dieses Programm gibt einen MessageRequester mit den Namen aller geoeffneter Fenster.

str$ ist der String, wo die Fensternamen reinkommen.
newwin$ ist der String wo der neue Fenstername gespeichert wird. GetWindowText_() ist das Gegenstueck zu FindWindow_() und ermittelt den Titel des Fenster anhand des Handles

IsWindowVisible_() ueberprueft, ob es sich um ein "richtiges" Fenster handelt - andernfalls gibt EnumWindows_() naemlich auch Prozesse und alles moegliche (in diesem Fall nicht erwuenschte) an. Ausserdem sollstes du immer ueberpruefen, ob du kein Leerstring zurueckbekommen hast.
Die Funktion muss immer #True zurueckgeben - ansonsten beendet naemlich EnumWindows_() seine Schleife.

Zum Schluss kommt noch die Schleife:
EnumWindows_(@EnumWindows(), 0)

fuehert unsere Funktion solange aus - bis entweder #False zurueckgegeben wird (oder gar nichts) oder es keine Fensterhandle mehr gibt.

Der erste Parameter der Funktion, die aufgerufen werden soll enthaelt dann das Fensterhandle

Ich hoffe du hast so im allgemeinen verstanden - mit dieser Funktion sollteste dann alle Fenster bekommen :allright:
(kannste ja z.B. auch alle in einzelne hWnd-Variablen speichern usw.)
Bild + Bild

Bild
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Ja, hervorragend. :allright:
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Antworten