GetActiveWindow funktioniert nicht mehr

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

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    GetActiveWindow funktioniert nicht mehr

    (Windows 10/VS2017)
    Hallo, ich nutze seit langem

    VB.NET-Quellcode

    1. Private Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As IntPtr

    um herauszufinden, welches Form gerade aktiv den Fokus hat.
    Mit dieser Info frage ich

    VB.NET-Quellcode

    1. If Me.WindowState <> FormWindowState.Minimized And _
    2. GetActiveWindow() = Me.Handle Then
    3. ...
    4. End If

    ab, ob das Form gerade nicht minimiert ist UND den Fokus hat.
    Das hat auch immer funktioniert. Jetzt plötzlich nicht mehr.
    IntPtr ist immer 0.
    Ich habe jetzt gelesen, das meine Signatur eine VB-Sifgantur ist und habe daher auch

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True)> _
    2. Private Shared Function GetActiveWindow() As IntPtr
    3. End Function

    ausprobiert.
    Erfolglos.
    Ideen?
    @roepke Bei mir funktioniert es:
    W10, Studio 2019, x86 und x64.
    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!
    Ich hab auch ein wenig rumgespielt. Dabei habe ich folgendes festgestellt:
    Arbeite ich mit aktuellsten Version meines Programms, da funktionert es auch.
    Arbeite ich mit einer Vorgängerversion (bei der ich an dieser Stelle ABSOLUT nichts gändert habe (beide Versionen unterscheiden sich nur marginal an ganz andere Stelle), da funktionert es nicht.
    Die Vörgängerversion habe ich aus einem Repsitory geholt um daran ein BugFix zu machen, dabei ist mir die Fehlfunktion aufgefallen.
    Ich habe jetzt in der Vorgängerversion die zur neuen Version gemachten Änderungen nachgezogen, funktioniert trotzdem nicht.
    Aber: mache ich bei der neueren Version die Ändeurnegen rückgängig, funktioniert es noch immer.
    Fazit: beide Male ist der Code nun identisch und trotzdem klappt es einmal und einmal nicht.
    Sehr suspekt.
    Da es in der aktuellsten Version (scheinbar) keine Probleme gibt, arbeite ich jetzt damit weiter und drücke mir die Daumen, das die Ursache irgedendwo in den VS Tiefen liegen und als einmaliger Effekt nicht wieder auftritt.
    Löschen der .suo und Bereinigen des Projekts waren im Übrigen auch keinen Lösung.

    roepke schrieb:

    aktuellsten Version meines Programms
    Ist die aktueller als die aktuelle Version?
    Probier mal Projektmappe bereinigen, Rebuild All.
    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!
    @roepke Kannst Du mal probieren ein Projektchen zu erstellen, wo das nicht funktioniert und das mal posten?
    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!
    Dann nimm das Nichtfunktionierende und schmeiß alles schrittweise raus. Dann siehst Du irgendwann, woran es liegt - oder kannst es zumindest eingrenzen und berichten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.