Name von einem externen Fenster mit Wildcard

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

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von blockbasti.

    Name von einem externen Fenster mit Wildcard

    Hey Leute,

    ich habe folgendes Problem:
    Ich habe ein kleines Programm mit diesem Code
    (relevanter Teil/Beispiel)

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. Public Const SWP_NOSIZE As Int32 = &H1
    4. Public Const SWP_NOMOVE As Int32 = &H2
    5. Public Declare Function SetWindowPos Lib "user32.dll" _
    6. (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As _
    7. IntPtr, ByVal X As Int32, ByVal Y As Int32, ByVal _
    8. cx As Int32, ByVal cy As Int32, ByVal uFlags As _
    9. Int32) As Boolean
    10. Private Declare Auto Function FindWindow Lib "user32" _
    11. (ByVal lpClassName As String, ByVal lpWindowName As _
    12. String) As IntPtr
    13. Private Sub btnGo_Click(ByVal sender As System.Object, _
    14. ByVal e As System.EventArgs) Handles btnGo.Click
    15. Dim target_hwnd As Long = FindWindow(vbNullString, _
    16. "AppName")
    17. Dim x As Int32 = Val(txtXmin.Text)
    18. Dim y As Int32 = Val(txtYmin.Text)
    19. Dim cx As Int32 = Val(txtWidth.Text)
    20. Dim cy As Int32 = Val(txtHeight.Text)
    21. SetWindowPos(target_hwnd, 0, x, y, cx, cy, 0)
    22. End Sub
    23. End Class

    vb-helper.com/howto_2008_position_other_app.html

    Das funzt auch soweit, bis auf dass sich der Name des Fenters immer ändert(z. B. "Test123","Test456","Test789")nach erneutem Start.
    Ein Teil des Namens bleibt aber immer gleich. Trotzdem verhindert dies, dass ich den Namen fest im Code habe.
    Ich müsste also im Teil

    VB.NET-Quellcode

    1. Dim target_hwnd As Long = FindWindow(vbNullString, _"AppName")

    das "AppName" in Teilen Variabel machen.

    Dazu hätte ich 2 Ideen:

    1. Eine Wildcard ("*") in einem Teil des Namens

    und

    2. Man wählt durch klicken das Fenster aus(das wäre auch kein Problem), sprich ein Button "Klicke auf den Button und dann auf das Fenster" und das Programm speichert dann den Fenstername in einer Variable.

    Ich denke jedoch das Variante 1 einfacher zu lösen wäre.

    Ich bin relativ neu im Bereich VB bzw. Programmieren sowie in dem Forum :)

    Schonmal vielen Dank
    blockbasti
    Geh die Liste aller Fenster durch und finde das Deinige.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!