• 14-09-2014, 18:21:28
    #1
    Merhabalar arkadaşlar...

    C# programımın ekran görüntüsü aşağıdaki şekilde görüldüğü gibidir. Sağ taraftaki listede bulunan isimler listbox içerisindedirler.



    Şöyle bir sorunum var. Ben her butona tıkladığım zaman, farklı bir kullanıcıya Tweet atsın istiyorum ama attıramadım. Mesela bir defa butona tıklıyorum ben, en baştaki talhayılmaz adlı kullanıcıya sorunsuz olarak tweet atıyor.

    Daha sonra butona tekrar tıklıyorum. lazvampir54'e tweet atılmasını beklerken, program yine talhayılmaz'a tweet atıyor.

    Kodlar şu şekildedir :
     private void button2_Click(object sender, EventArgs e)
            {
                webBrowser1.Navigate("https://mobile.twitter.com/compose/tweet");
    
              --- Programı bekletmek için burada proses bar kullandım ama ben sildim çünkü o sorun yaratmıyor ---
    
                foreach (HtmlElement elementin in webBrowser1.Document.All)
                {
                    if (elementin.Name == "tweet[text]")
                    {
                        elementin.InvokeMember("click");
    
                        for (int i = 0; i < lbKullaniciAdlariListesi.Items.Count; i++)
                        {
                            elementin.InnerText = lbKullaniciAdlariListesi.Items[i] + textBox1.Text;
                            break;
                        }
                    }
    
                    if (elementin.Name == "commit")
                    {
                        elementin.InvokeMember("click");
                    }
                }
    
            }

    Tweet her defasında farklı bir kullanıcıya gitsin diye FOR döngüsü ekledim. Ama işe yaramadı nedense. Var mı fikir yürütecek birileri?
  • 14-09-2014, 18:35:30
    #2
    Random r = new Random();
                for(int i=1;i<=5;i++)
                {
                     int rr = r.Next(0, listBox1.Items.Count - 1);
                     string kisi = listBox1.Items[rr].ToString();
                }
    Listteki item sayısına göre random olarak kişiyi alısın bu şekilde.
  • 14-09-2014, 18:52:21
    #3
    VoyL adlı üyeden alıntı: mesajı görüntüle
    Random r = new Random();
                for(int i=1;i<=5;i++)
                {
                     int rr = r.Next(0, listBox1.Items.Count - 1);
                     string kisi = listBox1.Items[rr].ToString();
                }
    Listteki item sayısına göre random olarak kişiyi alısın bu şekilde.


    Teşekkür ederim ilginiz için ama FOR'u while yapınca sorun düzeldi. Yani şuanda butona her bi tıklamamda program otomatik olarak bir alt kullanıcıya tweet atıyor.

    Bunu daha da geliştirip, ben butona basmadan, program otomatik olarak tekrardan buton'a tıklasın istiyorum. Bunu yapmak mümkün mü?
    Çünkü liste bitene kadar her defasında butona tıklamak kullanıcılar için hoş bir durum olmayabilir diye düşünüyorum.
  • 14-09-2014, 19:15:57
    #4
    foreach(string s in listbox1.items)
    {
    }

    bu şekilde hepsini kullanabilirsin tek tek.
  • 14-09-2014, 21:22:21
    #5
    VoyL adlı üyeden alıntı: mesajı görüntüle
    foreach(string s in listbox1.items)
    {
    }

    bu şekilde hepsini kullanabilirsin tek tek.
    Teşekkür ederim ama button.performclick olayı daha basit oldu. O yüzden foreach yerine perfomclick metodunu tercih ettim.
  • 16-09-2014, 14:08:08
    #6
    birtane timer koy. tweet atma kodlarını timer in tick eventına yaz.
    butona basınca timer ı çalıştır. daha stabil olacaktır.
  • 16-09-2014, 18:09:00
    #7
    timerla yaparsan patlarsın hocam
    şöyle bi mantık vereyim yapamazsan tw at beraber hallederiz.
    Enum bir değişken tanımla
    mesela şöyle
    public enum Islemler {TwitterGirisYap,HesabaGit,TweetAt,Degistir} gibi
    form.load'da siteye girsin ki işlemlerimiz bittiğinde kod satırına yazalım
    Mantık şöyle olacak
    BotIslemi diyede bir değişken tanımla bunu switch case ile kontrol ettir
    Birde AktifHesapNumarasi diye int bi değişken tanımla buda listteki işlem numaranı tutarsın.
    switch(BotIslemi)
    case Islemler.TwitterGirisYap:
    Twittere Giriş kodları buraya
    BotIslemi = Islemler.HesabaGit;
    break;

    case Islemler.HesabaGit
    burdada bi kontrol yaparsın listbox1.ıtems.count == aktifhesapnumarasi messagebox.show("bitti") değilse aşşağısı calısır.
    webBrowser1.navigate(listbox1.Items[AktifHesapNumarasi];
    AktifHesapNumarasi++; //burda listbox1'deki 1.kayda gitti
    BotIslemi = Islemler.TweetAt;
    break;

    case Islemler.TweetAt
    //tweet atma kodları buraya
    BotIslemi = Islemler.Degistir;
    break;

    case Islemler.Degistir:
    webbrowser.Navigate("http:google.com") tweet attıktan sonra sayfayı değiştirelim ki tweet atıp atmadığımızı görelim.
    BotIslemi = Islemler.HesabaGit;
    break;

    bu mantıkla yaparsan daha iyi olur dediğim gibi yapamazsan akşam pm at twden yaparız beraber.
    Şirketten çıkmak üzere olduğumdan acele yazdım. kusura bakma.