Start in tray

Status
Niet open voor verdere reacties.

michael64142

Gebruiker
Lid geworden
12 okt 2012
Berichten
71
Hi,

Een programma start samen met Windows op middels registry.

Hoe kan ik ervoor zorgen dat het programma dan opent in tray zonder dat je steeds een scherm van het programma ziet?
En kan ik ook dat als gebruiker programma zelf opent (dus niet samen met Windows), dat dan wel een scherm opent en het niet in tray is.
 
Je kunt de automatisch opstartende een commandline argument meegeven zoals:

prog -tray
of
prog -minimize

en zodoende laten weten dat gestart moet worden in tray modus. als je het programma met de hand start gebruik je dan de versie zonder argumenten.
 
Ik heb dus via het installatie programma (waarmee het programma geinstalleer word) aangegeven dat de key dus -tray erbij heeft.

In de registry zie ik nu dus de locatie (C:\blabla\bestand.exe) en daar achter -tray.
Helaas, het werkt niet want het progamma startte gewoon op buiten de tray om.

Ik gebruik wel eerst een laad scherm en dan pas de hoofdapp, en alleen de hoofdapp heeft een notifyicon.
 
Dat zul je dan in code op moeten lossen. Je hebt wel een "MAIN" handler gemaakt die "-tray" inleest en herkend? Het is niet iets wat de main routine zelf toevoegt. Daar in principe altijd eerst "MAIN" wordt aangeroepen hoeft het hebben van een splashscreen geen probleem te zijn
 
Ik heb zelf niks gemaakt met MAIN, heb zojuist wel gegoogled maar niet echt gevonden wat ik zocht om de -tray te gebruiken.

Gebruik ook maar simpele Windows Form.
 
Hoi,

Je moet dan bij het opstarten van je programma kijken of er commandline arguments zijn meegegeven bij het opstarten. Dat kan je bijvoorbeeld zo doen:
[CPP] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim CLA() As String = My.Application.CommandLineArgs.ToArray
For i As Integer = 0 To CLA.Count - 1 Step 1
If CLA(i) = "-tray" Then
''//verkleinen naar de tray
''//dit kan op meerdere manieren, dus hier kan je gewoon jouw manier invoegen.
ElseIf CLA(i) = "-minimize" Then
''//verkleinen naar de taskbar
Me.WindowState = FormWindowState.Minimized
End If
Next
End Sub[/CPP]

Even ter verduidelijking van de link van Wampier, die ik niet zo duidelijk vind.

MartinJM
 
Ik ben me bewust van de vaagheid van mijn link ;) In zoverre, dat bovenstaande methode inderdaad grotendeels hetzelfde doet, echter zal de applicatie dus eerst door de form initialisatie heen gaan. Als je dat echt wil vermijden en direct naar de tray wil, is de enige andere plaats waar je dat af kan vangen bij je "main" procedure. Er zijn geldige situaties waarbij je bovenstaande code niet wil gebruiken.

Hoewel iets vager, is de procedure uit mijn link slechts 6 regels meer code als je het eenmaal door hebt. Dat neemt niet weg dat jouw code voor veel situaties zal voldoen en ook een nette oplossing is.
 
Aha, ik was me hiervan niet bewust. Dan kan ik me inderdaad voorstellen dat de methode in de link inderdaad een voordeel heeft.

Veel dingen die je trouwens voor het laden van een form moet doen, kan je ook kwijt in de ApplicationEvents en dan het startup event. Daarin lukte het alleen niet om te zorgen dat het form niet alsnog ging laden.... Dus als je niet wil dat het form gaat laden, is de methode in de link inderdaad een betere.

Weer wat erbij geleerd! :)

MartinJM
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan