Diskuze: Simulace vstupu z klávesnice
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
http://msdn.microsoft.com/…vs.110).aspx
Pozn.: osobně jsem to taky nesnášel po půl roce, stejně jsem psal
normálně ... Zvyknout si po X letech kdy píšeš svým stylem na nějaký
jinačí, umřel bych
Děkuju Jenže je tu jeden
problém, co jsem tohle zkoušel, tak to funguje jenom pro Windows Form. Já
bych něco takového potřeboval v console application. :/
No dobré, tak to by jsem měl. Zbývá mi asi jenom jedna věc Jak to udělat, aby tenhle
program fungoval na pozadí a aby mohl psát do textového editoru např ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace test
{
class Program
{
static void Main(string[] args)
{
string text = System.IO.File.ReadAllText(@"C:\Users\HonDemik\Desktop\text_utf.txt");
// * Načtení TXT souboru, který se bude vypisovat.
//string text = "Nějáký texdt, který se bude vypisovat postupně když zmáčknu jakoukoliv klávesu.";
char[] text_in_characters = text.ToCharArray();
foreach (char c in text)
{
Console.ReadKey(true);
SendKeys.SendWait(c.ToString());
}
/*for (int i = 0; i < text.Length; i++)
{
Console.ReadKey(true);
//Console.Write(text_in_characters[0 + i]);
}
*/
//End of the applicationd
Console.WriteLine();
Console.WriteLine("Program ukončete jakoukoliv klávesou...");
Console.ReadKey();
}
}
}
Zamysli se nad tím kódem, čekáš na stisk klávesy v konzli a pak následně vypíšeš nějaký char z tvého souboru ... Trošku nahlavu ne?
No tak je to založeno na tom, aby to vypadalo, že opravdu píšeš ty a ne
program. Takhle docílím toho, že se na každý stisk jakékoliv klávesy
vypíše jeden znak. Kdyby to tak nebylo, tak by nakonec byla rychlost úhozů
bůhví kolik a to už by učitelka nesežrala
Metoda Send posílá to "stisknuté" tlačítko aktivované aplikaci (konzole, když pár nanosekund před tím si zmačkl tlačítko) ... Použij uspání vlákna na pár stovek milisekund. Nebo odchytávej systémově to zmáčknutí klávesy a nahraď to tou svou.
Thread.Sleep(int ms);
Používej tlačítko odpovědět nebo pak budeš čekat na odpověď pár hodin...
Hele asi jsi mě špatně pochopil To má být program, který jenom spustím, potom zapnu ATF a budu
mačkat jakékoliv klávesy a ono to bude psát správné znaky místo mě. To
Console.ReadKey(true) se mi tam zdá v pořádku, protože čekám na
stisknutí klávesy a potom odešlu správný znak.
Ale něják se mi pořád nezdá, že když to spustím a na to spusím další program, tak to bude fungovat.
Hele asi jsi mě špatně pochopil To má být program, který jenom spustím, potom zapnu ATF a budu
mačkat jakékoliv klávesy a ono to bude psát správné znaky místo mě. To
Console.ReadKey(true) se mi tam zdá v pořádku, protože čekám na
stisknutí klávesy a potom odešlu správný znak.
Ale něják se mi pořád nezdá, že když to spustím a na to spusím další program, tak to bude fungovat.
Vzdávám to ... Přečti si celou konverzaci znova.
Btw, neslibuj kamarádům něco co nedokážeš splnit, když nechápeš ani jak funguje základní metoda pro čtení z konzole...
není jednoduší si v tom ATF zatrhnout "přeskakovat chyby"?
No to už je celkem jedno
Už jsem to něják vyřešil a funguje to. Ale bych bych rád, kdyby to
fungovalo na stisk klávesy v daném okně, než na časový interval :/ Kdyby
někdo věděl, napište mi prosím
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ATF_Hack
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
string text = richTextBox1.Text;
char[] text_in_characters = text.ToCharArray();
bool opakovani = true;
int i = 0;
string znak;
int pocet_uhozu = int.Parse(textBox1.Text);
int konecny_pocet_uhozu = (60 / pocet_uhozu) * 1000;
while (opakovani == true)
{
if (i <= text.Length)
{
znak = Convert.ToString(text_in_characters[i]);
SendKeys.Send(znak);
i++;
System.Threading.Thread.Sleep(konecny_pocet_uhozu);
}
else
timer1.Enabled = false;
}
}
}
}
Zobrazeno 21 zpráv z 21.