Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Titel suchen / resume next

Titel suchen / resume next
28.12.2006 12:26:24
IngoH
Hallo allerseits,
2 kleine Fragen eher allgemeiner Art.
Zu 1: Ich muß einen bestimmten Fenstertitel ermitteln, der jedoch
in Teilen je nach aufrufenden User unterschiedlich sein kann.
Nachfolgende Prozedur hatte ich mal im Netz gefunden.
Daraus wollte ich eine Funktion basteln und in dem ****** Teil
nach dem bekannten Namensbestandteil suchen lassen.
Das wird sicher funktionieren, aber evtl. hat jemand eine bessere Lösung parat ?
Public

Sub GetWindowList()
Dim hWnd As Long, sTitle As String, lStyle As Long, Task_name() As String
Dim count As Integer, index As Integer, gefunden As Boolean
hWnd = FindWindowLong(ByVal 0&, ByVal 0&)
hWnd = GetWindow(hWnd, GW_HWNDFIRST)
Do
gefunden = False
lStyle = GetWindowLong(hWnd, GWL_STYLE)
lStyle = lStyle And (WS_VISIBLE Or WS_BORDER)
sTitle = GetWindowTitle(hWnd)
If (lStyle = (WS_VISIBLE Or WS_BORDER)) = True Then
If Trim(sTitle) <> "" Then
For index = 1 To count
If Task_name(index) = sTitle Then
gefunden = True
Exit For
End If
Next index
If Not gefunden Then
count = count + 1
ReDim Preserve Task_name(1 To count)
Task_name(count) = sTitle
End If
End If
End If
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop Until hWnd = 0
For index = 1 To count
MsgBox Task_name(index)
Next index
End Sub

Die zweite Frage bezieht sich auf die Verwendung von Resume next.
In einer Funktion zur Berechnung von Arbeitszeiten unter Berücksichtigung der Berechnung des Ostersonntages gibt es Konstellationen, die Fehler verursachen.
(Typen unverträglich) Die Funktion ist soweit durchdacht, dass diese Kombinationen von vornherein ignoriert werden. Dadurch habe ich natürlich ein paar Zeilen Code produziert.
Mein Kollege meint, einfach die "kurze" Schreibweise verwenden und die Fehler mit Resume next aushebeln, sei die gebräuchliche Variante.
Tja, ist das wirklich gebräuchlich, Fehler zu "überspringen" anstatt sie zu vermeiden ? Einfacher wäre es sicher, aber ich habe da die Befürchtung, dass u.U. ein Programmteil doch einmal nicht sauber durchläuft.
Danke für Eure Meinung
Gruß, Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Titel suchen / resume next
28.12.2006 12:36:31
IngoG
Hallo Ingo,
da Du kein Kriterium kennst, mit dem Du den String automatisch erkennst,
was hälst Du von
'***************************************
text=""
For index = 1 To count
text=text & format(index,"0000") & ": " & Task_name(index) & vbcr
Next index
MsgBox text
'**************************************
vorher mußt Du noch
Dim text as string
einfügen
Gruß Ingo
Titel suchen(ok) / resume next (offen)
28.12.2006 13:32:39
IngoH
Hallo Ingo,
ich schrieb, der Titel ist in Teilen unterschiedlich ;-)
Der nicht unterschiedliche Bereich ist jetzt wie nachfolgend eingebaut.
Klappt auch einwandfrei, um das Fenster in den Vordergrund zu holen.
Ich dachte nur, dass das "durchsuchen" aller Fenstertitel evtl. einfacher geht.
Danke für Deine Antwort und Gruß vom Namensvetter
For index = 1 To count
If Right(Task_name(index), 12) = "Paisy Dialog" Then
Fenstertitel_Paisy_Dialog = Task_name(index)
Exit For
End If
Next index
End Function
Anzeige
AW: Titel suchen(ok) / resume next (offen)
28.12.2006 14:49:44
Nepumuk
Hallo Ingo,
du könntest die Abfrage etwas fürher machen. Also nicht erst alle Fenstertitel sammeln und dann auswerten, sondern gleich auswerten. Bringt zwar nur ein paar Millisekunden, aber es spart ein paar Deklarationen und die zusätzliche Schleife.
Gruß
Nepumuk
AW: Titel suchen(ok) / resume next (offen)
28.12.2006 15:53:01
IngoH
Hallo Nepumuk,
kann ich erst wieder morgen in der Fa. testen.
Ich vermute mal, gleich hinter
If Trim(sTitle) "" Then
kann
If Right(Task_name(index), 12) = "Paisy Dialog" Then
anschliessen.
Obwohl, ist If Trim(sTitle) "" Then überhaupt wichtig ?
Gruß, Ingo
AW: Titel suchen(ok) / resume next (offen)
28.12.2006 15:56:56
Nepumuk
Hallo Ingo,
ja, das ist schon wichtig, du hast nämlich jederzeit knapp 100 Fenster ohne Titel offen. Die würden ja alle in deinem Array landen. Wenn du natürlich gleich nach deinen Fenster suchst, dann erübrigt sich diese Abfrage.
Gruß
Nepumuk
Anzeige
AW: Titel suchen(ok) / resume next (offen)
28.12.2006 16:27:31
IngoH
ok, dann macht es evtl. wohl Sinn, Fenster ohne Titel
gar nicht erst zu überprüfen.
Wo kommem knapp 100 Fenster her ?
Sind das Dienste des Betriebssystems ?
Ingo
Interessant, Danke (o.T.)
28.12.2006 19:04:00
IngoH

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige