Hi Ihr,
ich hatte mir hier aus dem Forum vor einiger Zeit die Zip-Datei eines Fensterlisten-Scripts vermutlich aus dem Soucecode-Austausch-Bereich heruntergeladen.
Das Fenster sieht in etwa so aus, wie in meinem Bild.
Leider finde ich dieses Script nicht mehr.
Meine Suche nach Fensterliste, Fenster etc. bringt zwar viele Ergebnisse, aber nach einer Stunde Suchen habe ich das Gesuchte leider immer noch gefunden.
Kann sich vielleicht einer von Euch daran erinnern, wie dieses Proggi heisst und wo ich dieses finden kann?
Schönes Wochenende @all
EDIT:
Mein Problem ist vielleicht keines - aber ich denke doch, dass, wenn ich z.B. den Win-Explorer öffne und darin z.b. das Ordnereinstellungen-Fenster öffne (vermute mal stark, dass dieses dann ein Child-Window vom Explorer sein müsste), eben dieses doch in der Fensterliste auftauchen müsste.
Tut es aber nicht...
Hier mein Code für dieses Fensterlisten-Fenster (ist nicht der aus der Zip, aber diesem doch recht ähnlich):
Habe ich einen Denkfehler - oder ist mit meinem Code was nicht OK?
ich hatte mir hier aus dem Forum vor einiger Zeit die Zip-Datei eines Fensterlisten-Scripts vermutlich aus dem Soucecode-Austausch-Bereich heruntergeladen.
Das Fenster sieht in etwa so aus, wie in meinem Bild.
Leider finde ich dieses Script nicht mehr.
Meine Suche nach Fensterliste, Fenster etc. bringt zwar viele Ergebnisse, aber nach einer Stunde Suchen habe ich das Gesuchte leider immer noch gefunden.
Kann sich vielleicht einer von Euch daran erinnern, wie dieses Proggi heisst und wo ich dieses finden kann?
Schönes Wochenende @all
EDIT:
Mein Problem ist vielleicht keines - aber ich denke doch, dass, wenn ich z.B. den Win-Explorer öffne und darin z.b. das Ordnereinstellungen-Fenster öffne (vermute mal stark, dass dieses dann ein Child-Window vom Explorer sein müsste), eben dieses doch in der Fensterliste auftauchen müsste.
Tut es aber nicht...
Hier mein Code für dieses Fensterlisten-Fenster (ist nicht der aus der Zip, aber diesem doch recht ähnlich):
VB.NET-Quellcode
- Public Sub Create_Fensterliste()
- Dim fehler As String = ""
- AnzahlMatchingTopLevelFenster = 0
- AnzahlMatchingChildFenster = 0
- Me.Cursor = Cursors.WaitCursor
- Dim form_Wartefenster As New ICE_Wartefenster
- MainForm.GesamteOberflächeSperren(True)
- form_Wartefenster.Initialisiere(My.Resources.ICE_Common_BitteWarten, My.Resources.ICE_Fensterliste_InfoWarten1, -1, My.Resources.ICE_Common_InfoWarten2, 128)
- Do
- MainForm.Delay(1)
- Application.DoEvents()
- Loop While form_Wartefenster.Visible = False
- Try
- ' Stamm-Fenster
- StammfensterEinlesen(StammFensterAuswahl) ' 0 = Nur sichtbare Fenster mit Titel und Rahmen | 2 = Alle Fenster
- ' Child-Fenster
- ChildFensterEinlesen(ChildFensterAuswahl) ' 0 = Nur sichtbare Fenster mit Titel und Rahmen | 1 = Alle Fenster mit Titel | 2 = Alle Fenster
- Catch ex As Exception
- fehler = String.Format(My.Resources.ICE_Common_FehlerInModul, "Create_Fensterliste", ex.Message)
- Dim form_exclamation As New ICE_Eingabe
- form_exclamation.Initialisiere(False, My.Resources.ICE_Common_ICEFehler, fehler, MessageBoxButtons.OK, 4)
- End Try
- If form_Wartefenster.Visible = True Then
- form_Wartefenster.Formschliessen = True
- form_Wartefenster.Close()
- MainForm.GesamteOberflächeSperren(False)
- End If
- Me.Cursor = Cursors.Default
- End Sub
- #Region "EnumFenster"
- Private Sub StammfensterEinlesen(StammFensterAuswahl As Integer)
- Me.Cursor = Cursors.WaitCursor
- Application.DoEvents()
- dgv_TopLevelFenster.Rows.Clear()
- EnumWindows(AddressOf EnumTopLevelWinProc, StammFensterAuswahl)
- DGVTopLevelEinrichten()
- AnzahlTopLevelFenster = dgv_TopLevelFenster.Rows.Count
- dgv_TopLevelFenster.Sort(dgv_TopLevelFenster.Columns(0), ListSortDirection.Ascending)
- SelectTopLevelFenster()
- Me.Text = String.Format(My.Resources.ICE_Fensterliste_AnzahlFensterIdentifikatorGefunden, AnzahlMatchingTopLevelFenster.ToString, sucheTitel)
- grb_TopLevel.Text = String.Format(My.Resources.ICE_Fensterliste_AnzahlStammFensterGefunden, AnzahlTopLevelFenster.ToString)
- Me.Cursor = Cursors.Default
- End Sub
- Private Sub ChildFensterEinlesen(ByVal ChildFensterAuswahl As Integer)
- If dgv_TopLevelFenster.SelectedRows.Count = 1 Then
- Me.Cursor = Cursors.WaitCursor
- Application.DoEvents()
- dgv_ChildFenster.Rows.Clear()
- Dim hwndStammfenster As New IntPtr(CInt(dgv_TopLevelFenster.SelectedRows(0).Cells(2).Value))
- Call EnumChildWindows(hwndStammfenster, AddressOf EnumChildProc, ChildFensterAuswahl)
- dgv_ChildFenster.Sort(dgv_ChildFenster.Columns(1), ListSortDirection.Ascending)
- DGVChildEinrichten()
- AnzahlChildFenster = dgv_ChildFenster.Rows.Count
- grb_ChildFenster.Text = String.Format(My.Resources.ICE_Fensterliste_grb_ChildFenster & " - {0}", AnzahlChildFenster.ToString)
- SelectChildFenster()
- If IsWindowVisible(hwndStammfenster) Then
- btn_Stammfenster.Enabled = True
- Else
- btn_Stammfenster.Enabled = False
- End If
- btn_AnFensterSenden.Enabled = True
- Me.Cursor = Cursors.Default
- Else
- btn_Stammfenster.Enabled = False
- btn_AnFensterSenden.Enabled = False
- End If
- End Sub
- Private Function EnumTopLevelWinProc(ByVal hwnd As IntPtr, ByVal StammFensterAuswahl As Integer) As Boolean
- If (IsWindowVisible(hwnd)) Then
- If GetParent(hwnd) = IntPtr.Zero Then
- If GetWindowLong(hwnd, GWL_HWNDPARENT) = 0 Then
- AddWndInfosToListView(hwnd, StammFensterAuswahl, True)
- End If
- End If
- End If
- EnumTopLevelWinProc = True
- End Function
- Public Function EnumChildProc(ByVal hwnd As IntPtr, ByVal ChildFensterAuswahl As Integer) As Boolean
- Dim nStyle As IntPtr = GetWindowLongPtr(hwnd, GWL_STYLE)
- Dim tmpStr As String = hwnd.ToString
- If ChildFensterAuswahl = 0 Then
- ' Alle sichtbaren Fenster mit Titel und Rahmen
- If (nStyle.ToInt64() And WS_VISIBLE) = WS_VISIBLE AndAlso (nStyle.ToInt64() And WS_BORDER) = WS_BORDER Then
- ' Das Fenster ist sichtbar und hat einen Rahmen.
- AddWndInfosToListView(hwnd, ChildFensterAuswahl, False)
- End If
- Else
- ' Alle anderen Fenster
- AddWndInfosToListView(hwnd, ChildFensterAuswahl, False)
- End If
- EnumChildProc = True
- End Function
- Private Sub AddWndInfosToListView(ByVal hwnd As IntPtr, ByVal FensterAuswahl As Integer, topLevel As Boolean)
- Dim strClassName As String
- Dim WindowTitle As String
- Dim ownerHWND As IntPtr
- Dim owner As String
- Dim classNameBuilder As New StringBuilder(256)
- GetClassName(hwnd, classNameBuilder, classNameBuilder.Capacity)
- strClassName = classNameBuilder.ToString()
- WindowTitle = GetTitleFromWindow(hwnd)
- If WindowTitle.Length > 0 OrElse FensterAuswahl > 1 Then
- ownerHWND = GetAncestor(hwnd, 2)
- owner = IO.Path.GetFileName(MainForm.GetExeFromHWND(ownerHWND))
- If owner <> IO.Path.GetFileName(Application.ExecutablePath) Then
- If topLevel = True Then
- dgv_TopLevelFenster.Rows.Add(owner, WindowTitle, CStr(hwnd), strClassName)
- Else
- dgv_ChildFenster.Rows.Add(owner, WindowTitle, CStr(hwnd), strClassName)
- End If
- End If
- End If
- End Sub
- #End Region
Habe ich einen Denkfehler - oder ist mit meinem Code was nicht OK?
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Dideldum“ ()