Forum

ikinci uygulama
 
Bildirimler
Hepsini Temizle

ikinci uygulama

2 Yazılar
2 Üyeler
0 Reactions
442 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

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,


 

 
Gönderildi : 31/01/2011 12:29

(@ferhatkaratas)
Gönderiler: 100
Estimable Member
 

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

 

 
Gönderildi : 01/02/2011 15:16

Paylaş: