Black friday Black friday
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Avatar
Martin Krejčí:17. března 18:58

Zdravím,
mám tenhle VB kód aby se spustil pouze jeden proces aplikace:

Dim p() As Process
        p = Process.GetProcessesByName("Launcher")
        If p.Count > 1 Then
            End
        End If

Zajímá mě:

  1. Když bude v PC běžet úplně jiná aplikace se stejným názvem "Launcher", jak jednoznačně identifikovat tu mojí (vím, že se asi dá použít GUID, ale absolutně nevím jak, učím se "za pochodu")?
  2. Aplikace je Windows Forms (zastaralé, ale WPF neumím) - prý není dobré používat End u formulářových aplikací. Je to pravda? Čím nahradit (Application.Exit nefunguje)?

Zkusil jsem: Nemůžu použít Single instance volbu ve Visual Studiu - ta vyžaduje, aby spouštěcím prvkem byl formulář, ale já spouštím formulář (splashscreen) až když proběhne nějaký kód předtím.

Chci docílit: Aplikace zkontroluje, zda již není spuštěna, pokud ne pokračuje další kód. Aplikace by neměla být zaměněna s jinou aplikací se stejným názvem procesu ("Launcher.exe")

Editováno 17. března 19:00
 
Odpovědět 17. března 18:58
Avatar
krepsy3
Redaktor
Avatar
krepsy3:17. března 20:37

Ahoj, toto se běžně dělá pomocí tzv. Mutexu a a mutexového klíče. Tady na itnetworku je tutoriál pro C#, najdeš jej v sekci c# pro pokročilé. Netuším ale jak složité by bylo adaptovat jej pro VB, takže by sis to musel zjistit. Teď už ale znáš pojem Mutex, takže googlit nebude problém :)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 17. března 20:37
Programátor je stroj k převodu kávy na kód.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.