Python ile bir uygulama açık ise bu uygulama zaten çalışıyor mesajı veren program

Merhabalar, python ile ilgili yazmak istediğim şey tam olarak başlıktaki gibi. Kullanıcı aynı uygulamayı 1 den fazla açamasın. Eğer uygulama çalışıyorsa bir messagebox verebilir uygulama zaten çalışıyor lütfen bekleyiniz diye. Aklıma gelen bin türlü yolu denedim, ama sonucu hep hüsran…

Şöyle bir şey yardımcı olur mu?

Bu kodu inceledim ama açıkçası tam olarak anlayamadım, açıklayabilme şansın olur mu?

# Import module
import wmi

# Initializing the wmi constructor
f = wmi.WMI()
flag = 0

# Iterating through all the running processes
for process in f.Win32_Process():
    if "chrome.exe" == process.Name:
        print("Application is Running")
        flag = 1
        break

if flag == 0:
    print("Application is not Running")

Alıntı

Orada da wx adlı bir modül kullanılarak sınıf yöntemi şeklinde kullanıcı kodlamış biraz bakınca evet karmaşık gözüküyor üstte alıntıladığım kodla hemen hemen aynı işlevlere sahip gibi (sanırım wx modülü bir GUI)
Öncelikle pip install wmi diyerek modülü yükleyin ardından alıntıladığım kodu çalıştırın

Standart yontem: /run altina bir adet dosya koyup (e.g. /run/bir_uygulama.pid) icine de PID’ini yaziyorsun. Cikista siliyorsun. O dosya varsa ve icindeki PID calisan bir process’e aitse (veya senin process’ine aitse) uygulama zaten calisiyordur.

1 Beğeni

Dediğinize bakılırsa python bilgim çok yetersiz böyle bir program için çünkü dediğiniz hiçbir şeyi anlamadım. Galiba biraz daha araştırma yapıp kendim denesem daha doğru olacak, teşekkürler

PID = process id (os — Miscellaneous operating system interfaces — Python 3.9.6 documentation)
Calisan process’e bakmak icin /proc/{pid} directory’sini kullanabilirsin.

20:41:55 0 aib@vivaldi:~% python3
Python 3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getpid()
410539
>>> 

//

20:42:06 0 aib@vivaldi:~% cat /proc/410539/cmdline 
python3%