Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Çalışan uygulama açık ise uyarı versin.
#1
Herkese kolaylıklar diliyorum.

Bir konu hakkında yardım rica ediyorum.

Çalışan uygulamanın zaten arka planda çalışıp çalışmadığını kontrol etmek istiyorum. Yani kullanıcı daha önce açmış ve çalışıyor ise ikinci bir kez açtığında uygulama zaten açık demek istiyorum.

function processExists(exeFileName: string): Boolean;
var
 ContinueLoop: BOOL;
 FSnapshotHandle: THandle;
 FProcessEntry32: TProcessEntry32;
begin
 FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
 ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
 Result := False;
 while Integer(ContinueLoop) <> 0 do
 begin
   if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
     UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
     UpperCase(ExeFileName))) then
   begin
     Result := True;
   end;
   ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
 end;
 CloseHandle(FSnapshotHandle);
end;

Burda arka planda çalışan uygulamalarda olup olmadığını anlamak mümkün fakat bunu kontrol etmek için programı açmak gerekiyor ve açıldığında zaten yeni bir exe oluştuğu için herhalukarda açık diyor. ( Ana formunu create kısmında kontrol etmeyi denedim. Ama tabiki doğru bir yöntem değil)  

Nasıl bir yol izlemem gerekiyor.

Herkese şimdiden teşekkürler.
Cevapla
#2
procedure TForm1.FormCreate(Sender: TObject);
begin
//---------------------GLOBAL ATOM MUTEX ONLY 1 RUN START --------------
CreateMutex(nil,FALSE,'PROGRAMADI abc 1.00');
if GetLastError = ERROR_ALREADY_EXISTS then
 begin
  ShowMessage('Program zaten çalışıyor');
  Halt(0);
 end;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
Sem: THandle;
begin
Sem := CreateSemaphore(nil, 0, 1, 'PROGRAM_NAME');
if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then
begin
  CloseHandle(Sem);
  ShowMessage('Program Çalışmakda');
  Halt;
end;
end;   

Bunlardan birini deneyiniz.
__________________________
From Now I will only Reading.
Cevapla
#3
Bilgilendirme için çok teşekkür ederim. İşimi gördü. Sağolun.
Cevapla
#4
(30-12-2022, Saat: 10:47)Bay_Y Adlı Kullanıcıdan Alıntı: Bilgilendirme için çok teşekkür ederim. İşimi gördü. Sağolun.

Yanlış hatırlamıyorsam uygulama kapatırken Mutexi kapatmak lazımdı sanki. Oluşturduğunuz mutexin handle bir yerde tutun form close olayında close yapın yine de.
WWW
Cevapla
#5
Teşekkürler
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Modern Servis Uygulama İskeleti Tuğrul HELVACI 24 25.061 06-05-2026, Saat: 21:47
Son Yorum: frmman
Information Uygulama yönetici olarak mı çalışıyor? (runtime tespit etme) bakyuz 0 406 28-04-2025, Saat: 17:22
Son Yorum: bakyuz
  ekranda uyari ve mesaj gosterim sekilleri hk. sadikacar60 4 829 06-12-2024, Saat: 22:50
Son Yorum: sadikacar60
Question Uygulama güvenliği - USB Dongle koruma ve diğerleri engerex 46 40.366 19-09-2024, Saat: 16:02
Son Yorum: cinarbil
  Delphi7 Açık Kaynak Kodlu Projedeki Hata Hk. erdal51 5 1.150 13-09-2024, Saat: 08:11
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi