Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Martin Krejčí:17.3.2019 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.3.2019 19:00
 
Odpovědět
17.3.2019 18:58
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:17.3.2019 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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.3.2019 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.