C++ Txt Datei per keybd_event ausgeben

09/15/2014 21:46 fliegefliege#1
Guten Abend zusammen :)
kurz zur Eklärung was das Programm eigentlich machen soll:
Ich möchte aus einer txt Datei mir jede einzelen Zeile per keybd_event ausgeben lassen.Es soll also die Zeile geschrieben werden und dann Enter gedrückt werden, leider funktioniert das bei mir nicht. Wäre euch dankbar wenn ich mir "mal eben" den Fehler zeigen könntet (bestimmt ein Anfängerfehler :D).
Das Programm gibt gar nichts aus und die Konsole schließt sich einfach automatisch wieder.

So wieder der Code jetzt ist, sollte er eigentlich jeden Buchstaben einzeln simulieren.
danke :)

Hier der Code:
PHP Code:


#include <fstream> 
#include <strstream>
#include <string>
#include <iostream> 
#include <cstdio>
#include <windows.h>
#include <time.h>

using namespace std;

int main ()
{
char zeile [500]; // Zeile max 121 Zeichen
string Seite[1000]; // Datei Max 10000 Zeilen

ifstream dateiLese ("c:\\liste.txt"); // Liste zum Auslesen

if (dateiLese)
{
int i=0;
// solange die Zeile nicht leer ist
while(dateiLese.getline (zeile500)) // Zeile lesen
{
Seite[i]=zeile;
Sleep(3000);

for(
int j=0;j<10;j++){// Automatische Eingabe der Textdatei ermöglichen
    
switch(zeile[j]){
case 
'a'keybd_event(VkKeyScan('a'),0x97,0);keybd_event(VkKeyScan('a'),0x97,KEYEVENTF_KEYUP,0);break;
case 
'b'keybd_event(VkKeyScan('b'),0x98,0);keybd_event(VkKeyScan('b'),0x98,KEYEVENTF_KEYUP,0);break;
case 
'c'keybd_event(VkKeyScan('c'),0x99,0);keybd_event(VkKeyScan('c'),0x99,KEYEVENTF_KEYUP,0);break;
case 
'd'keybd_event(VkKeyScan('d'),0x100,0);keybd_event(VkKeyScan('d'),0x100,KEYEVENTF_KEYUP,0);break;
case 
'e'keybd_event(VkKeyScan('e'),0x101,0);keybd_event(VkKeyScan('e'),0x101,KEYEVENTF_KEYUP,0);break;
case 
'f'keybd_event(VkKeyScan('f'),0x102,0);keybd_event(VkKeyScan('f'),0x102,KEYEVENTF_KEYUP,0);break;
case 
'g'keybd_event(VkKeyScan('g'),0x103,0);keybd_event(VkKeyScan('g'),0x103,KEYEVENTF_KEYUP,0);break;
case 
'h'keybd_event(VkKeyScan('h'),0x104,0);keybd_event(VkKeyScan('h'),0x104,KEYEVENTF_KEYUP,0);break;
case 
'i'keybd_event(VkKeyScan('i'),0x105,0);keybd_event(VkKeyScan('i'),0x105,KEYEVENTF_KEYUP,0);break;
case 
'j'keybd_event(VkKeyScan('j'),0x106,0);keybd_event(VkKeyScan('j'),0x106,KEYEVENTF_KEYUP,0);break;
case 
'k'keybd_event(VkKeyScan('k'),0x107,0);keybd_event(VkKeyScan('k'),0x107,KEYEVENTF_KEYUP,0);break;
case 
'l'keybd_event(VkKeyScan('l'),0x108,0);keybd_event(VkKeyScan('l'),0x108,KEYEVENTF_KEYUP,0);break;
case 
'm'keybd_event(VkKeyScan('m'),0x109,0);keybd_event(VkKeyScan('m'),0x109,KEYEVENTF_KEYUP,0);break;
case 
'n'keybd_event(VkKeyScan('n'),0x110,0);keybd_event(VkKeyScan('n'),0x110,KEYEVENTF_KEYUP,0);break;
case 
'o'keybd_event(VkKeyScan('o'),0x111,0);keybd_event(VkKeyScan('o'),0x111,KEYEVENTF_KEYUP,0);break;
case 
'p'keybd_event(VkKeyScan('p'),0x112,0);keybd_event(VkKeyScan('p'),0x112,KEYEVENTF_KEYUP,0);break;
case 
'q'keybd_event(VkKeyScan('q'),0x113,0);keybd_event(VkKeyScan('q'),0x113,KEYEVENTF_KEYUP,0);break;
case 
'r'keybd_event(VkKeyScan('r'),0x114,0);keybd_event(VkKeyScan('r'),0x114,KEYEVENTF_KEYUP,0);break;
case 
's'keybd_event(VkKeyScan('s'),0x115,0);keybd_event(VkKeyScan('s'),0x115,KEYEVENTF_KEYUP,0);break;
case 
't'keybd_event(VkKeyScan('t'),0x116,0);keybd_event(VkKeyScan('t'),0x116,KEYEVENTF_KEYUP,0);break;
case 
'u'keybd_event(VkKeyScan('u'),0x117,0);keybd_event(VkKeyScan('u'),0x117,KEYEVENTF_KEYUP,0);break;
case 
'v'keybd_event(VkKeyScan('v'),0x118,0);keybd_event(VkKeyScan('v'),0x118,KEYEVENTF_KEYUP,0);break;
case 
'w'keybd_event(VkKeyScan('w'),0x119,0);keybd_event(VkKeyScan('w'),0x119,KEYEVENTF_KEYUP,0);break;
case 
'x'keybd_event(VkKeyScan('x'),0x120,0);keybd_event(VkKeyScan('x'),0x120,KEYEVENTF_KEYUP,0);break;
case 
'y'keybd_event(VkKeyScan('y'),0x121,0);keybd_event(VkKeyScan('y'),0x121,KEYEVENTF_KEYUP,0);break;
case 
'z'keybd_event(VkKeyScan('z'),0x122,0);keybd_event(VkKeyScan('z'),0x122,KEYEVENTF_KEYUP,0);break;

case 
'A'keybd_event(VkKeyScan('A'),0x65,0);keybd_event(VkKeyScan('A'),0x65,KEYEVENTF_KEYUP,0);break;
case 
'B'keybd_event(VkKeyScan('B'),0x66,0);keybd_event(VkKeyScan('B'),0x66,KEYEVENTF_KEYUP,0);break;    
case 
'C'keybd_event(VkKeyScan('C'),0x67,0);keybd_event(VkKeyScan('C'),0x67,KEYEVENTF_KEYUP,0);break;
case 
'D'keybd_event(VkKeyScan('D'),0x68,0);keybd_event(VkKeyScan('D'),0x68,KEYEVENTF_KEYUP,0);break;
case 
'E'keybd_event(VkKeyScan('E'),0x69,0);keybd_event(VkKeyScan('E'),0x69,KEYEVENTF_KEYUP,0);break;
case 
'F'keybd_event(VkKeyScan('F'),0x70,0);keybd_event(VkKeyScan('F'),0x70,KEYEVENTF_KEYUP,0);break;
case 
'G'keybd_event(VkKeyScan('G'),0x71,0);keybd_event(VkKeyScan('G'),0x71,KEYEVENTF_KEYUP,0);break;
case 
'H'keybd_event(VkKeyScan('H'),0x72,0);keybd_event(VkKeyScan('H'),0x72,KEYEVENTF_KEYUP,0);break;
case 
'I'keybd_event(VkKeyScan('I'),0x73,0);keybd_event(VkKeyScan('I'),0x73,KEYEVENTF_KEYUP,0);break;
case 
'J'keybd_event(VkKeyScan('J'),0x74,0);keybd_event(VkKeyScan('J'),0x74,KEYEVENTF_KEYUP,0);break;
case 
'K'keybd_event(VkKeyScan('K'),0x75,0);keybd_event(VkKeyScan('K'),0x75,KEYEVENTF_KEYUP,0);break;
case 
'L'keybd_event(VkKeyScan('L'),0x76,0);keybd_event(VkKeyScan('L'),0x76,KEYEVENTF_KEYUP,0);break;
case 
'M'keybd_event(VkKeyScan('M'),0x77,0);keybd_event(VkKeyScan('M'),0x77,KEYEVENTF_KEYUP,0);break;
case 
'N'keybd_event(VkKeyScan('N'),0x78,0);keybd_event(VkKeyScan('N'),0x78,KEYEVENTF_KEYUP,0);break;
case 
'O'keybd_event(VkKeyScan('O'),0x79,0);keybd_event(VkKeyScan('O'),0x79,KEYEVENTF_KEYUP,0);break;
case 
'P'keybd_event(VkKeyScan('P'),0x80,0);keybd_event(VkKeyScan('P'),0x80,KEYEVENTF_KEYUP,0);break;
case 
'Q'keybd_event(VkKeyScan('Q'),0x81,0);keybd_event(VkKeyScan('Q'),0x81,KEYEVENTF_KEYUP,0);break;
case 
'R'keybd_event(VkKeyScan('R'),0x82,0);keybd_event(VkKeyScan('R'),0x82,KEYEVENTF_KEYUP,0);break;
case 
'S'keybd_event(VkKeyScan('S'),0x83,0);keybd_event(VkKeyScan('S'),0x83,KEYEVENTF_KEYUP,0);break;
case 
'T'keybd_event(VkKeyScan('T'),0x84,0);keybd_event(VkKeyScan('T'),0x84,KEYEVENTF_KEYUP,0);break;
case 
'U'keybd_event(VkKeyScan('U'),0x85,0);keybd_event(VkKeyScan('U'),0x85,KEYEVENTF_KEYUP,0);break;
case 
'V'keybd_event(VkKeyScan('V'),0x86,0);keybd_event(VkKeyScan('V'),0x86,KEYEVENTF_KEYUP,0);break;
case 
'W'keybd_event(VkKeyScan('W'),0x87,0);keybd_event(VkKeyScan('W'),0x87,KEYEVENTF_KEYUP,0);break;
case 
'X'keybd_event(VkKeyScan('X'),0x88,0);keybd_event(VkKeyScan('X'),0x88,KEYEVENTF_KEYUP,0);break;
case 
'Y'keybd_event(VkKeyScan('Y'),0x89,0);keybd_event(VkKeyScan('Y'),0x89,KEYEVENTF_KEYUP,0);break;
case 
'Z'keybd_event(VkKeyScan('Z'),0x90,0);keybd_event(VkKeyScan('Z'),0x90,KEYEVENTF_KEYUP,0);break;

case 
'0'keybd_event(48,0,0);keybd_event(48,0,KEYEVENTF_KEYUP,0);break;
case 
'1'keybd_event(49,0,0);keybd_event(49,0,KEYEVENTF_KEYUP,0);break;
case 
'2'keybd_event(50,0,0);keybd_event(50,0,KEYEVENTF_KEYUP,0);break;
case 
'3'keybd_event(51,0,0);keybd_event(51,0,KEYEVENTF_KEYUP,0);break;
case 
'4'keybd_event(52,0,0);keybd_event(52,0,KEYEVENTF_KEYUP,0);break;
case 
'5'keybd_event(53,0,0);keybd_event(53,0,KEYEVENTF_KEYUP,0);break;
case 
'6'keybd_event(54,0,0);keybd_event(54,0,KEYEVENTF_KEYUP,0);break;
case 
'7'keybd_event(55,0,0);keybd_event(55,0,KEYEVENTF_KEYUP,0);break;
case 
'8'keybd_event(56,0,0);keybd_event(56,0,KEYEVENTF_KEYUP,0);break;
case 
'9'keybd_event(57,0,0);keybd_event(57,0,KEYEVENTF_KEYUP,0);break;
    
    
    
    
}
//case zuende

zeile[j]= '#';

}
//for schleife zuende

keybd_event(VK_RETURN,0x9C,0,0); // nach jeder geschrieben Zeile wird die Enter Taste gedrückt
keybd_event(VK_RETURN,0x9C,0,0);

i++;
}

dateiLese.close (); // Datei schliessen



}
getchar();

09/15/2014 23:31 Delinquenz#2
Nicht unbedingt relevant zu deinem Problem, aber mir ist da was aufgefallen:

Code:
case 0: keybd_event(VkKeyScan(0),0x48,0 , 0);keybd_event(VkKeyScan(0),0x48,KEYEVENTF_KEYUP,0);break;
case 1: keybd_event(VkKeyScan(1),0x49,0 , 0);keybd_event(VkKeyScan(1),0x49,KEYEVENTF_KEYUP,0);break;
case 2: keybd_event(VkKeyScan(2),0x50,0 , 0);keybd_event(VkKeyScan(2),0x50,KEYEVENTF_KEYUP,0);break;
case 3: keybd_event(VkKeyScan(3),0x51,0 , 0);keybd_event(VkKeyScan(3),0x51,KEYEVENTF_KEYUP,0);break;
case 4: keybd_event(VkKeyScan(4),0x52,0 , 0);keybd_event(VkKeyScan(4),0x52,KEYEVENTF_KEYUP,0);break;
case 5: keybd_event(VkKeyScan(5),0x53,0 , 0);keybd_event(VkKeyScan(5),0x53,KEYEVENTF_KEYUP,0);break;
case 6: keybd_event(VkKeyScan(6),0x54,0 , 0);keybd_event(VkKeyScan(6),0x54,KEYEVENTF_KEYUP,0);break;
case 7: keybd_event(VkKeyScan(7),0x55,0 , 0);keybd_event(VkKeyScan(7),0x55,KEYEVENTF_KEYUP,0);break;
case 8: keybd_event(VkKeyScan(8),0x56,0 , 0);keybd_event(VkKeyScan(8),0x56,KEYEVENTF_KEYUP,0);break;
case 9: keybd_event(VkKeyScan(9),0x57,0 , 0);keybd_event(VkKeyScan(9),0x57,KEYEVENTF_KEYUP,0);break;
0 und '0' (was du wohl eigentlich abfragen wolltest), sind 2 verschiedene Dinge. 0 ist das Nullzeichen während '0' die Zahl 0 ist.

void main() ist übrigens veraltet seit sehr langer Zeit, int main() ist der "neue Shit".

Wieso benutzt du ein char Array anstelle eines Strings?
09/16/2014 00:07 fliegefliege#3
Hallo, erstmal vielen Dank für deine Antwort :)
ja danke für den Hinweis, ich hab es korrigiert. das mit dem int main() habe ich auch schon öfter gelesen, habe es nur mit einer älteren fassung von einem buch gelernt...

