Name- Bezeichnung des aktiven fensters ermitteln

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Tonyman86.

    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!
    funktioniert musst auf pinvoke nur den anweisungen folgen und die beispiele kopieren
    zu brauchst folgende api imports

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    2. Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer
    3. End Function
    4. <DllImport("user32.dll", SetLastError:=True)> _
    5. Private Shared Function GetActiveWindow() As IntPtr
    6. End Function
    7. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    8. Private Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer
    9. End Function
    Also ich habe nun folgenden Code in ein neues Modul geschrieben:

    VB.NET-Quellcode

    1. Option Explicit On
    2. Module Module1
    3. ' benötigte API-Deklarationen
    4. Private Declare Function GetForegroundWindow Lib "user32" () As LongPrivate Declare Function GetWindowText Lib "user32" _
    5. Alias "GetWindowTextA" ( _ByVal hwnd As Long, _
    6. ByVal lpString As String, _
    7. ByVal cch As Long) As Long
    8. ' Titel des aktiven Fensters ermitteln
    9. Public Function GetActiveWindowTitle() As String
    10. Dim nHWnd As Long
    11. Dim sTitle As String
    12. Dim nResult As Long
    13. ' Handle des aktiven Fenster
    14. nHWnd = GetForegroundWindow()
    15. ' Titel des aktiven Fensters
    16. sTitle = Space$(255)
    17. nResult = GetWindowText(nHWnd, sTitle, Len(sTitle))
    18. GetActiveWindowTitle = Left$(sTitle, nResult)
    19. End FunctionEnd Module


    Aber ich bekomme folgende Fehlermeldung:

    Ein Aufruf an die PInvoke-Funktion "Test!Test.Module1::GetWindowText" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.

    Tonyman86 schrieb:

    VB.NET-Quellcode

    1. ByVal hwnd As Long
    Wo hast Du diesen VB6-Unfug gefunden?
    Du hast explizite Hinweise für Deklarationen unter .NET bekommen. Nutze sie.
    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!