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!
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
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 ;-)
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.
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
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.
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
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden