Wie soll ich vorgehen - Schliessen einer Form

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Derfuhr.

    Wie soll ich vorgehen - Schliessen einer Form

    Hallo Leute,

    Wie würdet ihr vorgehen wenn ihr ein Fenster, dass am Tag 10 mal erscheint, einfach "wegklicken" möchtet?

    Wie ich eine Form "ausfindig" mache und schließe weiß ich. --- allerdings Frage ich mich wie ich nun (m)ein Programm schreiben kann, welches keinen Fokus meiner Maus oder sonstiges nimmt.
    Soll heißen: Ich bin gerade am tippen und möchte dem Fenster keine Möglichkeit geben in die vordere Ebene zu kommen.

    Geht das überhaupt, oder gibt Windows generell einer "ausgewählten" Form die "höchste" Priorität?
    "Ausgewählt" in Anführungszeichen weil ich es ja nur kurz hervorhebe zum schließen.

    Ich hoffe ihr versteht meine Problematik, diesem Fenster keine Priorität mehr zu geben, da die Nachricht, meines Erachtens, unnötig ist.

    Grüße,
    Drahuverar
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Drahuverar“ ()

    @backtothetoast
    rly :)
    @Drahuverar
    ist diese Form den immer den selben Prozess zugeordnet ?
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Kannst du die Benachrichtigung nicht einfach abschalten?

    edit:
    @backtothetoast
    wtf?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @BlackNetworkBit
    Ja, es handelt sich hierbei um ein ChildWindow (vermute ich mal) von MS Outlook (Beim Starten und während das Programm am laufen ist [es handelt sich hierbei um ein Zertifikats hinweis])

    @Schamash
    Habe schon nachgesehen, es gibt etliche Forumsbeiträge, aber alle "ungelöst"

    @Gonger96
    Es poppt in der Regel bei starten von MS Outlook und dann sporadisch.

    Nervt halt manchmal, wenn man am tippen ist und plötzlich die Box erscheint -- Manchmal verliere ich mein Fokus und die Box erscheint direkt auf der "höchsten" Ebene von Windows (Ebene Z glaube ich?).
    Option Strict On!
    Wenn das Fenster nicht Titellos ist, könntest du ständig mit GetActiveWindow oder GetForeGroundWindow das Fenster im Vordergrund ermitteln, mit GetWindowText den Fenstertitel auslesen und wenn der übereinstimmt, mit SendMessage ein WM_Close senden zum schliessen, oder es mit DestroyWindow killen.

    Drahuverar schrieb:

    während das Programm am laufen ist
    Gibt es da noch was, was Du uns mitteilen solltest?
    Wenn die Form angezeigt wird untersuch sie mal mit Spy++.
    Name, Parent usw.
    Du könntest Timer-gesteuert alle offenen Fenster durchklicken und wenn Du dieses findest, per API.SendMessage() oder so schließen.
    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!
    @Derfuhr
    Leider hat dieses Fenster den folgenden Text "Sicherheitshinweis" -
    würde mir ungerne alle Fenster, die so heißen, abschießen. (Falls ich mal ein Sicherheitshinweis von einer anderen Software erhalte.)

    @RodFromGermany
    Während mein Outlook am laufen ist bekomme ich ab und an eine Nachricht das dieser Server nicht Zertifiziert sei, was i.O ist. Ich klicke seit 2 Jahren diese Fenster zu ^^
    Deswegen hab ich gedacht das ich mal noch fauler werde. :)

    API.SendMessage -> Gibt es hierzu schon einen Beitrag im Forum? Hauptsache das Fenster wird nicht in den Vordergrund genommen und ich kann ungestört arbeiten.
    Oder hast du evtl. ein Beispiel parat?

    Ich werde mich mal damit beschäftigen, vielleicht kann ich ja meine Fragen selbst beantworten -
    Danke.
    Option Strict On!

    Drahuverar schrieb:

    Gibt es hierzu schon einen Beitrag im Forum?
    Oben rechts ist ein Fenster, da steht drin "Suchbegriffe eingeben".
    Dort schreib rein SendMessage.
    Ist allerdings eine ganze Menge Holz dort.
    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!
    So kannst du z.B. deine eigene Form mit SendMessage schliessen.

    VB.NET-Quellcode

    1. <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    2. Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    3. End Function
    4. Const WM_CLOSE = &H10
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. SendMessage(Me.Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
    7. End Sub