Forum
merhaba
visual basic 2010 daki bir uygulamayla ilgili sorunum var. çıkış butonuma me.hide() komutu kullanıyorum. bu komutu kullanmak istememin nedeni ise kiosk.exe adındaki dosyayı çalıştırdığımda programı arka planda çalışmasını sağlamak içindir. kiosk.exe dosyasını tekrar çalıştırdığımda görev yöneticisinde iki tane kiosk.exe dosyası görüyorum. form1 load olayına me.show() komutunu kullanmama rağmen önceden çalışan uygulamayı çalıştıramadım. bu konuda yardımcı olabilir misiniz acaba
teşekkürler,
Exe'yi çalıştırırken bir örneğinin açık olup olmadığını kontrol edersin, eğer başka bir örneği açıksa, mevcut exe'yi kaparsın.
Kontrol için : Process.GetProcessByName(your exe process name); metodunu
Uygulamayı kapatmak için de : Application.Exit(); 'i kullanabilirsin.
Örnek :
Imports System.Diagnostics
Module SingleInstance
'Entry point for the application. Main checks for a prior instance and closes
'this one if it finds a prior one running.
Public Sub Main()
If CheckForDuplicateProcess("MyAppName") Then
Dim dupProcess As String
dupProcess = "There is another instance of MyAppName" & _
" running on this machine." & vbCrLf & _
"This new instance must close." & vbCrLf & vbCrLf & _
"Only 1 instance of MyAppName can exist" & _
" on a machine." & vbCrLf & vbCrLf
MsgBox(dupProcess, MsgBoxStyle.Critical, "Duplicate Process Detected")
Application.Exit()
Else
'*** Change The FormName Below **
'Change the name of the form to load, to the one
'applicable for your application
Application.Run(New MainForm)
End If
End Sub
'Determines if there already is a 'processName' running in the local host.
'Returns true if it finds more than 'one processName' running
Private Function CheckForDuplicateProcess(ByVal processName As String) As Boolean
'function returns true if it finds more than one 'processName' running
Dim Procs() As Process
Dim proc As Process
'get ALL processes running on this machine in all desktops
'this also finds all services running as well.
Procs = Process.GetProcesses()
Dim count As Integer = 0
For Each proc In Procs
If proc.ProcessName.ToString.Equals(processName) Then
count += 1
End If
Next proc
If count > 1 Then
Return True
Else
Return False
End If
End Function
End Module