Programın 1 tane çalışması..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Programın 1 tane çalışması..
Arkadaşlar ben programımdan 1 tane çalışmasını istiyorum yani çalıştığı anda tekrar çift tıkladığımızda zaten çalışıyor demesini istiyorum.
Createmutex ile yaptım ancak mesala bilgisayarımda 2 tane kullanıcı var bunu kapatmadan kullanıcı değiştir ile diğer oturuma girip programımı çalıştırabiliyorum. Bunu nasıl engellerim?
Yardımlarınız için teşekkürler.
Createmutex ile yaptım ancak mesala bilgisayarımda 2 tane kullanıcı var bunu kapatmadan kullanıcı değiştir ile diğer oturuma girip programımı çalıştırabiliyorum. Bunu nasıl engellerim?
Yardımlarınız için teşekkürler.
Re: Programın 1 tane çalışması..
Ana form create de
Kod: Tümünü seç
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 şu an da çalışıyor, Kontrol ediniz..');
Halt;
end;
Bir kelimenin anlamını öğretsen bile yeter..



Re: Programın 1 tane çalışması..
yok kardeş aynı oturumdan deneyince çalışıyorda, burdaki oturumu kapatmadan başka oturuma geçiyorum yani başka kullanıcıya geçiyorum açılıyor sorunsuz. 

Re: Programın 1 tane çalışması..
oturumlar birbirinden bağımsız çalışır. bir oturumdan diğerine müdahle edemeyeceğiniz için bunu da engellemeyezsiniz diye düşünüyorum.
Re: Programın 1 tane çalışması..
yapanı gördüm + ilave olarak process explorer diye bir program var onunla bütün oturumlarda çalışan programları listeliyor. buda demek oluyorki müdahaleden fazlası yapılıyor.
Yardımlarınızı bekliyorum...
Yardımlarınızı bekliyorum...
Re: Programın 1 tane çalışması..
Task Manegar da gösteriyor.
Buradan belki Kill edersiniz öncekini.
Buradan belki Kill edersiniz öncekini.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Programın 1 tane çalışması..
çalışan processleri tara aynı isimde çalışan process var ise terminate et.
kolay gelsin...
Kod: Tümünü seç
var
ExeName: string;
MyHandle: Thandle;
Struct: TProcessEntry32;
begin
ExeName := 'Program exe ismi';
MyHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize := Sizeof(TProcessEntry32);
while Process32Next(Myhandle, Struct) do
begin
if AnsiContainsStr(UpperCase(Struct.szExeFile), UpeerCase(ExeName)) = true then //Exe ismine bakalım
begin
ShowMessage('Program açık durumda');
ExitProcess(0);
Break;
end;
end;
kolay gelsin...
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...
http://www.tcct.us
Re: Programın 1 tane çalışması..
Teşekkür ederim.. Kodu şu şekilde düzenledim ve sorunsuz çalışıyor çok sağol.
Kod: Tümünü seç
var
ExeName: string;
MyHandle: Thandle;
Struct: TProcessEntry32;
kopek:integer;
begin
kopek:=0;
ExeName := 'Project1.exe';
MyHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize := Sizeof(TProcessEntry32);
while Process32Next(Myhandle, Struct) do
begin
if AnsiContainsStr(UpperCase(Struct.szExeFile), UpperCase(ExeName)) = true then //Exe ismine bakalım
begin
kopek:=kopek+1;
if kopek > 1 then begin
ShowMessage('Program açık durumda');
ExitProcess(0);
Break;
end;
end;
end;
Re: Programın 1 tane çalışması..
sora sora bağdat bulunur misali sora sora bitirecen programı. 

Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...
http://www.tcct.us
Re: Programın 1 tane çalışması..
USES kısmına eklenenmesi gereken bir sınıf var mı?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Programın 1 tane çalışması..
uses TlHelp32, StrUtils;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Programın 1 tane çalışması..
Merhabalar bu kodları kullanıyorumda şimdi burada bir açık var adam exe ismini değişip açabiliyor program oto exe ismini kontrol etsin yapamazmıyız?
Re: Programın 1 tane çalışması..
o zaman exenin ismini manuel yazmak yerine
komutu ile al ve değişkene ata
Kod: Tümünü seç
ExtractFileName(Application.ExeName)
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Programın 1 tane çalışması..
Kod: Tümünü seç
var
ExeName: string;
MyHandle: Thandle;
Struct: TProcessEntry32;
kopek:integer;
begin
kopek:=0;
ExeName := 'Project1.exe';
MyHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize := Sizeof(TProcessEntry32);
while Process32Next(Myhandle, Struct) do
begin
if AnsiContainsStr(UpperCase(Struct.szExeFile), UpperCase(ExeName)) = true then //Exe ismine bakalım
begin
kopek:=kopek+1;
if kopek > 1 then begin
ShowMessage('Program açık durumda');
ExitProcess(0);
Break;
end;
end;
end;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Programın 1 tane çalışması..
İp ucu..:
satırına müdaheleniz yeterli olacaktır..
Kod: Tümünü seç
ExeName := 'Project1.exe';
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .