Home » » VB.Net Fazla Proje Acmayı Engelleme
15 Ocak 2014 Çarşamba
undefined

VB.Net Fazla Proje Acmayı Engelleme


Bazen kullanıcı program çalıştırmaya yarayan kısayolu çift tıklarken hemen tepki almadığında sanki tıklama yapmamış gibi 2. kez tıklama yapabilir. Bu durumda aynı program 2. kez çalıştırılır. Bu gibi sorunların önüne geçmek veya hazırladığınız programın aynı oturumda aynı anda 2. kez çalıştırılmasını önlemek istiyorsanız Windows’un GlobalAddAtom, GlobalFindAtom ve GlobalDeleteAtom fonksiyonlarından yararlanabilirsiniz. Bu fonksiyonların Visual Basic’e uyarlanmış yapılarını aşağıda görebilirsiniz.

<DllImport("kernel32.dll")> _
Public Shared FunctionGlobalAddAtom(ByVallpString As String) As UShort
End Function

<DllImport("kernel32.dll")> _
Public Shared FunctionGlobalFindAtom(ByVallpString As String) As UShort
End Function

<DllImport("kernel32.dll")> _
Public Shared FunctionGlobalDeleteAtom(ByVallpString As UShort) As UShort
End Function

Tahmin edebileceğiniz Windows’un API adı verilen fonksiyonları .NET Framework ile gelen DLLImport adlı nitelikten yararlanılarak Visual Basic uygulamaları dahilinde kullanılmaktadır. Fonksiyonları bu şekilde deklare ettikten sonra projenin ilk formunun Load olayını temsil eden metodu aşağıdaki gibi düzenledim. Bu kodda önce GlobalFindAtom() fonksiyonu ile söz konusu programın daha önce çalıştırılıp çalıştırılmadığı araştırılıyor.

Private SubForm1_Load(ByValsender AsSystem.Object, ByVale AsSystem.EventArgs) Handles MyBase.Load
   Dimstr As String
   str = Application.ProductName + Application.ProductVersion
   DimAtom As UShort= GlobalFindAtom(str)
   IfAtom > 0 Then
      MessageBox.Show("Bu program zaten çalışıyor")
      Application.Exit()
   Else
     Atom = GlobalAddAtom(str)
End If
End Sub

Program veya proje daha önce çalıştırılmadıysa GlobalFindAtom() fonksiyonu geriye 0 gönde­receğinden programın çalışması engellenmez. Bu sırada GlobalAddAtom() fonksiyonu ile sistem programın çalıştırıldığı konusunda bilgilendirilir.



Program 2. kez çalıştırıldığında GlobalFindAtom() fonksiyonu geriye 0’dan farklı bir değer göndereceği için programın daha önce çalıştırıldığı mesajı verilip Application.Exit() ile programın çalışması sona erdirilir. Ancak bu durumda projenin çalışması sona erdirildiğinde sistemin bundan haberdar edilmesi gerekir. FormClosed olayını temsil eden metotta GlobalDeleteAtom fonksiyonu kullanılmazsa Windows yeniden başlatılana kadar aynı program tekrar çalıştırılamaz.

Private SubForm1_FormClosed(ByValsender AsObject, ByVale AsFormClosedEventArgs) Handles MyBase.FormClosed
DimStr As String
Str = Application.ProductName + Application.ProductVersion
Dimatom As UShort= GlobalFindAtom(Str)
GlobalDeleteAtom(atom)
End Sub

C# — FileStream ile dosya okuma

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

Fiyatı ve kdv’si girilen ürünün kdvli fiyatını hesaplama C# Console

Fiyatı ve kdv’si girilen ürünün kdvli fiyatını hesaplama C# Console    namespace kdvl...

C# — Xml dosyasının içeriğini datagridview’e aktarmak

Xml dosyasının içeriğini datagridview’e aktarmak C# Aşağıdaki xml dosyasını oluşturup veri.xml ...

C# — Picturebox’ı formun etrafında hareket ettirme

Picturebox’ı formun etrafında dolaştırma C# Aşağıdaki formu oluşturalım.(resim ekleme–> ...

C# — Bilgisayar kapatma programı

Bilgisayar kapatma programı C# using System; using System.Collections.Generic; using System....

C# — Dal Seçimi Programı

Dal Seçimi Programı C# using System; using System.Collections.Generic; using System.Comp...

 
Support : Vaganzi
Copyright © 2013. Visual Studio Kod Bankası - All Rights Reserved
Powered By Vaganzi