Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pobieranie linijek z tekstu po kolei,akcja,czekanie x sec i od nowa.


eXnR

Rekomendowane odpowiedzi

Opublikowano

Na timerze tez mozesz

np tak:

     private static string[] EmL= System.IO.File.ReadAllLines("email.txt");
     private int index = 0;
    
     private void timer1_Tick(object sender, EventArgs e)
        {
            HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");
            links[0].SetAttribute("value", EmL[index]);
            
        index++;
        if(index >= EmL.Length)
            index=0;
        }
 

3053080006.png

Opublikowano

Twój kod nie działa: 

Wartość '0' nie jest prawidłową wartością dla 'index'. Wartość 'index' powinna znajdować się w zakresie od 0 do -1.
Nazwa parametru: index

Po zmianie w links[0] też nie. 

 

A jak bym chciał zrobić dalej(w kodzie dalej ^^) czekanie? 

 

Wydaje mi się że bw było by lepszym rozwiązaniem, tylko nie wiem jak je zastosować. 

linki w górę

Opublikowano

 

     private static string[] EmL= System.IO.File.ReadAllLines("email.txt");
     private int _index = 0;
    
     private void timer1_Tick(object sender, EventArgs e)
        {
            HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");
            
            if(links != null && links.Count > 0) {
                links[0].SetAttribute("value", EmL[_index]);
            
           _ index++;
            if(_index >= EmL.Length)
                _index=0;
                }
        }

3053080006.png

Opublikowano

Nadal to samo..

Co więcej: nawet się nie uruchamia 

Inicjator typów zgłosił wyjątek 

linki w górę

Opublikowano
 

 

     private static string[] EmL= System.IO.File.ReadAllLines("email.txt");
     private int _index = 0;
    
     private void timer1_Tick(object sender, EventArgs e)
        {
            HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");
            
            if(links != null && links.Count > 0) {
                links[0].SetAttribute("value", EmL[_index]);
            
           _ index++;
            if(_index >= EmL.Length)
                _index=0;
                }
        }

 

Dobra już działa. Musiałem robić od początku ;v. Ale i tak wychodzi przecież na to samo. Nie ma opóźnienia 3 sec.

 

Edit2:

+ jest taki że mniej muli skrypt (przynajmniej tak mi się wydaje)

---

 

BackgroundWorker też wywala webbrowsera

linki w górę

Opublikowano

Taki trochę ref, ale nie będę już zakładał nowego tematu. 

 

Jak zrobić żeby po wyczerpaniu się tekstu z pliku(tablicy) zatrzymywałoby się i czekało na zdarzenie(mam już). Chodzi tylko o to żeby program się zatrzymał i czekał jeśli skończy się tekst w tablicy.

linki w górę

Opublikowano

na podstawie wczesniejszego kodu:

 

  private static string[] EmL= System.IO.File.ReadAllLines("email.txt");
     private int _index = 0;
    
     private void timer1_Tick(object sender, EventArgs e)
        {
            HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");
            
            if(links != null && links.Count > 0) {
                links[0].SetAttribute("value", EmL[_index]);
            
           _ index++;
            if(_index >= EmL.Length) {
                _index=0;
               timer1.Enabled = false; 
          }
                }
        }
 

3053080006.png

Opublikowano

Jeśli zrobię tak jak ty: 

Indeks wykraczał poza granice tablicy.

Myślałem żeby zmienić na: 

 private static string[] EmL= System.IO.File.ReadAllLines("email.txt");
     private int _index = 0;
    
     private void timer1_Tick(object sender, EventArgs e)
        {
            HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");
            
            if(links != null && links.Count > 0) {
                links[0].SetAttribute("value", EmL[_index]);
            
           _ index++;
            if(_index >= EmL.Length) 
          {
                _index=0;
               timer1.Enabled = false; 
          }
                }
        }

Ale wtedy zatrzymuje się po jednym. 

linki w górę

Opublikowano

@Soukyan
 
Dzięki. To rozwiązało jeden z moich 3 problemów. 
Do rozwiązania zostało mi jeszcze: 
 
1. Zatrzymywanie się i czekanie (na zdarzenie) po wyczerpaniu tekstu z pliku(tablicy)
 

 


2.  Edit; Już sobie poradziłem :)

 

 

Resztę programu już mam. Czekam na pomoc. Oczywiście nie żałuję lików  ;)

linki w górę

Opublikowano

Ale nie jest. To w spoilerze to był mój drugi problem z którym sobie poradziłem :) . Wciąż mi zostało żeby się zatrzymywał i czekał. Nie umiem tego zrobić tak żeby się nie zbugowało gdzieś. 

 

Konkretnie potrzebuje żeby czekał na to: 

 HtmlElementCollection OuT = webBrowser1.Document.GetElementsByTagName("p");

            foreach (HtmlElement Ot1 in OuT)
            {
                if (Ot1.InnerText.Equals("out?"))
                    webBrowser1.Document.GetElementById("out").InvokeMember("click");

            }

Osobno działa ok, ale mi chodzi o to żeby po wyczerpaniu tekstu czekał na to. Obecnie klika podczas pracy. 

linki w górę

Opublikowano

Obecnie mam tak: 

 private static string[] reader = File.ReadAllLines("email.txt");
        private int index = 0;
        private int tickElapsed = 0;

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (tickElapsed == 0)
            {
                HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("tx");

                if (links != null && links.Count > 0)
                {
                    if (index >= reader.Length)
                    {


                        index = 0;
                        tickElapsed = 10;

    
                    }
                    else
                    {

                        links[0].SetAttribute("value", reader[index]);
                        tickElapsed = 5;
                        webBrowser1.Document.GetElementById("b1").InvokeMember("click");
                        ++index;

                    }
                }
            }

            else
            {
                --tickElapsed;
            }
               
            HtmlElementCollection OuT = webBrowser1.Document.GetElementsByTagName("p");

            foreach (HtmlElement Ot1 in OuT)
            {
                if (Ot1.InnerText.Equals("out?"))
                    webBrowser1.Document.GetElementById("out").InvokeMember("click");

            }
        }

linki w górę

Opublikowano

Hmm, chodzi mi o to że jeśli tekst w tablicy się wyczerpie, to zatrzymuje się i czeka na "OuT". Kiedy już kliknie w "OuT" zaczyna się od nowa.

linki w górę

Opublikowano

Haj. 

 

Już sobie ze wszystkim poradziłem i program działa ok :). Chciałem go jeszcze tylko trochę "dopieścić" zanim go udostępnię i zrobić takie coś że jeśli 

 HtmlElementCollection OuT = webBrowser1.Document.GetElementsByTagName("p");

            foreach (HtmlElement Ot1 in OuT)
            {
                if (Ot1.InnerText.Equals("out?"))
                    webBrowser1.Document.GetElementById("out").InvokeMember("click");

            }

to index = 0;  Czyli:

 HtmlElementCollection OuT = webBrowser1.Document.GetElementsByTagName("p");

            foreach (HtmlElement Ot1 in OuT)
            {
                if (Ot1.InnerText.Equals("out?"))
                    webBrowser1.Document.GetElementById("out").InvokeMember("click");
                    index = 0;

            }

Tylko niestety nie działa. Tzn indeks resetuje się cały czas. (co w sumie logiczne, bo jest w pętli foreach, tylko jak zrobić żeby resetował się tylko wtedy jak wystąpi to zdarzenie?)

linki w górę

Opublikowano

Aha, już sobie poradziłem. Temat do zamknięcia. Wielkie dzięki za pomoc!

linki w górę

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...