soweit ich weiß geht es nur mit einem char array,ich hatte da vorher auch einen string array aber dann kommt eine Fehlermeldung. Nachdem ich das Problem gegooglt habe habe ich dann bemerkt,dass es mit dem char array zumindest keine kompilierungsprobleme gibt. Hätte ich nicht dann auch das Problem,dass ich ein ganzes Wort in einer Zelle gespeichert hätte statt einem Buchstaben?

Was mir gerade noch aufgefallen ist, ist dass ich diese Warnmeldungen erhalte:
warning C4244: 'Argument': Konvertierung von 'SHORT' in 'BYTE', möglicher Datenverlust
warning C4305: 'Argument': Verkürzung von 'int' in 'BYTE'
09/16/2014 11:17 MrSm!th#4
void main() gibt es in C++ nicht.

Wozu das riesige switch-case, wenn du sowieso in jedem Case gleich vorgehst?
09/16/2014 11:33 fliegefliege#5
kompilieren konnte ich es auch mit void (main), naja habe es geändert das Problem besteht trotzdem noch.
Ich wusste nicht wie ich anders vorgehen kann, je nachdem was für ein Buchstabe zeile[i] gerade enthält benötigt man doch jedes mal einen anderen Case oder nicht?

EDIT: Quellcode editiert,das einzige was jetzt noch nicht funktioniert sind zahlen (statt einer "4" hat er mir ein "d" ausgegeben)

EDIT 2: Habe das Problem mitterweile selber lösen können, habe den Quellcode oben richtig editiert,falls jmd ein ähnliches problem mal haben sollte
danke für die hilfe