Görev Yöneticisinden görev ismini nasıl alırız?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Sencer
Üye
Mesajlar: 32
Kayıt: 01 Nis 2007 05:30

Görev Yöneticisinden görev ismini nasıl alırız?

Mesaj gönderen Sencer »

arkdaşlar görev yöneticisinde xx.exe çalışma sırasında görev çubuğunda çıkan ismi nasıl alabiliriz
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

uses tlhelp32

Kod: Tümünü seç

var
     devam: BOOL;
     fyakhandle: THandle;
     islem32   : TProcessEntry32;
begin
     s.Clear;
     fyakhandle    :=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     islem32.dwSize:=Sizeof(islem32);
     devam         :=Process32First(fyakhandle,islem32);
     while integer(devam)<>0 do begin
         //Listeye çalışan exe dosyaları ekleniyor.
         S.Items.Add(islem32.szExeFile);
         devam:=Process32Next(fyakhandle,islem32);
     end;
     CloseHandle(fyakhandle);
end;
Sencer
Üye
Mesajlar: 32
Kayıt: 01 Nis 2007 05:30

Mesaj gönderen Sencer »

açıklama yapabilirmisin anlayamadım
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Sencer yazdı:açıklama yapabilirmisin anlayamadım
uses kısmına tlhelp32 ekle;
bi tane listbox ekle ve ismini s yap
bi tane de button ekle ve onclik olayına arkadaşın yazdığı kodu yaz.
koddan Anladığım bu :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@White Rose satır arasında yazmış aslında ama yine de bir cümle harici açıklama eklese daha anlaşılır olurmuş. Gönderdiği kod "Görev Yöneticisindeki" çalışan dosyaların dosya isim listesini getirir.

- Sizin istediğiniz ise başlıkları. Bunları çalışan kendi programın Handle nosundan başlayan bir döngü ile aktif pencereleri sayarak bulabilirsin. Yani aşağıdaki kod sana yardımcı olacaktır.

Kod: Tümünü seç

Procedure CalisanListesi(Hand : HWnd; Liste:TStrings);
var
  Title,
  ClassName : array[0..255] of char;
begin
  while Hand > 0 do
  begin
    if IsWindowVisible(Hand) then
    begin
      GetWindowText(Hand, Title    ,255);
      GetClassName (Hand, ClassName,255);
      Liste.Add( Format('%8d : %s ( %s )', [Hand, String(Title), String(ClassName)] ) );
    end;
    Hand:=GetnextWindow(Hand,GW_HWNDNEXT);
  end; // While
end;
// Çalışması

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  CalisanListesi( Application.Handle, ListBox1.Items );
end;
Resim
Resim ....Resim
Sencer
Üye
Mesajlar: 32
Kayıt: 01 Nis 2007 05:30

Mesaj gönderen Sencer »

beyler sağolun kodlar doğru ama ben dışarda bi program çalışıtrıyoum xx.exe diye bu xx.exe nin görev çubuğundaki ismini alıp ona harf yazdırcam anlamışsınızdır yapmak istediğimi
Sencer
Üye
Mesajlar: 32
Kayıt: 01 Nis 2007 05:30

Mesaj gönderen Sencer »

arkdaşlar saolun çözdüm sorunumu
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Sencer yazdı:arkdaşlar saolun çözdüm sorunumu
nasıl çözdüğünüzü yazmak bir forum etiğidir. böylece ilerde buna ihityacı olanlar tekrar konu çamdan bulabilirler. lütfen bu konuya dikkat ediniz. burası bilgiye erişim bir bir kaynak olsun ve bilgi hep artsın
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

mrmarman yazdı:@White Rose satır arasında yazmış aslında ama yine de bir cümle harici açıklama eklese daha anlaşılır olurmuş. Gönderdiği kod "Görev Yöneticisindeki" çalışan dosyaların dosya isim listesini getirir.

- Sizin istediğiniz ise başlıkları. Bunları çalışan kendi programın Handle nosundan başlayan bir döngü ile aktif pencereleri sayarak bulabilirsin. Yani aşağıdaki kod sana yardımcı olacaktır.

Kod: Tümünü seç

Procedure CalisanListesi(Hand : HWnd; Liste:TStrings);
var
  Title,
  ClassName : array[0..255] of char;
begin
  while Hand > 0 do
  begin
    if IsWindowVisible(Hand) then
    begin
      GetWindowText(Hand, Title    ,255);
      GetClassName (Hand, ClassName,255);
      Liste.Add( Format('%8d : %s ( %s )', [Hand, String(Title), String(ClassName)] ) );
    end;
    Hand:=GetnextWindow(Hand,GW_HWNDNEXT);
  end; // While
end;
// Çalışması

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  CalisanListesi( Application.Handle, ListBox1.Items );
end;

Kod: Tümünü seç

 if IsWindowVisible(Hand) then
ibaresini koddan çıkarıca ortaya ilginç şeyler çıkıyor :D
Cevapla