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;
procedure TForm1.Button1Click(Sender: TObject);
begin
if processExists('Project1.exe') then
ShowMessage('Program çalışıyor')
else
ShowMessage('çalışmıyor');
end;
procedure TMainForm.Button2Click(Sender: TObject);
var
X: HWND;
begin
X := FindWindow('notepad', nil);
if X < 1 then
begin
PostMessage(X, WM_KEYDOWN, VK_RETURN, 0);
PostMessage(X, WM_KEYUP, VK_RETURN, 0);
Caption := IntToStr(X);
end
else
begin
Caption := '1';
end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Neden yanlış bilgi veriyorsunuz program çalışıyorsa Handle numarası döner çalışmıyorsa 0 döner. Peki 0 döndü diyelim bütün programlar için 0 dönecek anlamına geliyor peki biz unique bir tutamaça sahip değilsek aradıgımız pencereye nasıl işlem yaptıracağız ??
Ayrıca verdiğiniz kodla notepad a yazdıramazsınız notepad in handle buldukdan sonra bir kez daha FindWindowEx ile bulunan Handle da 'Edit' class' ını aramanız gerekir.
anonymousdelphicoder yazdı:Neden yanlış bilgi veriyorsunuz program çalışıyorsa Handle numarası döner çalışmıyorsa 0 döner. Peki 0 döndü diyelim bütün programlar için 0 dönecek anlamına geliyor peki biz unique bir tutamaça sahip değilsek aradıgımız pencereye nasıl işlem yaptıracağız ??
Ayrıca verdiğiniz kodla notepad a yazdıramazsınız notepad in handle buldukdan sonra bir kez daha FindWindowEx ile bulunan Handle da 'Edit' class' ını aramanız gerekir.
İyi günler.
Saygısızlık yapma yanlış anlamış olabilirim, ne diye yanlış bilgi vereyim.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Tabi siz haklisiniz ben saygisiz oluyorum! Nerede gorulmus FindWindow un 0 donderince programin calistigini?? ustune laf carpitip beni ezmeye calisiyorsunuz oyleyse anlamadan cevap vermeyin yazdiklarinizi kontrol ediniz
anonymousdelphicoder yazdı:Tabi siz haklisiniz ben saygisiz oluyorum! Nerede gorulmus FindWindow un 0 donderince programin calistigini?? ustune laf carpitip beni ezmeye calisiyorsunuz oyleyse anlamadan cevap vermeyin yazdiklarinizi kontrol ediniz
kolay gelsin
Sizler gibi bir kaç kişi yüzünden formun tanı kaçtı, brs arkadaşımız yardımcı olmaya çalışmış, yanlış da anlamış olabir, uslubunuz bence çok yanlış yetmemiş (anlamadan cevap vermeyin yazdiklarinizi kontrol ediniz) yazarak saçmalığınıza saçmalık katmışsınız...
Forumun tadını kaçıranlardan birisi olarak ben de müdahil olayım madem; @anonymousdelphicoder arkadaşım konuya cevap veren arkadaşımızı kırmak için yazmamış ancak o şekilde anlaşılmış sanırım. Bu anlayışta kırıcı bir üslup ile yanıta dönmüş, bu şekilde sohbet daha da kırıcı olmaktan öteye gidemez.
Gelgelelim söylenenlere; evet çözüm paylaşmaya çalışmanız, yardımcı olma gayretiniz takdire şayan ve asil bir davranış; lâkin paylaşılan çözümlerin de mümkün mertebe hatadan berheva olması gerekli; sunulan çözümü öğrenmeye nefretle bakan bir toplum olduğumuz için, hayatının sonuna kadar kopyala yapıştır ile kullanacak kardeşlerimiz olduğu için; en azından doğru bilgilendirmeye gayret etmemiz iyi olur. Bu bizler için de bilmediklerimizi öğrenmek için bir fırsat olabilir. Biraz daha özenle cevap vermeye çalışmak hepimize fayda sağlar.
Soruya gelince; soruyu soran arkadaşımıza bir sorum olacak; "sevgili kardeşim sen ne yapmaya çalışıyorsun ?". Sorduğun sorunun başlığından hiçbirşey anlaşılmıyor, benzer başlığa sahip iki ayrı konun var ve bir konunun altında çözüme ulaştığını anlıyoruz. Ardından da bu konu geliyor.. Bu da ne yapmak istediğine dair kafalarda soru işareti oluşturuyor.
sormak istedigim programda 2 formum var ana form ve form2 program çalışıyor , fakat ben
programı parametreyle açarsam ikinci bir ana form degilde açık olan program form2 dönsün istiyorum
O zaman uygulamanın proje dosyasının kaynak kodunu açacaksınız ve ParamCount ve ParamStr nin değerlerine göre hangi formu create edeceğinize karar vereceksiniz demektir.
@thelvaci,
Bence sizin uyarınıza rağmen hala kötü sorulmuş bir soru.
carsoft yazdı:sormak istedigim programda 2 formum var ana form ve form2 program çalışıyor , fakat ben
programı parametreyle açarsam ikinci bir ana form degilde açık olan program form2 dönsün istiyorum
Eğer soruyu sizin dediğiniz gibi anlarsak verdiğiniz ipucu (ki neredeyse cevap) yeterli. Ama ben biraz daha farklı anladım. Benim anladığım da şu:
Programda iki tane form var: Ana form ve Form2. Kabul edelim ki program çalışıyor. Kullanıcı programı bir kere daha çalıştırdı, ama bu sefer parametre ile çalıştırdı. Böyle bir durumda program ikinci kez açılmasın, çalışmakta olan instance Form2'yi göstersin (gerekiyorsa Ana Form'u saklasın, bu kısım bence de biraz belirsiz).
Benim anladığım şekliyle sorulmuşsa diğer başlıkta @anonymousdelphicoder daha farklı bir cevap vermiş. Konuya oradan devam etmek daha iyi olur. Hem bu başlıktaki tatsız gerginlik de devam etmez
"Neden yanlış bilgi veriyorsunuz" ve "oyleyse anlamadan cevap vermeyin" Bu üsluplar doğru bulmuyorum azarlar gibi, elimden geldiğince yardımcı olmaya çalışıyorum, soruyu yanlış anlamış olabilirim ama asla saygısızlığa tahammül etmem.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Ben de hala beklemedeyim, sorunsuz çalışan bir kod yazılsın diye.
Program güncelleme kısmında kullanıyorum benzerini, ama bazı platformlarda çuvallıyor (mesela win10)
Ana programı kontrol edecek çalışıyor mu diye, çalışıyorsa kapatma uyarısı verip kapatacak, ardından güncel sürümü indirip zip dosyayı açacak.