Błąd "Odwołanie do obiektu nie zostało ustawione..."

0

Witam. Jestem dosyć początkujący i staram się napisać program, który wciska poszczególne klawisze lub przyciski myszy, według ustawień użytkownika.
Klikanie myszą działa b. dobrze, ale mam problemy z klawiszami klawiaturowymi. Program się uruchamia, chwilę pracuje (zrobi 3-4 pętle, której kod jest niżej) i wywala błąd:

Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Tutaj kawałek kodu, który chyba wystarczy (jeśli nie to wrzucę cały, takich funkcji w sumie jest 15):

public static void przyc1()
        {
// Wczytanie odpowiednich linijek z pliku config.txt do stringa i int
             string[] allLines = File.ReadAllLines(Application.StartupPath + @"\config.txt");
             if (allLines.Length >= 9)
             {
                 koniec = false;
                 string prz1 = allLines[7]; //w linii 8
                 int co1 = Convert.ToInt32(allLines[8]); //w linii 9
// pętla, która powinna powodować ciągłe wciskanie klawisza prz1 co co1 milisekund
                 while (koniec == false)
                 {
                     SendKeys.SendWait(prz1);
                     Thread.Sleep(co1);
                 }
             }
        }

Błąd występuje dla:

SendKeys.SendWait(prz1);

przyc1 wywołuję za pomocą

Thread p1 = new Thread(przyc1);
p1.Start();

Pętlę przerywam czymś takim (przycisk w Formie):

private void button2_Click(object sender, EventArgs e)
        {
            koniec = true;
        }

Kod pewnie nie jest dobrze napisany, bo się dopiero uczę, ale na razie mi chodzi tylko, żeby działał jak należy.
Szukałem, ale nie znalazłem podobnego problemu (z SendKeys).
Z góry dziękuję za pomoc i proszę o jakieś podpowiedzi lub wskazanie co jest nie tak.

0

Przejdź do folderu ze swoim projektem, następnie do katalogu bin -> debug. Tam odpal swoją apkę ręcznie. Powinno działać.

0

Plik nazywa się

Clickerv2.exe
i niestety, po kliku pętlach:

Program WindowsFormsApplication1 przestał działać.
Podpis problemu:
  Nazwa zdarzenia problemu:	CLR20r3
  Podpis problemu: 01:	Clickerv2.exe
  Podpis problemu: 02:	1.0.0.0
  Podpis problemu: 03:	534a7698
  Podpis problemu: 04:	System.Windows.Forms
  Podpis problemu: 05:	4.0.30319.33440
  Podpis problemu: 06:	52004310
  Podpis problemu: 07:	3de6
  Podpis problemu: 08:	18
  Podpis problemu: 09:	System.NullReferenceException
  Wersja systemu operacyjnego:	6.3.9600.2.0.0.256.48
  Identyfikator ustawień regionalnych:	1045
  Dodatkowe informacje 1:	5861
  Dodatkowe informacje 2:	5861822e1919d7c014bbb064c64908b2
  Dodatkowe informacje 3:	dba6
  Dodatkowe informacje 4:	dba6f3f51243e7af8337f6bced10f1a2

Może dorzucę jeszcze szczegóły błędu z visual studio

System.NullReferenceException was unhandled
  HResult=-2147467261
  Message=Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
  Source=System.Windows.Forms
  StackTrace:
       w System.Windows.Forms.SendKeys.AddCancelModifiersForPreviousEvents(Queue previousEvents)
       w System.Windows.Forms.SendKeys.SendInput(Byte[] oldKeyboardState, Queue previousEvents)
       w System.Windows.Forms.SendKeys.Send(String keys, Control control, Boolean wait)
       w System.Windows.Forms.SendKeys.SendWait(String keys)
       w WindowsFormsApplication1.Form1.przyc1() w C:\Users\****(nazwa użytkownika)\Documents\Visual Studio 2010\Projects\Clickerv2\Clickerv2\Form1.cs:wiersz 182
       w System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       w System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
0

Podaj kod z wiersza 182 swojej aplikacji

0

No to jest właśnie

SendKeys.SendWait(prz1);

Może da się to jakoś inaczej napisać? Prościej lub bardziej poprawnie? Bo ogólnie ma to działać tak, że w programie powinno się ustawiać klawisz i co ile ma być wciskany i po odpaleniu powinno przyciskać te klawisze które zostały wpisane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1