Controleren of programma al actief is en oudere instanties sluiten

Status
Niet open voor verdere reacties.

markpc

Gebruiker
Lid geworden
28 jan 2013
Berichten
93
Hallo,

Ik heb een klein probleempje waar ik zelf niet echt uitkom. Ik heb een programma gemaakt met VB 2010 en deze heeft de mogelijkheid om tijdens het opstarten van de computer als een systeemvakicoon te draaien. Echter, wanneer je dan terwijl het systeemvakicoon draait het buareaubladicoontje aanklikt, krijg je twee "instanties" en twee systeemvakicoontjes van het programma.

Wat ik dus graag voor elkaar wil krijgen is dat het programma tijdens het opstarten controleert of er nog een andere instantie van het programma draait, deze afsluit en het hoofdmenu van het programma opent.

Ik heb deze code al gebruikt om te controleren op meerdere instanties:
Code:
Dim instanceCount As Integer = Process.GetProcessesByName("ProgrammaNaam").Count()
If instanceCount > 1 Then

En hierna moet dan de andere instantie gesloten worden. Ik dacht aan zoiets, maar dat sluit alle instanties, dus dat helpt ook niet.
Code:
For Each Process As Process In processid
Process.Kill()
Next
'Start een nieuwe instantie
Shell(System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) & "ProgrammaPad")

Ik hoop dat iemand mij kan helpen, ik heb niet heel veel verstand van VB, vind ik zelf...
 
Waarom niet gewoon de bestaande activeren in plaats van een nieuwe opstarten?
 
Daar heb ik oorspronkelijk ook aan gedacht, maar ik zou niet weten hoe ik die (in systeemvak modus) kan activeren zodat hij als een normaal venster verschijnt. De bedoeling is dat de bestaande instantie een seintje krijgt dat hij als een normaal venster moet verschijnen en de nieuwe instantie gesloten wordt. Geen idee hoe ik dit in coee om moet zetten.

Ik weet dus niet hoe je tussen twee instanties van hetzelfde programma kunt "communiceren".
 
Je kunt tijdens het bouwen van je app instellen dat het een "single instance application" is.

Vervolgens maak je in je app een event voor: "StartupNextInstance". in deze event laat je je originele scherm zien, zelfde als je waarschijnlijk al hebt gebouwd voor je tray icon
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan