Ich finde eine Seite in diesem Forum nicht mehr - Sourcecode-Austausch - Programm "Fensterliste" o.ä..

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Dideldum.

    Ich finde eine Seite in diesem Forum nicht mehr - Sourcecode-Austausch - Programm "Fensterliste" o.ä..

    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):

    VB.NET-Quellcode

    1. Public Sub Create_Fensterliste()
    2. Dim fehler As String = ""
    3. AnzahlMatchingTopLevelFenster = 0
    4. AnzahlMatchingChildFenster = 0
    5. Me.Cursor = Cursors.WaitCursor
    6. Dim form_Wartefenster As New ICE_Wartefenster
    7. MainForm.GesamteOberflächeSperren(True)
    8. form_Wartefenster.Initialisiere(My.Resources.ICE_Common_BitteWarten, My.Resources.ICE_Fensterliste_InfoWarten1, -1, My.Resources.ICE_Common_InfoWarten2, 128)
    9. Do
    10. MainForm.Delay(1)
    11. Application.DoEvents()
    12. Loop While form_Wartefenster.Visible = False
    13. Try
    14. ' Stamm-Fenster
    15. StammfensterEinlesen(StammFensterAuswahl) ' 0 = Nur sichtbare Fenster mit Titel und Rahmen | 2 = Alle Fenster
    16. ' Child-Fenster
    17. ChildFensterEinlesen(ChildFensterAuswahl) ' 0 = Nur sichtbare Fenster mit Titel und Rahmen | 1 = Alle Fenster mit Titel | 2 = Alle Fenster
    18. Catch ex As Exception
    19. fehler = String.Format(My.Resources.ICE_Common_FehlerInModul, "Create_Fensterliste", ex.Message)
    20. Dim form_exclamation As New ICE_Eingabe
    21. form_exclamation.Initialisiere(False, My.Resources.ICE_Common_ICEFehler, fehler, MessageBoxButtons.OK, 4)
    22. End Try
    23. If form_Wartefenster.Visible = True Then
    24. form_Wartefenster.Formschliessen = True
    25. form_Wartefenster.Close()
    26. MainForm.GesamteOberflächeSperren(False)
    27. End If
    28. Me.Cursor = Cursors.Default
    29. End Sub
    30. #Region "EnumFenster"
    31. Private Sub StammfensterEinlesen(StammFensterAuswahl As Integer)
    32. Me.Cursor = Cursors.WaitCursor
    33. Application.DoEvents()
    34. dgv_TopLevelFenster.Rows.Clear()
    35. EnumWindows(AddressOf EnumTopLevelWinProc, StammFensterAuswahl)
    36. DGVTopLevelEinrichten()
    37. AnzahlTopLevelFenster = dgv_TopLevelFenster.Rows.Count
    38. dgv_TopLevelFenster.Sort(dgv_TopLevelFenster.Columns(0), ListSortDirection.Ascending)
    39. SelectTopLevelFenster()
    40. Me.Text = String.Format(My.Resources.ICE_Fensterliste_AnzahlFensterIdentifikatorGefunden, AnzahlMatchingTopLevelFenster.ToString, sucheTitel)
    41. grb_TopLevel.Text = String.Format(My.Resources.ICE_Fensterliste_AnzahlStammFensterGefunden, AnzahlTopLevelFenster.ToString)
    42. Me.Cursor = Cursors.Default
    43. End Sub
    44. Private Sub ChildFensterEinlesen(ByVal ChildFensterAuswahl As Integer)
    45. If dgv_TopLevelFenster.SelectedRows.Count = 1 Then
    46. Me.Cursor = Cursors.WaitCursor
    47. Application.DoEvents()
    48. dgv_ChildFenster.Rows.Clear()
    49. Dim hwndStammfenster As New IntPtr(CInt(dgv_TopLevelFenster.SelectedRows(0).Cells(2).Value))
    50. Call EnumChildWindows(hwndStammfenster, AddressOf EnumChildProc, ChildFensterAuswahl)
    51. dgv_ChildFenster.Sort(dgv_ChildFenster.Columns(1), ListSortDirection.Ascending)
    52. DGVChildEinrichten()
    53. AnzahlChildFenster = dgv_ChildFenster.Rows.Count
    54. grb_ChildFenster.Text = String.Format(My.Resources.ICE_Fensterliste_grb_ChildFenster & " - {0}", AnzahlChildFenster.ToString)
    55. SelectChildFenster()
    56. If IsWindowVisible(hwndStammfenster) Then
    57. btn_Stammfenster.Enabled = True
    58. Else
    59. btn_Stammfenster.Enabled = False
    60. End If
    61. btn_AnFensterSenden.Enabled = True
    62. Me.Cursor = Cursors.Default
    63. Else
    64. btn_Stammfenster.Enabled = False
    65. btn_AnFensterSenden.Enabled = False
    66. End If
    67. End Sub
    68. Private Function EnumTopLevelWinProc(ByVal hwnd As IntPtr, ByVal StammFensterAuswahl As Integer) As Boolean
    69. If (IsWindowVisible(hwnd)) Then
    70. If GetParent(hwnd) = IntPtr.Zero Then
    71. If GetWindowLong(hwnd, GWL_HWNDPARENT) = 0 Then
    72. AddWndInfosToListView(hwnd, StammFensterAuswahl, True)
    73. End If
    74. End If
    75. End If
    76. EnumTopLevelWinProc = True
    77. End Function
    78. Public Function EnumChildProc(ByVal hwnd As IntPtr, ByVal ChildFensterAuswahl As Integer) As Boolean
    79. Dim nStyle As IntPtr = GetWindowLongPtr(hwnd, GWL_STYLE)
    80. Dim tmpStr As String = hwnd.ToString
    81. If ChildFensterAuswahl = 0 Then
    82. ' Alle sichtbaren Fenster mit Titel und Rahmen
    83. If (nStyle.ToInt64() And WS_VISIBLE) = WS_VISIBLE AndAlso (nStyle.ToInt64() And WS_BORDER) = WS_BORDER Then
    84. ' Das Fenster ist sichtbar und hat einen Rahmen.
    85. AddWndInfosToListView(hwnd, ChildFensterAuswahl, False)
    86. End If
    87. Else
    88. ' Alle anderen Fenster
    89. AddWndInfosToListView(hwnd, ChildFensterAuswahl, False)
    90. End If
    91. EnumChildProc = True
    92. End Function
    93. Private Sub AddWndInfosToListView(ByVal hwnd As IntPtr, ByVal FensterAuswahl As Integer, topLevel As Boolean)
    94. Dim strClassName As String
    95. Dim WindowTitle As String
    96. Dim ownerHWND As IntPtr
    97. Dim owner As String
    98. Dim classNameBuilder As New StringBuilder(256)
    99. GetClassName(hwnd, classNameBuilder, classNameBuilder.Capacity)
    100. strClassName = classNameBuilder.ToString()
    101. WindowTitle = GetTitleFromWindow(hwnd)
    102. If WindowTitle.Length > 0 OrElse FensterAuswahl > 1 Then
    103. ownerHWND = GetAncestor(hwnd, 2)
    104. owner = IO.Path.GetFileName(MainForm.GetExeFromHWND(ownerHWND))
    105. If owner <> IO.Path.GetFileName(Application.ExecutablePath) Then
    106. If topLevel = True Then
    107. dgv_TopLevelFenster.Rows.Add(owner, WindowTitle, CStr(hwnd), strClassName)
    108. Else
    109. dgv_ChildFenster.Rows.Add(owner, WindowTitle, CStr(hwnd), strClassName)
    110. End If
    111. End If
    112. End If
    113. End Sub
    114. #End Region


    Habe ich einen Denkfehler - oder ist mit meinem Code was nicht OK?


    Bilder
    • Fensterliste.jpg

      146,29 kB, 1.042×723, 62 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Dideldum“ ()

    Meine obige Frage ist vielleicht verworren geschrieben... :D

    Meine Frage ist einfach die:
    Wenn ich das "Ordneroptionen"-Fenster im Win-Explorer öffne, warum erscheint dieses nicht mit diesem Titel in meiner Fensterliste.
    Weder als TopLevel-Fenster noch in der Childfenster-Liste.
    Bilder
    • Fensterliste.jpg

      207,17 kB, 1.042×723, 44 mal angesehen
    Hi @oobdoo

    Danke Dir für Deine Hilfe! :)
    Nicht ganz - Deinen Link habe ich auch auf meiner Suche gefunden.
    Ist auch nicht so arg wichtig, den Link zur Zip zu finden.
    Wichtiger ist mir, warum dieses verflixte "Ordneroptionen"-Fenster vom Win-Explorer weder in meiner TopLevel- noch in der ChildFenster-Liste erscheint.
    Habe alle Top-Level-"Explorer"-Fenster durchsucht, aber es gibt kein Child in diesen, welches den Fenstertitel "Ordneroptionen" trägt.
    Das verstehe ich so gar nicht.
    Und hier würde mich interessieren, ob ich einen Code-Knoten im Script habe, oder ob das irgend so eine Eigenart vom Windows ist.

    Schönen Rest-Sonntach :)

    Edit:
    Habe meine halbe FF-Chronik durchgeackert und es gefunden, das Script - war gar nicht in diesem Forum ;( :
    vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0391.shtml
    Aber vielleicht kann mir einer die Frage beantworten, warum sich das "Ordneroptionen"-Fenster nirgendwo in der Enumeration der Fenster finden lässt.
    M.E. sollten doch alle Fenster entweder als TopLevel oder Child enumeriert werden und bei Auswahl von "Alle Fenster" auch in meinem Fenster angezeigt werden.
    Das würde ich gerne verstehen, warum das "Ordneroptionen"-Fenster hier nicht erscheinen mag.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dideldum“ ()