Resolution, Position und Frequenz aus Fenster und Vollbild Modus aus Prozesse lesen.

  • VB.NET

Es gibt 66 Antworten in diesem Thema. Der letzte Beitrag () ist von Xiantrius.

    Xiantrius schrieb:

    Das heist es gibt Spiele wie @Takafusa schon sagte probleme mit Spielen die ein 2 Fenster nutzen


    Nicht ganz korrekt, so hab ich das nicht gesagt(schau noch mal nach), nicht immer ist das Process.MainWindow.Handle, das Handle vom Fenster das man sieht. Bei spielen halte ich es für sehr wahrscheinlich das es nur 1 Fenster gibt, ich habe einige DirectXCodes gesehen, gab nur 1 Fenster, wird auch ausnahmen geben. Bei Programen allerdings sieht das anders aus, da ist es wahrscheinlicher. EIn theoretisches Beispiel, wenn man VS startet, sieht man zuerst ein Fenster mit den zuletzt geöffneten Projekten, man wählt eins aus oder erstellt ein neues, ein weiteres fenster wird geöffnet. Ohne es untersucht zu haben, ist also nur spekulation, könnte das fenster mit dem Projekten das als erstes kommt das "MainWindow" sein. Wenn dem so wäre müsstest du alle Fenster mit EnumThreadWindows durchlaufen um an die anderen zu kommen. Wenn nun der Designer z.B. ein MDI Child ist, würdest du nur mit EnumChildWindows dran kommen, wobei du dann das Handle des ParentFensters in die Funktion geben musst, durchiterieren usw.

    Gehen wir nun ein wenig strukturierter vor!
    Ich denke du solltest nicht gleich voll durchstarten, ich habe die Vermutung, zu viel Code in einer Datei, zu unübersichtlich, weil du das nicht richtig strukturierst(nicht bös gemeint), sieht man daran das du die WinAPI funktionen in der Form klasse hasst, in einem meiner Beispielprojekte solltest du gesehen haben, das man sowas schön auf weitere Klassen verteilen kann, das macht das arbeiten viel einfacher, zudem ist das auch sauberer, manchmal braucht man diese Fuktionen in mehreren Klassen, da macht es Sinn sowas nicht in Form-klassen zu packen, zudem brauchste falls du diese Funktionen noch mal brauchst nur die Datei einem Projekt hinzufügen. Also leg das bestehende Projekt erstmal an die Seite, neues Projekt die API Funktionen in eine extra Klasse, dann kannste die später einfach in andere Projekt kopieren und als i-Tüpfelchen hast du viel weniger Code in der Form klasse, alles wird übersichtlicher sein.

    Also lesen wir nun die Fenstertexte aus in einem neuen leeren Projekt, denke dabei nicht an das bereits bestehende Projekt oder was noch kommen wird, ist dann einfacher, werf quick&dirty einen Timer aufs Form interval 1000 reicht, enabled auf True stellen, im Tick event des Timers hohlste dir mit GetForeGroundWindow das Handle vom vordersten Fensterdamit wir erstmal auf einfachen Weg irgendwelche Handles haben, mit Debug.WriteLine die Handles mal ausgeben(Ausgabefenster aber öffnen, wenn du das geschlossen hast, siehste nix), dabei auch mal andere Fenster selektieren und die DebugAusgabe anschauen, wenn das klappt nächster Schritt, nutze das ausgelesene Handle und hohle die länge des textes und lasse das wieder mit Debug.WriteLine ausgeben, und wieder erst wenn die länge stimmt zum nächsten Schritt, das auslesen des textes. Wenn du das richtig gemacht hast, Congrats, du kannst Fenstertitel von anderen Prozessen auslesen. Projekt bereinigen, zippen, ab in ein Archiv, dann kannste jederzeit gucken wie du das gemacht hast.

    Mach das mal, berichte und zeig uns den Code, dann machen wir den nächsten Schritt, auch wieder in einem leeren Projekt. Das wäre dann das Auflisten aller Fenster eines Prozesses.

    Anders sehe ich keine Sinn, gibt nur verwirrung und alles zieht sich in die Länge. Am Ende wirst du dann mehrere kleine Projekte haben und kannst dann alles in ein Projekt zusammenfügen, ist leichter für uns alle.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Takafusa“ ()

    Ok Schritt für Schritt
    1. Ich erstelle die Listview1, dann 4 Labels, 3 TextBoxen, 1 Multiline TextBox und ein button zum aktualisieren der Prozesse.

    2. Der Code erstellt und fügt per code die Spalten ein und frage alle Prozesse ab, dabei filtere ich alle Prozesse aus wo kein MainWindowhandle existiert der rest sollte selbsterklärend sein.

    VB.NET-Quellcode

    1. Private Sub Prozessliste()
    2. If CheckColumn = False Then
    3. CheckColumn = True
    4. ListView1.FullRowSelect = True
    5. ListView1.Columns.Add("FensterHandle")
    6. ListView1.Columns.Add("Fensternamen")
    7. ListView1.Columns.Add("Prozesse")
    8. ListView1.Columns.Add("Prozess-ID")
    9. ListView1.Columns.Add("RAM")
    10. ElseIf CheckColumn = True Then
    11. End If
    12. If CheckList = False Then
    13. 'CheckList = True
    14. ListView1.Items.Clear()
    15. For Each Alle_Prozesse In Process.GetProcesses()
    16. If Alle_Prozesse.MainWindowHandle.ToInt32 > 0 Then
    17. With ListView1.Items.Add(Hex(Alle_Prozesse.MainWindowHandle.ToString))
    18. .SubItems.Add(Alle_Prozesse.MainWindowTitle)
    19. .SubItems.Add(Alle_Prozesse.ProcessName)
    20. .SubItems.Add(Hex(Alle_Prozesse.Id.ToString))
    21. End With
    22. End If
    23. Next
    24. If ListView1.Items.Count > 0 Then
    25. AutoSizeListViewColumns(ListView1)
    26. End If
    27. End If
    28. End Sub
    29. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    30. Prozessliste()
    31. End Sub


    3. Auslesen was aber leider nicht überall funktioniert, wegen VollbildModus auch bei deine funktion mag das nicht so und da ich bei meiner das ganz leicht in der TextBox übergeben kann ist nicht böse gemeint nehme ich lieber diese Funktion.
    Das soll mir als Protokoll auswertung dienen. Wenn du willst kann ich den Logeintrag auch speichern lassen in ein Dokument.

    VB.NET-Quellcode

    1. <Runtime.InteropServices.DllImport("user32.dll")>
    2. Private Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Int32
    3. End Function
    4. <Runtime.InteropServices.DllImport("user32.dll")>
    5. Private Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
    6. End Function
    7. <Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential)>
    8. Public Structure RECT
    9. Public Left As Integer
    10. Public Top As Integer
    11. Public Right As Integer
    12. Public Bottom As Integer
    13. Public Overrides Function ToString() As String
    14. Return String.Format("Left: {0}, Top: {1}, Right: {2}, Bottom: {3}", Left, Top, Right, Bottom)
    15. End Function
    16. End Structure
    17. Dim intRet As Integer
    18. Dim wpTemp As WINDOWPLACEMENT
    19. Dim HWND As IntPtr
    20. Dim WindowMode_Information(1) As String
    21. Dim XYCheck As RECT
    22. Public Function GetWindowRectangle(ByVal hwnd As IntPtr) As Rectangle
    23. Dim XYRect As RECT
    24. GetWindowRect(hwnd, XYRect)
    25. Dim rr As New Rectangle(XYRect.Left, XYRect.Top, XYRect.Right - XYRect.Left, XYRect.Bottom - XYRect.Top)
    26. WindowMode_Information(0) = GetWindowRect(hwnd, XYRect) & vbNewLine & rr.ToString
    27. Return rr
    28. End Function
    29. Dim ShowWindowedMode As String
    30. Private Sub PrüfeWindowedModus()
    31. If ListView1.SelectedItems.Count > 0 Then
    32. For Each Prozess As Process In Process.GetProcessesByName(ListView1.SelectedItems.Item(0).SubItems(2).Text)
    33. TextBox1.Text = Prozess.ProcessName
    34. wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)
    35. intRet = GetWindowPlacement(Prozess.MainWindowHandle, wpTemp)
    36. HWND = Prozess.MainWindowHandle
    37. If Not Prozess.MainWindowHandle = IntPtr.Zero Then
    38. TextBox2.Text = Hex(Prozess.MainWindowHandle.ToString)
    39. End If
    40. CheckWindowMode()
    41. Next
    42. End If
    43. End Sub
    44. Public Function IsFullscreen(ByVal hwnd As IntPtr) As String
    45. Dim R As Rectangle = GetWindowRectangle(hwnd)
    46. Dim screens() As Screen = Screen.AllScreens
    47. 'Verbesserter Code ohne My.Conputer
    48. For i As Integer = 0 To screens.Length - 1
    49. 'If screens(i).Bounds.Contains(Cursor.Position) AndAlso screens(i).Bounds.Contains(Cursor.Position) Then
    50. If R.Width >= screens(i).Bounds.Width AndAlso R.Height >= screens(i).Bounds.Height Then
    51. 'If screens(i).WorkingArea.Contains(New Point(XYCheck.Left, XYCheck.Top)) Then
    52. Return "Monitor=" & i & ", FensterMode=Fullscreen"
    53. End If
    54. 'End If
    55. WindowMode_Information(1) = "Von Prozess Breite: " & R.Width & vbNewLine &
    56. "Von Prozess Höhe: " & R.Height & vbNewLine & vbNewLine &
    57. "Von Bildschirm Breite: " & screens(i).Bounds.Width & vbNewLine & 'My.Computer.Screen.Bounds.Width & vbNewLine &
    58. "Von Bildschirm Höhe: " & screens(i).Bounds.Height 'My.Computer.Screen.Bounds.Height
    59. 'End If
    60. 'Ursprünglicher Code mit My.Computer
    61. 'If R.Width >= My.Computer.Screen.Bounds.Width AndAlso R.Height >= My.Computer.Screen.Bounds.Height Then
    62. ' Return "Fullscreen"
    63. 'End If
    64. Dim intRet As Integer
    65. Dim wpTemp As WINDOWPLACEMENT
    66. wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)
    67. intRet = GetWindowPlacement(hwnd, wpTemp)
    68. If wpTemp.showCmd = 1 Then
    69. Return "Monitor:=" & i & ", FensterMode=Normal"
    70. ElseIf wpTemp.showCmd = 2 Then
    71. Return "Monitor=" & i & ", FensterMode=Minimized"
    72. ElseIf wpTemp.showCmd = 3 Then
    73. Return "Monitor=" & i & ", FensterMode=Maximized"
    74. End If
    75. Next
    76. Return "Error"
    77. End Function
    78. 'Bei der Auswertung ist bei TextBox3 kleiner bug wenn man mit den Cursor drüber geht wird es wie bei TextBox4 in der 1 Zeile richtig angezeigt. Weis nicht wie man das behebt, aber nicht schlimm.
    79. Private Sub CheckWindowMode()
    80. TextBox3.Text = IsFullscreen(HWND)
    81. TextBox4.Text = IsFullscreen(HWND) & vbNewLine & WindowMode_Information(0) & vbNewLine & vbNewLine & WindowMode_Information(1)
    82. End Sub
    83. Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
    84. If ListView1.Items.Count > 0 Then
    85. PrüfeWindowedModus()
    86. End If
    87. End Sub
    88. Private Sub ListView1_KeyUp(sender As Object, e As KeyEventArgs) Handles ListView1.KeyUp
    89. If e.KeyCode = Keys.Down Or e.KeyCode = Keys.Up Then
    90. If ListView1.Items.Count > 0 Then
    91. If ListView1.SelectedIndices.Count > 0 Then
    92. PrüfeWindowedModus()
    93. End If
    94. End If
    95. End If
    96. End Sub


    4 Für Leute die nur 1 Monitor haben. Erstelle 1 Timer und die API GetAsyncKeyState einfügen

    VB.NET-Quellcode

    1. <Runtime.InteropServices.DllImport("user32.dll")>
    2. Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
    3. End Function
    4. 'Ist nur ein Beispiel wie ich sie ausführe kann jeder machen wie er will.
    5. If GetAsyncKeyState(Keys.LControlKey) <> 0 Or GetAsyncKeyState(Keys.RControlKey) <> 0 Then
    6. End If
    7. Select Case True
    8. Case GetAsyncKeyState(Keys.LShiftKey) <> 0
    9. 'Linke Shift Taste
    10. Case GetAsyncKeyState(Keys.RShiftKey) <> 0
    11. 'Rechte Shift Taste
    12. Case GetAsyncKeyState(Keys.LMenu) <> 0
    13. 'Linke Alt Taste
    14. Case GetAsyncKeyState(Keys.ControlKey) <> 0 AndAlso
    15. GetAsyncKeyState(Keys.RMenu) <> 0
    16. 'Rechte AltGr Taste ( Muss immer als erster stelle stehen!!! )
    17. Case GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Right) <> 0
    18. 'Linke STRG Taste und Rechte Pfeil Taste
    19. Case GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Left) <> 0
    20. 'Linke STRG Taste und Linke Pfeil Taste
    21. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Right) <> 0
    22. 'TextBox3.Text = FullscreenCheck(ListView1.SelectedItems(0).SubItems(2).Text)
    23. 'Rechte STRG Taste und Rechte Pfeil Taste
    24. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Left) <> 0
    25. 'Hier wird ausgelesen zb. mit der Tastenkombi
    26. CheckWindowMode()
    27. 'Rechte STRG Taste und Linke Pfeil Taste
    28. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Down) <> 0 Or GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Down) <> 0
    29. 'Rechte STRG, oder Linke STRG Taste und Untere Pfeil Taste
    30. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Up) <> 0 Or GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Up) <> 0
    31. 'Rechte STRG, oder Linke STRG Taste und Oberer Pfeil Taste
    32. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Right) <> 0 OrElse GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Right) <> 0
    33. 'Rechte STRG, oder Linke STRG Taste und Rechter Pfeil Taste
    34. Case GetAsyncKeyState(Keys.RControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Left) <> 0 OrElse GetAsyncKeyState(Keys.LControlKey) <> 0 AndAlso GetAsyncKeyState(Keys.Left) <> 0
    35. 'Rechte STRG, oder Linke STRG Taste und Linker Pfeil Taste
    36. End Select
    37. End Sub


    Kann dir paar Spiele nennen welche nicht funktionieren. Auch leider bei deiner vorgeschlagenen Funktion mit deiner GetWindowState funktion.
    Folgende Spiele werden zb.: nicht als Vollbildmodus von mein Tool bestätigt:
    Muss hier also noch tests machen.
    Warlords 3 Darklords Risings:
    Monitor=0, FensterMode=Minimized
    True
    {X=-32000,Y=-32000,Width=160,Height=28}

    Breite wenn minimiert 160
    Höhe wenn minimiert 28

    Von Bildschirm Breite: 1920
    Von Bildschirm Höhe: 1080

    Folgende Spiele die zb.: als Vollbildmodus von mein Tool bestätigt werden:
    Pax Imperia
    Auswertung dazu:
    Monitor=0, FensterMode=Fullscreen
    True
    {X=0,Y=0,Width=640,Height=480}

    Breite wenn minimiert: 160
    Höhe wenn minimiert: 28

    Von Bildschirm Breite: 1920
    Von Bildschirm Höhe: 1080

    Ultima IX:
    Monitor=0, FensterMode=Fullscreen
    True
    {X=0,Y=0,Width=1280,Height=1024}

    Breite wenn minimiert: 160
    Höhe wenn minimiert: 28

    Von Bildschirm Breite: 1920
    Von Bildschirm Höhe: 1080

    Lands Of Lore 3:
    Monitor=0, FensterMode=Fullscreen
    True
    {X=0,Y=0,Width=800,Height=600}

    Breite wenn minimiert: 160
    Höhe wenn minimiert: 28

    Von Bildschirm Breite: 1920
    Von Bildschirm Höhe: 1080

    mfg.
    Xiantrius
    Erst ging das lesen des fenstertextes nicht nun doch? Also was denn nun??????

    Ich verstehe dich nicht, warum so blöd über Strings?

    Auch mit meiner Funktion kannste mit leichtigkeit Werte in eine TextBox bekommen, anstatt zu fragen "wie könnte ich die Werte gescheit in die TextBox bekommen", nimmste wieder den alten Mist, auch iweder mit >= warum hab ich mir die Mühe gemacht?
    Ich komm mir grad verarscht vor, ich korrigierem verbessere, zeige wie man das vernünftig macht, du nimmstweiter den alten MIst, klar ist das deine Sache, aber so mach ich nicht mehr weiter. Ich bin denn jetzt erstmal raus hier, du willst nicht lernen und deinen Code verbessern, deine es geht halbwegs ich änder das nicht Einstellung kann ich nicht ab, sry. Dann arbeite weiter auf schlechte art, wenn du dir selbst so das leben schwer machen willst bitte. So hättest du das mit dem Enum und die Funktion welche ich bearbeitet hab in die boxen bekommen. Zudem kannste EnumWerte besser für Bedingungen nutzen, anstatt Strings zu vergleichen,ist auch sicherer weil in einem String meldet die IDE keine Schreibfehler, geht dan in die Hose, bei nem enum, meckert die IDE wenn du da den namen falsch schreibst. Viel erfolg noch, ich nehm jetzt lieber irgendeinen freelancer auftrag an und verdiene Geld beim tippen, ich helfe zwar wirklich gern, solange der Hilfesuchende wirklich zu lernen bereit ist, aber das sehe ich bei dir nicht. Sonst hättest du gezielt wegen des Enum gefragt, was das ist, wie man das anwended oder warum ich das gemacht hab, nichts, stattdessen, "hauste mir in die Fresse"(nicht wirklich, aber es traf mich wie ein Schlag) indem du weiter den vorherigen mist nimmst, welcher Querschläger ermöglicht, also ab und zu was total falsches zeigen kann.

    Nach einem Vorfall gestern, wo ich schon weniger Lust hatte hier im Forum zu schreiben, hast du mir nun den rest gegeben,ich verlasse das Forum, macht keinen Sinn, hab den Admin schon um die Löschung meines accounts gebeten.

    VB.NET-Quellcode

    1. Dim state As MyWindowState = GetWindowState(das Handle)
    2. Select Case state
    3. Case Minimized
    4. 'textbox text setzen
    5. Case Normal
    6. 'textbox text setzen
    7. .......
    8. End Select

    Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von „Takafusa“ ()

    Ich verarsche dich nicht.
    Ich danke trotzdem für deine Unterstützung und deine Zeit.
    Dummerweise verstehe ich das programmieren nur bis zur einer bestimmten grenze. Was weiter hinaus geht bin ich solange auf Hilfe angewiesen, bis ich das endlich verstehe.
    Darum fühlst du dich verarscht.

    Ich werde deine funktion nochmal probieren.
    Sobald ich das so gut auswerten kann wie bei meiner gebe hier bescheid.

    Mfg.
    Xiantrius

    Takafusa schrieb:

    Nach einem Vorfall gestern, wo ich schon weniger Lust hatte hier im Forum zu schreiben, hast du mir nun den rest gegeben,ich verlasse das Forum, macht keinen Sinn, hab den Admin schon um die Löschung meines accounts gebeten.


    Xiantrius schrieb:

    Dummerweise verstehe ich das programmieren nur bis zur einer bestimmten grenze. Was weiter hinaus geht bin ich solange auf Hilfe angewiesen, bis ich das endlich verstehe.


    Dazu fällt mir nur das Sesamstraßen lied ein, "wer nicht fragt bleibt dumm", ich hätte dir Antworten gegeben, hättest du gefragt, und beschrieben was du an meinem Code nicht verstehst.
    Ich weis noch nicht wie man bei deiner funktion die auswertung ausgibt.
    Wie geht das über die TextBox?
    Ausserdem bin ich gerade auf der Arbeit.

    Ich finde du überreagierst ein wenig...

    Nochmalige Überprüfung:
    Deiner GetWindowState funktion.
    So bin zuhause und kann mein Projekt fortsetzen.
    Haben Freitag Mittag schon Feierabend.

    VB.NET-Quellcode

    1. Public Enum MyWindowStates
    2. Minimized
    3. Normal
    4. Maximized
    5. FullScreen
    6. UNKNOWN
    7. End Enum
    8. Public Function GetWindowState(ByVal hwnd As IntPtr) As MyWindowStates
    9. Dim R As Rectangle = GetWindowRectangle(hwnd)
    10. Dim screens() As Screen = Screen.AllScreens
    11. Dim result As MyWindowStates = MyWindowStates.UNKNOWN
    12. Dim intRet As Integer
    13. Dim wpTemp As WINDOWPLACEMENT
    14. wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)
    15. intRet = GetWindowPlacement(hwnd, wpTemp)
    16. If wpTemp.showCmd = 1 Then
    17. result = MyWindowStates.Normal
    18. ElseIf wpTemp.showCmd = 2 Then
    19. result = MyWindowStates.Minimized
    20. ElseIf wpTemp.showCmd = 3 Then
    21. result = MyWindowStates.Maximized
    22. End If
    23. For i As Integer = 0 To screens.Length - 1
    24. If R.X < 0 Then
    25. R.Width += R.X
    26. R.Y += R.Y
    27. End If
    28. If R.Y < 0 Then
    29. R.Height += R.Y
    30. R.Y += R.Y
    31. End If
    32. If R.X = screens(i).Bounds.X AndAlso R.Y =
    33. screens(i).Bounds.Y AndAlso R.Width = screens(i).Bounds.Width AndAlso
    34. R.Height = screens(i).Bounds.Height Then
    35. result = MyWindowStates.FullScreen
    36. End If
    37. Next
    38. Return result
    39. End Function


    Ergebnis:
    Fullscreen erfolgreich 3 Testergebnisse:
    Konnte er mit der Funktion GetWindowState von Takafusa als Fullscreen identifizieren, eben so meine Funktion IsFullscreen erkennt das.
    Ultima IX
    Lands Of Lore 3
    Pax Imperia

    Fullscreen fehlgeschlagen 1 Testergebnis:
    konnte er als mit der Funktion GetWindowState von Takafusa als Fullscreen NICHT identifizieren, eben so meine Funktion IsFullscreen erkennt das NICHT.
    Warlords 3 Darklords Rising

    Fazit:
    ich sagte ja bereits jeder hat sein Style deine funktion arbeitet eben mit kein String, meine mit String.
    Dennoch haben beide das gleiche Ergebnis.
    Wo soll deine Funktion bitte besser sein?
    Sicher sie sieht besser aus. Das Ergebnis ist aber gleich.
    Man kann Codes immer noch verbessern, mir geht es erst mal da rum das es funktioniert wie es soll.

    Das hatten wir ja bereits.
    Mit der EnumWindows und
    EnumChildWindows API hab ich noch nie gearbeitet. Wie ruft man dort die
    MainWindowHandle und die Fenstertitel ab und trägt sie ein?
    Hab das auch schon erwähnt, dass ich damit noch nie gearbeitet habe.

    VB.NET-Quellcode

    1. <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)>
    2. Public Shared Function EnumWindows(ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As IntPtr) As Boolean
    3. End Function
    4. Public Delegate Function EnumWindowsProc(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
    5. <Runtime.InteropServices.DllImport("user32")>
    6. Public Shared Function EnumChildWindows(ByVal hWndParent As IntPtr,
    7. ByVal lpEnumProc As EnumChildProc, ByVal lParam As Integer) As Boolean
    8. End Function
    9. Public Delegate Function EnumChildProc(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Xiantrius“ ()

    Werde das Thema als Erledigt markieren.
    Die Vorrausetzung wurde erfüllt. Auch wenn es am ende nicht so gut ausgegangen ist.
    Musste arbeiten hatte weniger Zeit unter die Woche.
    Danke an @Takafusa , @-Franky- und @VaporiZed das ihr euer Beitrag geleistet habt.
    An Takafusa besonders.
    Hoffe er lässt sein Account nicht löschen und beruhigt sich wieder, würde mich freuen.
    Hab selbst auch Fehler gemacht sehe ich auch ein und muss mich entschuldigen.

    mfg.
    Xiantrius