Arkadaşlar
Merhaba birden fazla oluşturduğum oluşturduğum exe ler var Bir tanesini ana menu gibi düşünün orda butonlar var her biri ayrı exe yi çalıştırıyo exe leri açmakta bir sorunum yok ama bir exe çalışıyosa onu tekrar çardığımda aynı exe bi de oluşturuyo fakat ben o formu açık ve minimize ise maximize etmesi ve aktif yapmasını istiyorum bunun için bir sayaç koymayı denedim ama olmadı butonlara bastığımda exe ilk çalışıyosa sayaç 1 değerini alıyor işte burda demek istediğimde sayaç1 den farklı ise o formu maximize et gibi....
VAR
S:integer=1;
path:string;
begin
path:=EDİT1.TEXT
if say=1 then begin
ShellExecute(handle, nil, (PChar(path)), nil, nil, SW_NORMAL);
say:=say+1;
end
else begin
ShellExecute(handle, nil, (PChar(path)), nil, nil, W_SHOWMAXIMIZED);
end;
end;
shellexecute fonksiyonu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
shellexecute fonksiyonu
En son cunsey tarafından 19 Mar 2004 01:32 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Selam...
- Öncelikle forum kurallarında tamamı büyük harf olan başlık/mesaj konusundaki hatırlatmamı yapmak isterim... Mesajınızın sağ üstünde göreceğiniz Edit Web butonuna basarak bunu düzeltiniz...
- Çözümünüze gelince;
1. (Bu satırı bize yardımcı olacak ek bilgi olarak kabul edin.)Windows her çalışan programa Handle adı verilen bir numara verir...
2. FindWindow( ) fonksiyonu ile bir programın çalışıp çalışmadığını (aslında penceresinin mecut olup olmadığını) öğrenebiliriz... Dönen değer ise o program penceresinin Handle numarasıdır.
3. Arama yaptırdığınızda bu Handle rakamı 0 (sıfır) ise henüz çalışmamıştır, siz rahatlıkla ShellExecute edebilirsiniz...
4. Bu handle rakamı bir değer dönerse o zaman program penceri mevcuttur, yapmanız gereken şey ise SetForegroundWindow( ) fonksiyonu ile bu pencereyi öne taşıyarak görünür kılarsınız...
- Şimdi bu anlattıklarımı örnekleyelim...
- Yukardaki örnekte hesap makinası çalıştırılır, varsa öne taşınır...
- Sizin programınızın EXE adını ProgAdi'na, bu program çalıştığında formunun sınıf adını ise WindowsAdi'na atayın...
- Yok ben bilemem formun başlığını (Form Caption) aracılığıyla bulucam derseniz o zaman o satırdaki Nil ile PChar()'ı aşağıdaki şekilde yer değiştirin...
- Sonra da WindowsAdi değişkenine çalıştıracağınız EXE'nin çalışınca çıkacak form başlığını yazın. Sonuçta bulunması gereken bir referans lazım. Bu ya Sınıf Adı (Class Name) ya Form Başlığı (Form Caption) veya her ikisi de olmalıdır..
- Öncelikle forum kurallarında tamamı büyük harf olan başlık/mesaj konusundaki hatırlatmamı yapmak isterim... Mesajınızın sağ üstünde göreceğiniz Edit Web butonuna basarak bunu düzeltiniz...
- Çözümünüze gelince;
1. (Bu satırı bize yardımcı olacak ek bilgi olarak kabul edin.)Windows her çalışan programa Handle adı verilen bir numara verir...
2. FindWindow( ) fonksiyonu ile bir programın çalışıp çalışmadığını (aslında penceresinin mecut olup olmadığını) öğrenebiliriz... Dönen değer ise o program penceresinin Handle numarasıdır.
3. Arama yaptırdığınızda bu Handle rakamı 0 (sıfır) ise henüz çalışmamıştır, siz rahatlıkla ShellExecute edebilirsiniz...
4. Bu handle rakamı bir değer dönerse o zaman program penceri mevcuttur, yapmanız gereken şey ise SetForegroundWindow( ) fonksiyonu ile bu pencereyi öne taşıyarak görünür kılarsınız...
- Şimdi bu anlattıklarımı örnekleyelim...
Kod: Tümünü seç
Var
WindowsNumarasi : THandle;
WindowsAdi : String;
ProgAdi : String;
begin
WindowsAdi := 'SciCalc';
ProgAdi := 'Calc.exe';
WindowsNumarasi := FindWindow(PChar(WindowsAdi), Nil);
If IntToStr(WindowsNumarasi) = '0'
then WinExec( pChar(ProgAdi) , SW_MAXIMIZE)
else SetForegroundWindow(WindowsNumarasi);
end;
- Sizin programınızın EXE adını ProgAdi'na, bu program çalıştığında formunun sınıf adını ise WindowsAdi'na atayın...
- Yok ben bilemem formun başlığını (Form Caption) aracılığıyla bulucam derseniz o zaman o satırdaki Nil ile PChar()'ı aşağıdaki şekilde yer değiştirin...
Kod: Tümünü seç
FindWindow(Nil, PChar(WindowsAdi));
Re: shellexecute fonksiyonu
Abi verdigin kodu çalıştıramadım birde şöyle açıklıyım ben formun içinde açmak istiyorum exe'yi formu kapatınca içinde çalışan exe'de kapanacak o yüzden , yardımcı olursanız sevinirim.