Arnie Geschrieben 6. Mai 2003 Geschrieben 6. Mai 2003 Hallo miteinander, habe folgendes Problem. Habe mir von www.activevb.de ein Quelltextbeispiel zum Auslesen der laufenden Anwendungen heruntergeladen. Dies funktioniert auch mit Visual Basic 6.0 einwandfrei, doch sobald ich denselben Quelltext in Access nutze, durchläuft er nur noch 2 bis 3 Fenster. Das heisst, er durchläuft nur die Fenster des aktiven Access Projektes. Das kann es jawohl nicht sein. Bin jetzt total überfragt, wie ich das Problem lösen kann, da ich mit API's noch nicht wirklich häufig gearbeitet habe. Danke im voraus Arnie P.S.: Arbeiten mit Office 2000 SP3 unter Windows 2000 Pro SP3 P.P.S.: Ich nutze die API's: GetWindow, GetWindowTextLength, GetWindowText! Zitieren
Klotzkopp Geschrieben 6. Mai 2003 Geschrieben 6. Mai 2003 Hallo Arnie, du bist im falschen Forum. --> Verschoben nach: Delphi/VB/VBS/AS 400/C#/.net/Sonstige Zitieren
Arnie Geschrieben 6. Mai 2003 Autor Geschrieben 6. Mai 2003 Warum? Es geht um die in meinem letzten Beitrag u.g. API Funktionen und nicht erstrangig um die Programmiersprache... Mir soll's recht sein, Hauptsache ich bekomme ne Antwort ;-) Zitieren
Klotzkopp Geschrieben 6. Mai 2003 Geschrieben 6. Mai 2003 Original geschrieben von Arnie Warum? Es geht um die in meinem letzten Beitrag u.g. API Funktionen und nicht erstrangig um die Programmiersprache...APIs gibt es viele. Darum sind unsere Foren nach Sprachen sortiert. Mir soll's recht sein, Hauptsache ich bekomme ne Antwort ;-) Dann solltest du aber zumindest den Code oder einen Link darauf posten. Blinddebugging ist immer etwas schwierig. Zitieren
Arnie Geschrieben 6. Mai 2003 Autor Geschrieben 6. Mai 2003 hWnds = GetWindow(Me.hWnd, GW_HWNDFIRST) Do ' Handle auswerten sTitle = HoleFensterBezeichnung(hWnds) If InStr(1, sTitle, "Test") Then i = i + 1 MsgBox "HWND: " & hWnds & ", Durchlauf: " & Durchlauf & ", Titel: " & sTitle & ", Treffer: " & i End If End If 'Nächstes Handle hWnds = GetWindow(hWnds, GW_HWNDNEXT) Loop Until hWnds = 0 Beschreibung: Ich nehme den Handle des aktiven Fensters und durchlaufe dann alle Fenster nacheinander. Wenn eines der Fenster den Titel "Test" enthält, soll eine Zählvariable hochgezählt werden. Dadurch will ich im späteren Verlauf des Programms abfragen, wieviele Anwendungen diesen Typs schon geöffnet sind. Ich hoffe, jetzt kann mir geholfen werden... MfG Arnie Zitieren
Klotzkopp Geschrieben 6. Mai 2003 Geschrieben 6. Mai 2003 Mit GW_HWNDFIRST und GW_HWNDNEXT kommst du nur an die Geschwisterfenster von "Me". Da die Fenster in einem Baum angeordnet sind, kommst du so also niemals aus Access heraus. Hol dir mit GetAncestor( Me.hWnd, GA_ROOT ) das Root-Fenster, und versuch es damit mal. Zitieren
Arnie Geschrieben 6. Mai 2003 Autor Geschrieben 6. Mai 2003 Zuerst hWnds = GetAncestor(Me.hwnd, GA_ROOT) das ist klar, aber wie kann ich da in meiner Schleife mit arbeiten? Ich muss ja immer von Fenster zu Fenster springen... (z.Zt. hWnds = GetWindow(hWnds, GW_HWNDNEXT)) Gibt es für Ancestor auch ne Art Next-Anweisung? MfG Arnie Zitieren
Klotzkopp Geschrieben 7. Mai 2003 Geschrieben 7. Mai 2003 Original geschrieben von Arnie Gibt es für Ancestor auch ne Art Next-Anweisung?Nein, denn es gibt ja immer nur ein Ahnen-Fenster. Aber du kannst dir mit GetWindow und GW_CHILD das erste Kindfenster des Root-Fensters holen und dessen Handle als Startpunkt für deine Schleife verwenden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.