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.