-silent Parameter

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    -silent Parameter

    Meine Windows-Forms-Anwendung läuft in der Regel im Hintergrund, dass heißt mit einem Symbol im Tray. Standardmäßig wird das Programm mit der frmMain gestartet, mit dem Parameter -silent als Befehlszeilenargument soll das Programm aber direkt im Tray gestartet werden.

    Die Frage ist, wie mache ich das? Bisher lese ich die Argumente immer im Load-Event der Hauptform mit Environment.GetCommandLineArgs aus. Aber wenn ich in der Prozedur Me.Hide verwende, was ja nötig ist, wenn das Programm im Hintergrund laufen soll, dann passiert gar nichts :(

    edit: Außerdem ist das Load-Ereignis ja eigentlich zu spät... Die Form soll ja gar nicht erst geladen = angezeigt werden...

    Weiß jemand einen Lösungsvorschlag?
    Im Public Sub New WindowState auf Minimized stellen, Visible auf False und ShowInTaskbar auch auf False.

    VB.NET-Quellcode

    1. Public Sub New()
    2. 'BlaBlaBla
    3. InitializeComponents()
    4. 'BlaBlaBla
    5. Me.Visible = False
    6. Me.WindowState = WindowState.Minimized
    7. Me.ShowInTaskbar = False
    8. 'Optional:
    9. 'Me.FormBorderStyle = FormBorderStyle.None
    10. 'Me.Size = New Size(0, 0)
    11. 'Form versteckt, dann dein Code.
    12. End Sub
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...
    Öffne die Projekteinstellungen und klicke im tab Anwendung auf Anwendungsereignisse anzeigen. Dort im Code abonnierst du dann das StartUp-Event:

    VB.NET-Quellcode

    1. Private Sub MyApplication_Startup(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
    2. End Sub


    Dort bekommst du deine Start-Paramter direkt mit e.CommandLine geliefert.
    übrigens: kannst du im Designer nicht eifnach Visible=False setzen?

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vb-checker“ ()

    Dodo schrieb:

    Im form_load Ereignis gibts noch keine Form die gehidet werden kann, deswegen passiert auch nichts. Das Form_Shown wird ausgeführt wenn die Form angezeigt werden soll, wenn dort Hide einfügst verschwindet sie gleich.

    Gut, aber rein theoretisch ist die Form "blinkt" die Form doch dann kurz auf, oder? Das wäre äußert unschön...

    vb-checker schrieb:

    Öffne die Projekteinstellungen und klicke im tab Anwendung auf Anwendungsereignisse anzeigen. Dort im Code abonnierst du dann das StartUp-Event:

    Hast du 'nen Link zum Abonnieren, oder so? Klingt interessant, nur weiß ich nicht, wie ich dann weitermachen sollte...

    Luki-Progger schrieb:

    Im Public Sub New WindowState auf Minimized stellen, Visible auf False und ShowInTaskbar auch auf False.

    Das funktioniert wunderbar, danke dir :)

    Hilfsbedürftiger schrieb:

    Hast du 'nen Link zum Abonnieren, oder so? Klingt interessant, nur weiß ich nicht, wie ich dann weitermachen sollte...

    Du wählst oben überm Codeeditor in der linken Combobox "MyApplication-Ereignisse" aus und in der rechten dann Startup, dann wird dir der Code generiert. Da kannst du zum Beispiel dann sowas machen:

    VB.NET-Quellcode

    1. Partial Friend Class MyApplication
    2. Private Sub MyApplication_Startup(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
    3. Form1.ShowInTaskbar = False
    4. Form1.WindowState = FormWindowState.Minimized
    5. End Sub
    6. End Class

    Leider kann man die Startform nicht auf Nothing setzen, dann startet das Programm nicht.

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    @Hilfsbedürftiger: Ich hab mal alle Varianten hier durchgespielt, die Opacity auf 0 zu setzen halte ich für das einfachste.
    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!