folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# 'Ta Aktif Olaran Programın Başlığı Çekmek



C# 'Ta Aktif Olaran Programın Başlığı Çekmek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    şimdi konunun başlığı biraz garip oldu farkındayım ama projemde şöyle bişi lazım 

    pc de a,b,c,d,e,f titleına sahip programlar çalışıyor  

    benim programımın  kullanıcı sadece seçtigim programları aktif olarak kullanırken benim programımın çalışmasını istiorum 

    mesela 10 tane site açık adamda tahribata girince benim program aktif olsun aynen oaly bu

    aktif olarak kullanılan programın title ı nasıl çekerim

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    olayı çok dağınık anlatmışsın, fakat c# kullanarak seçtiğin processin titleini almak istiyorsan.

    using System.Diagnostics; i kullanarak

     

    Process[] myprocess= Process.GetProcessesByName("notepad");
                foreach (Process gettitle in myprocess)
                {
                    MessageBox.Show(gettitle.MainWindowTitle);
                }

     

    kodlarıyla yapabilirsin.

    notepad yaptım. fakat sen onu "GetProcesses" gibi bir metot kullanarak geliştirebilsin.

    2. dediğin olay

    notepaddan gidiyorum. eğer notepad açıldıktan sonra notepadın titleını çekmek istiyorsan bir timer fonksiyonu ile sürekli notepadın açık olup olmadıgını kontrol ederek yapabilirsin.

     

    verdiğim koda göre

    /* kontrolü yaptığın bloğa yaz */

    Process[] myprocess = Process.GetProcessesByName("notepad");

                if (myprocess.Length != 0)
                {

    // burada processi saptadıktan sonra yaptırmak istediklerini yaz.

                    foreach (Process gettitle in myprocess)
                    {
                        MessageBox.Show(gettitle.MainWindowTitle);
                    }
                   
                }
                else
                {
                    label1.Text = "process not active yet";
                   
                
                }

    şeklinde yaparsın.

    kolay gelsin

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    öncelikle teşekkürler aradığım şey bu fakat bunun üstünde biraz değişiklik yapmam lazım

    Process[] myprocess= Process.GetProcessesByName("notepad");

    burada bir program deilde bütün programlar için olması için napmam lazım

    eğer bütün programlar için mümkün deilse burda tek satıra 4,5 program ekleyebilirmiyim yoksa hepsi için bunu satırı yazıp ayrı ayrı kontrolmü ettirmem lazım

    şu anda deneme fırsatım olmadığı için sormak istedim

     

    not: saglam kafayla ilk mesajı okuyunca anladım cidden karışık olmuş :D 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    GetProcesses ile tüm processleri çekersin

    bu kod ile listboxa aktarabilirsin, sürekli listboxu kontrol ettirip o processin açık olup olmadığına bakarakta yapbilirsin.

    Process[] myproc = Process.GetProcesses();
                foreach (Process all in myproc)
                {
                    listBox1.Items.Add(all.ProcessName);
                }

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    kodu şimdi deneme fırsatım oldu kod tam olarak aradıgım şey deil neden dersen o an çalışan bütün programları çekio keza o program adını verincede oyle o program arkaplandada çalışsa çalışıo gözüküo title ı cekio

    ben sadece o anda hangi programda işlem yapılıosa (ornek: ben buraya yazı yazarken firefox üstte) üstte hangi pencere varsa mantıgıyla 

    amacım bi çeşit stealer yapmak ve sadece belirli programlarda okuma yapmasını istiyorum  okuma işlemini gerçekleştirdim ama şu belirledigim programlarda yapmasını nasıl saglarım bu mantıkta işime yarar ben title a gore düşündügüm için böyle mantık yürttüm 

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    FCN bunu yazdı:
    -----------------------------

    kodu şimdi deneme fırsatım oldu kod tam olarak aradıgım şey deil neden dersen o an çalışan bütün programları çekio keza o program adını verincede oyle o program arkaplandada çalışsa çalışıo gözüküo title ı cekio

    ben sadece o anda hangi programda işlem yapılıosa (ornek: ben buraya yazı yazarken firefox üstte) üstte hangi pencere varsa mantıgıyla 

    amacım bi çeşit stealer yapmak ve sadece belirli programlarda okuma yapmasını istiyorum  okuma işlemini gerçekleştirdim ama şu belirledigim programlarda yapmasını nasıl saglarım bu mantıkta işime yarar ben title a gore düşündügüm için böyle mantık yürttüm 


    -----------------------------

    mainwindows title'ın mantığı odur, şuan hangi penceredeysen ff de onu çeker zaten.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

            [DllImport("user32.dll")]
            public static extern IntPtr GetForegroundWindow();
            [DllImport("user32.dll")]
            public static extern int GetWindowText(IntPtr hWnd, StringBuilder strBuild, int maxCount);

          
            public static string GetActiveWindowTitle()
            {
                StringBuilder str = new StringBuilder(255);
                IntPtr hWnd = GetForegroundWindow();
                GetWindowText(hWnd, str, 255);
                return str.ToString();
            }

    edit:

    getwindowtext fonksiyonunun geri donus degeri, yazilan karakter sayisina esittir. kontrol yapilirsa daha tutarli olabilir

    if (GetWindowText(..) > 0)   

    gibi ;)

     


    ..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    splintercell
    splintercell's avatar
    Kayıt Tarihi: 28/Eylül/2008
    Erkek

    C# bilmiyorum ama apilerin kullanımından bahsedeyim

    GetForegroundWindow ile aktif pencerenin handle'ını alırsın

    pencere başlığını aktarmak için string değişken oluştur.

    oluşturduğun string değişkene GetWindowTextLength(handle) fornksiyonun geriye döndürdüğü pencere başlık uzunluğunun 1 fazlası kadar boşluk doldur

    örneğin vb6da degisken=space(GetWindowTextLength(handle)+1)

    bundan sonrada

    GetWindowText handle,degisken,len(degisken) fonksiyonu bu şekilde kullanabilirsin parametreler sırasıyla pencerenin handle nosu,başlığın aktarılacağı değişken, değişkenin karakter uzunluğu

Toplam Hit: 2725 Toplam Mesaj: 8