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
  Askıya alınan uygulama mcuyan 9 467 04-03-2024, Saat: 19:58
Son Yorum: mcuyan
  Çalışan Exe Formuna Müdahale Etmek SercanTEK 4 312 01-03-2024, Saat: 22:51
Son Yorum: SercanTEK
  EnumWindows apisi sadece çalışan uygulamalar kofmaster 1 1.665 26-08-2023, Saat: 10:40
Son Yorum: veteran
  Açık Kalma Süresi yhackup 3 543 21-06-2023, Saat: 13:52
Son Yorum: yhackup
  Hızlı çalışan server Firebase, Udp, Tcp, MQTT 41linea41 5 1.526 18-06-2022, Saat: 11:46
Son Yorum: 41linea41



Konuyu Okuyanlar: 1 Ziyaretçi