kostenloser Webspace werbefrei: lima-city


Groß-/Kleinschreibung in C++ unterscheiden

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    t**k

    Ich habe das Problem, dass ich in einem Programm genau unterscheiden muss ob ein Buchstabe groß oder klein geschrieben ist. Der Code ist:
    switch(taste) {
    	case 'a': taste = 0x41; break;
    	case 'b': taste = 0x42; break;
    	case 'c': taste = 0x43; break;
    	case 'd': taste = 0x44; break;
    	case 'e': taste = 0x45; break;
    	case 'f': taste = 0x46; break;
    	case 'g': taste = 0x47; break;
    	case 'h': taste = 0x48; break;
    	case 'i': taste = 0x49; break;
    	case 'j': taste = 0x4A; break;
    	case 'k': taste = 0x4B; break;
    	case 'l': taste = 0x4C; break;
    	case 'm': taste = 0x4D; break;
    	case 'n': taste = 0x4E; break;
    	case 'o': taste = 0x4F; break;
    	case 'p': taste = 0x50; break;
    	case 'q': taste = 0x51; break;
    	case 'r': taste = 0x52; break;
    	case 's': taste = 0x53; break;
    	case 't': taste = 0x54; break;
    	case 'u': taste = 0x55; break;
    	case 'v': taste = 0x56; break;
    	case 'w': taste = 0x57; break;
    	case 'x': taste = 0x58; break;
    	case 'y': taste = 0x59; break;
    	case 'z': taste = 0x5A; break;
    	case ' ': taste = 0x20; break;
    	case 'T': tastatur_g('t'); break;
    }


    Nur, wenn ich jetzt ein großes T dort eingebe werden case 'T' und case 't' angesprochen, nicht nur, wie es sollte, case 'T'.

    Danke im voraus

    mfg

    EDIT: Die Buchstaben sind in einer char Variabel

    Beitrag zuletzt geändert: 24.8.2010 13:43:44 von trik
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. C++ unterscheidet schon von Haus aus zwischen 't' und 'T' - das sind für den compiler zwei komplet voneinander unabhängige zeichen. Das siehst du auch sofort, wenn du deine char variable in eine int umwandelst - da hast du dann 116 bei einem kleinen und 84 bei einem großen T.
    Der Fehler muss also irgendwo anders liegen. Der zusammenhang in dem dein Codeschnipselchen steht wäre nicht schlecht und wenn du schreiben könntest wie es sich bemerkbar macht, dass gerade beide caes ausgelöst werden und nicht nur eins.
  4. Sie werden ganz sicher nicht beide angesprochen. Kannst du sagen, was tastatur_g('t') für eine Funktion ist? Ich habe den Verdacht, dass sich die Funktion selbst aufruft mit dem kleinen Buchstaben. Kann das sein?

    Beitrag zuletzt geändert: 24.8.2010 15:57:48 von nikic
  5. Autor dieses Themas

    t**k

    Also die Codes sind:
    main.cpp:

    /*.--------------------------------------------.*/
    /*. main.cpp                                   .*/
    /*. Author: Tristan                .*/
    /*. Aktualisiert: 2010/08/24                   .*/
    /*. Includes: windows.h, process.h, tastatur.h .*/
    /*. Namespaces:                                .*/
    /*.--------------------------------------------.*/
    
    #include <windows.h>
    #include <process.h>
    #include "tastatur.h"
    
    int tastatur_g(char);
    int tastatur(char);
    
    
    int main() {
    	WinExec("C:\\Windows\\System32\\notepad.exe", SW_SHOW);
    	tastatur('T');
    	tastatur('r');
    	tastatur('i');
    	tastatur('s');
    	tastatur('t');
    	tastatur('a');
    	tastatur('n');
    
    }


    und tastatur.h:

    int tastatur_g(char taste) {
    	switch(taste) {
    		case 'a': taste = 0x41; break;
    		case 'b': taste = 0x42; break;
    		case 'c': taste = 0x43; break;
    		case 'd': taste = 0x44; break;
    		case 'e': taste = 0x45; break;
    		case 'f': taste = 0x46; break;
    		case 'g': taste = 0x47; break;
    		case 'h': taste = 0x48; break;
    		case 'i': taste = 0x49; break;
    		case 'j': taste = 0x4A; break;
    		case 'k': taste = 0x4B; break;
    		case 'l': taste = 0x4C; break;
    		case 'm': taste = 0x4D; break;
    		case 'n': taste = 0x4E; break;
    		case 'o': taste = 0x4F; break;
    		case 'p': taste = 0x50; break;
    		case 'q': taste = 0x51; break;
    		case 'r': taste = 0x52; break;
    		case 's': taste = 0x53; break;
    		case 't': taste = 0x54; break;
    		case 'u': taste = 0x55; break;
    		case 'v': taste = 0x56; break;
    		case 'w': taste = 0x57; break;
    		case 'x': taste = 0x58; break;
    		case 'y': taste = 0x59; break;
    		case 'z': taste = 0x5A; break;
    		default: break;
    	}
    
    	keybd_event(0xA1, 0, 0, 0);
    	keybd_event(taste, 0, 0, 0);
    	keybd_event(taste, 0, KEYEVENTF_KEYUP, 0);
    	keybd_event(0xA1, 0, KEYEVENTF_KEYUP, 0);
    
    	return 0;
    }
    
    int tastatur(char taste) {
    	switch(taste) {
    		case 'a': taste = 0x41; break;
    		case 'b': taste = 0x42; break;
    		case 'c': taste = 0x43; break;
    		case 'd': taste = 0x44; break;
    		case 'e': taste = 0x45; break;
    		case 'f': taste = 0x46; break;
    		case 'g': taste = 0x47; break;
    		case 'h': taste = 0x48; break;
    		case 'i': taste = 0x49; break;
    		case 'j': taste = 0x4A; break;
    		case 'k': taste = 0x4B; break;
    		case 'l': taste = 0x4C; break;
    		case 'm': taste = 0x4D; break;
    		case 'n': taste = 0x4E; break;
    		case 'o': taste = 0x4F; break;
    		case 'p': taste = 0x50; break;
    		case 'q': taste = 0x51; break;
    		case 'r': taste = 0x52; break;
    		case 's': taste = 0x53; break;
    		case 't': taste = 0x54; break;
    		case 'u': taste = 0x55; break;
    		case 'v': taste = 0x56; break;
    		case 'w': taste = 0x57; break;
    		case 'x': taste = 0x58; break;
    		case 'y': taste = 0x59; break;
    		case 'z': taste = 0x5A; break;
    		case ' ': taste = 0x20; break;
    		case 'T': tastatur_g('t'); break;
    		case 'H': tastatur_g('h'); break;
    		case 'K': tastatur_g('k'); break;
    		default: break;
    	}
    
    	keybd_event(taste, 0, 0, 0);
    	keybd_event(taste, 0, KEYEVENTF_KEYUP, 0);
    
    	return 0;
    }


    nikic schrieb: Sie werden ganz sicher nicht beide angesprochen. Kannst du sagen, was tastatur_g('t') für eine Funktion ist? Ich habe den Verdacht, dass sich die Funktion selbst aufruft mit dem kleinen Buchstaben. Kann das sein?


    Ich glaube nicht.

    dustboy schrieb: C++ unterscheidet schon von Haus aus zwischen 't' und 'T' - das sind für den compiler zwei komplet voneinander unabhängige zeichen. Das siehst du auch sofort, wenn du deine char variable in eine int umwandelst - da hast du dann 116 bei einem kleinen und 84 bei einem großen T.
    Der Fehler muss also irgendwo anders liegen. Der zusammenhang in dem dein Codeschnipselchen steht wäre nicht schlecht und wenn du schreiben könntest wie es sich bemerkbar macht, dass gerade beide caes ausgelöst werden und nicht nur eins.


    In dem Editor erscheinen beide Buchstaben, also steht dort nicht Tristan, sondern Ttristan

    mfg
  6. Du kannst dir deine ellenlangen switch-Anweisungen sparen. char-Variablen sind auch nichts anderes als Zahlen und ein 'A' hat den numerischen Wert 0x41 bzw. 65 und das gleiche gilt natürlich auch für kleine Buchstaben. 'a' ist 0x61 bzw. 97. Das ganze kann man hier nachlesen: https://secure.wikimedia.org/wikipedia/en/wiki/ASCII#ASCII_printable_characters

    Und um aus einer Großbuchstaben einen Kleinbuchstaben zu machen, muss man nur den Wert 32 dazuaddieren.

    Aber eigentlich ist diese ganze Unterscheidung zwischen Groß- und Kleinbuchstaben pupsegal.


    Und der Grund, warum er jetzt sowohl ein 'T' als auch ein 't' schreibt, liegt einfach an folgender Zeile:
    case 'T': tastatur_g('t'); break;

    Denn in dieser Zeile machst du keine Zuweisung an die Variable taste, so dass der Wert von taste gleich bleibt. Der Code macht den Funktionsaufruf tastatur_g( 't' ) und produziert damit ein großes 'T' und läuft dann weiter, so dass folgender Code mit der alten (unveränderten) taste-Variable weiterläuft:
    keybd_event(taste, 0, 0, 0);
    keybd_event(taste, 0, KEYEVENTF_KEYUP, 0);

    Und die taste-Variable enthält eben immer noch das 't'
  7. Autor dieses Themas

    t**k

    bladehunter schrieb: Du kannst dir deine ellenlangen switch-Anweisungen sparen. char-Variablen sind auch nichts anderes als Zahlen und ein 'A' hat den numerischen Wert 0x41 bzw. 65 und das gleiche gilt natürlich auch für kleine Buchstaben. 'a' ist 0x61 bzw. 97. Das ganze kann man hier nachlesen: https://secure.wikimedia.org/wikipedia/en/wiki/ASCII#ASCII_printable_characters


    Ohne die switch anweisung öffnet der bei mir im Editor nach dem t eine Suche und 0x61 ist bei mir die Zahl 1.


    Und um aus einer Großbuchstaben einen Kleinbuchstaben zu machen, muss man nur den Wert 32 dazuaddieren.

    Aber eigentlich ist diese ganze Unterscheidung zwischen Groß- und Kleinbuchstaben pupsegal.



    Für gewöhnlich ja, doch für mein project soll es groß und kleinschreibung geben.


    Und der Grund, warum er jetzt sowohl ein 'T' als auch ein 't' schreibt, liegt einfach an folgender Zeile:
    case 'T': tastatur_g('t'); break;

    Denn in dieser Zeile machst du keine Zuweisung an die Variable taste, so dass der Wert von taste gleich bleibt. Der Code macht den Funktionsaufruf tastatur_g( 't' ) und produziert damit ein großes 'T' und läuft dann weiter, so dass folgender Code mit der alten (unveränderten) taste-Variable weiterläuft:
    keybd_event(taste, 0, 0, 0);
    keybd_event(taste, 0, KEYEVENTF_KEYUP, 0);

    Und die taste-Variable enthält eben immer noch das 't'


    Und was muss ich machen damit dies nicht mehr passiert?

    mfg
  8. trik schrieb:
    Ohne die switch anweisung öffnet der bei mir im Editor nach dem t eine Suche und 0x61 ist bei mir die Zahl 1.

    Deine switch-Anweisungen haben gar keinen Effekt, weil du der Variable taste immer nur ihren eigenen Wert zuweist. Dein Problem liegt also woanders.


    Für gewöhnlich ja, doch für mein project soll es groß und kleinschreibung geben.

    Die steht dir ja auch von Haus aus zur Verfügung. Du musst Großbuchstaben nicht anders behandeln als Kleinbuchstaben.


    Und was muss ich machen damit dies nicht mehr passiert?

    Räum deinen Code erstmal auf. So wie du es machst, ist es viel zu kompliziert. Und beim Aufräumen wird dir dann auch möglicherweise selber klar, was du falsch gemacht hast.
  9. @blady: Er weist nicht den eigenen Wert zu, sondern den Wert des großgeschriebenen Buchstaben.

    @threadersteller: Könntest du uns erklären, wass du im Endeffekt willst? Weil zur Zeit macht dein Code recht wenig Sinn.
  10. Hm... Entweder hat der Threadsteller den ASCII nicht so ganz begriffen oder er wird dermaßen falsch verstanden...

    Für deine Zwecke reicht der grundlegende Codesatz: ASCII.

    Jeder Tastendruck wird normalerweise als char-Wert nach dem Code gespeichert. Ein 'A' wäre demnach dezimal 65 bzw. 0x41 in hexadezimal. Du konvertierst mit deinem Programm quasi das kleine 'a' in ein großes 'A'. Und wie unterscheidest du Groß- und Kleinschreibung danach? Das ist doch dein ursprüngliches Ziel gewesen?

    Wie blade es schon gesagt hat: subtrahiere 32 oder addiere 32 dazu, um von Klein- auf Großschreibung (oder umgekehrt) zu kommen, das würde auch ausreichen und spart eine Menge switch-Kacke.

    Wenn du dein Problem vielleicht aus einer anderen Sicht nochmal beschreiben könntest, könnten wir dir vielleicht eher helfen... so sieht es momentan aus, als ob du total auf dem falschen Dampfer bist...

    Beitrag zuletzt geändert: 24.8.2010 20:17:22 von tangoal
  11. Autor dieses Themas

    t**k


    @threadersteller: Könntest du uns erklären, wass du im Endeffekt willst? Weil zur Zeit macht dein Code recht wenig Sinn.


    Im Endeffekt möchte ich einen Code, der einen Satz/Text auslesen kann und dann in ein beliebiges Programm tippen kann. Und bei Texten und Sätzen sieht es nicht schön aus, wenn nur klein oder groß geschrieben wird.

    tangoal schrieb: Hm... Entweder hat der Threadsteller den ASCII nicht so ganz begriffen oder er wird dermaßen falsch verstanden...

    Für deine Zwecke reicht der grundlegende Codesatz: ASCII.

    Jeder Tastendruck wird normalerweise als char-Wert nach dem Code gespeichert. Ein 'A' wäre demnach dezimal 65 bzw. 0x41 in hexadezimal. Du konvertierst mit deinem Programm quasi das kleine 'a' in ein großes 'A'. Und wie unterscheidest du Groß- und Kleinschreibung danach? Das ist doch dein ursprüngliches Ziel gewesen?

    Wie blade es schon gesagt hat: subtrahiere 32 oder addiere 32 dazu, um von Klein- auf Großschreibung (oder umgekehrt) zu kommen, das würde auch ausreichen und spart eine Menge switch-Kacke.

    Wenn du dein Problem vielleicht aus einer anderen Sicht nochmal beschreiben könntest, könnten wir dir vielleicht eher helfen... so sieht es momentan aus, als ob du total auf dem falschen Dampfer bist...


    Für die Funktion die ich benutze benötige ich, wenn ich bis jetzt alles richtig verstanden habe, einen hexadezimalen Wert, also 0x41 für ein 'a'. Für das große 'A' muss ich dem Programm noch sagen das es die Shift Taste drücken soll. Ich kann leider nicht verstehen was das mit 0x61 für das große 'A' gemeint ist. Bei mir ist 0x61 die Zahl 1.

    In dem Programm geht es darum eine Tastatur zu simulieren. Deswegen die groß-/kleinschreibung unterscheidung.
  12. Also, ich habe mich gerade mal ein wenig durch die MSDN Seiten geklickt.
    Der erste Parameter von keyb_event erwartet einen sogenannten Virtual Key Code. Wie es aussieht, sind die Keycodes nicht mit dem ASCII-Code deckungsgleich. Das hätte MS wirklich besser machen können.

    Ich habe selber noch nie mit der WinAPI programmiert und habe den folgenden Code auch nicht getestet, da ich gerade kein Windows zur Hand habe, was ich für meine Zwecke missbrauchen könnte.
    #include <windows.h>
    #include <process.h>
    
    void tastatur( char * eingabe ) {
    	while( *eingabe ) {
    		if( *eingabe >= 65 && *eingabe <= 90  ) { //Großbuchstaben
    			keybd_event(0xA1, 0, 0, 0); //shift drücken
    			keybd_event(*eingabe, 0, 0, 0); //*eingabe drücken
    			keybd_event(*eingabe, 0, KEYEVENTF_KEYUP, 0); //*eingabe loslassen
    			keybd_event(0xA1, 0, KEYEVENTF_KEYUP, 0); //shift loslassen
    		} else {
    			keybd_event(*eingabe, 0, 0, 0); //*eingabe drücken
    			keybd_event(*eingabe, 0, KEYEVENTF_KEYUP, 0); //*eingabe loslassen
    		}
    		eingabe++; //naechstes Zeichen
    	}
    }
    
    int main( int argc, char ** argv ) {
    	WinExec("C:\\Windows\\System32\\notepad.exe", SW_SHOW); //wahrscheinlich kann man auch / als Trennzeichen benutzen
    	tastatur( "Tristam" );
    	return 0;
    }

    Desweiteren wäre anzumerken, dass keyb_event() veraltet ist.

    und achja: Es ist egal, ob du 0x20 oder einfach 32 schreibst. Beides ist die dezimale Zahl 32. Der Computer rechnet intern eh beides in den Binärwert 100000 um

    edit: Fehler beseitigt.

    Beitrag zuletzt geändert: 25.8.2010 18:15:19 von bladehunter
  13. Ah, ok... so langsam verstehe ich was du willst. Habe es am Anfang genau umgekehrt verstanden. Du musst an deiner Ausdrucksweise üben und ich meine Verständnisschwierigkeiten verringern:-)

    Du willst also Text z.B. aus einer Datei lesen, und dann einfach die Tastendrücke simulieren, um diesen Text wie von Geisterhand per Tastatur zu tippen? Und irgendein anderes Programm verarbeitet diese Tastaturdrücke dann weiter?

    Es gibt 2 Probleme, die bei dir auftauchen:

    1. Du brauchst eine Konvertierung zwischen ASCII zu dem Virtual KeyCode
    2. Die Shift-Taste hat einen eigenen Virtual KeyCode, den du mit keybd_event selber verschicken musst

    Ok, dann pass gut auf, ich habe einen Lösungsvorschlag für dich:

    1. Informier dich bitte über ASCII. (meinen Link hast du wohl nicht mal angeklickt, sonst wüsstest du das im ASCII Code 0x61 ein 'a' ist und 0x41 ein 'A'). Und in C/C++ sind solche Angaben wie 'a' immer in ASCII (bzw. Unicode), aber nicht in einem Virtual KeyCode! Der gilt nur für Tastendrücke, die von der Tastatur selbst kommen!
    2. Du entfernst die ganze Switch-Blöcke und ersetzt sie durch folgenden Code, den dir Bladehunter gegeben hat. Genauso hätte ich es nämlich auch versucht. Aber Mist, er war halt viel schneller als ich... :-D
  14. Autor dieses Themas

    t**k

    bladehunter schrieb: Also, ich habe mich gerade mal ein wenig durch die MSDN Seiten geklickt.
    Der erste Parameter von keyb_event erwartet einen sogenannten Virtual Key Code. Wie es aussieht, sind die Keycodes nicht mit dem ASCII-Code deckungsgleich. Das hätte MS wirklich besser machen können.

    Ich habe selber noch nie mit der WinAPI programmiert und habe den folgenden Code auch nicht getestet, da ich gerade kein Windows zur Hand habe, was ich für meine Zwecke missbrauchen könnte.
    #include <windows.h>
    #include <process.h>
    
    void tastatur( char * eingabe ) {
    	while( *eingabe ) {
    		if( *eingabe >= 65 && *eingabe <= 90  ) { //Großbuchstaben
    			keybd_event(0xA1, 0, 0, 0); //shift drücken
    			keybd_event(*eingabe, 0, 0, 0); //*eingabe drücken
    			keybd_event(*eingabe, 0, KEYEVENTF_KEYUP, 0); //*eingabe loslassen
    			keybd_event(0xA1, 0, KEYEVENTF_KEYUP, 0); //shift loslassen
    		} else {
    			keybd_event(*eingabe, 0, 0, 0); //*eingabe drücken
    			keybd_event(*eingabe, 0, KEYEVENTF_KEYUP, 0); //*eingabe loslassen
    		}
    		eingabe++; //naechstes Zeichen
    	}
    }
    
    int main( int argc, char ** argv ) {
    	WinExec("C:\\Windows\\System32\\notepad.exe", SW_SHOW); //wahrscheinlich kann man auch / als Trennzeichen benutzen
    	tastatur( "Tristam" );
    	return 0;
    }

    Desweiteren wäre anzumerken, dass keyb_event() veraltet ist.

    und achja: Es ist egal, ob du 0x20 oder einfach 32 schreibst. Beides ist die dezimale Zahl 32. Der Computer rechnet intern eh beides in den Binärwert 100000 um

    edit: Fehler beseitigt.


    Der Code funktioniert immer noch nicht, immer wenn kleinbuchstaben kommen kommt nicht, das was kommen soll. Aber ich habe es jetzt selbst hinbekommen.

    Der Code:
    int tastatur(char taste) {						// Anfang der Tipp-Funktion
    	bool tippen = true;							// Wenn nicht getippt werden soll muss 'tippen' = false sein
    	bool shift  = false;						// Bei Großbuchstaben 'shift' = true
    	bool strg   = false;						// Bei Strg 'strg' = true
    	bool alt    = false;						// Bei Alt 'alt' = true
    	bool altgr  = false;						// Bei Alt Gr 'altgr' = true
    	switch(taste) {
    		/*. Kleinbuchstaben .*/
    		case 'a': taste = 0x41; break;
    		case 'b': taste = 0x42; break;
    		case 'c': taste = 0x43; break;
    		case 'd': taste = 0x44; break;
    		case 'e': taste = 0x45; break;
    		case 'f': taste = 0x46; break;
    		case 'g': taste = 0x47; break;
    		case 'h': taste = 0x48; break;
    		case 'i': taste = 0x49; break;
    		case 'j': taste = 0x4A; break;
    		case 'k': taste = 0x4B; break;
    		case 'l': taste = 0x4C; break;
    		case 'm': taste = 0x4D; break;
    		case 'n': taste = 0x4E; break;
    		case 'o': taste = 0x4F; break;
    		case 'p': taste = 0x50; break;
    		case 'q': taste = 0x51; break;
    		case 'r': taste = 0x52; break;
    		case 's': taste = 0x53; break;
    		case 't': taste = 0x54; break;
    		case 'u': taste = 0x55; break;
    		case 'v': taste = 0x56; break;
    		case 'w': taste = 0x57; break;
    		case 'x': taste = 0x58; break;
    		case 'y': taste = 0x59; break;
    		case 'z': taste = 0x5A; break;
    		/*. Zahlen .*/
    		case '0': taste = 0x30; break;
    		case '1': taste = 0x31; break;
    		case '2': taste = 0x32; break;
    		case '3': taste = 0x33; break;
    		case '4': taste = 0x34; break;
    		case '5': taste = 0x35; break;
    		case '6': taste = 0x36; break;
    		case '7': taste = 0x37; break;
    		case '8': taste = 0x38; break;
    		case '9': taste = 0x39; break;
    		/*. Sonderzeichen .*/
    		case '#': taste = 0xBF; break;
    		case '<': taste = 0xE2; break;
    		case 'ß': taste = 0xDB; break;
    		case ' ': taste = 0x20; break;
    		case '.': taste = 0xBE; break;
    		case ',': taste = 0xBC; break;
    		case '-': taste = 0xBD; break;
    		case '+': taste = 0xBB; break;
    
    		case '@': taste = 0x51; altgr = true; break;
    		case '²': taste = 0x32; altgr = true; break;
    		case '³': taste = 0x33; altgr = true; break;
    		case '{': taste = 0x37; altgr = true; break;
    		case '[': taste = 0x38; altgr = true; break;
    		case ']': taste = 0x39; altgr = true; break;
    		case '}': taste = 0x30; altgr = true; break;
    		case '|': taste = 0xE2; altgr = true; break;
    		case '\\': taste = 0xDB; altgr = true; break;
    		case '~': taste = 0xBB; altgr = true; break;
    
    		case '\'': taste = 0xBF; shift = true; break;
    		case '!': taste = 0x31; shift = true; break;
    		case '\"': taste = 0x32; shift = true; break;
    		case '§': taste = 0x33; shift = true; break;
    		case '$': taste = 0x34; shift = true; break;
    		case '%': taste = 0x35; shift = true; break;
    		case '&': taste = 0x36; shift = true; break;
    		case '/': taste = 0x37; shift = true; break;
    		case '(': taste = 0x38; shift = true; break;
    		case ')': taste = 0x39; shift = true; break;
    		case '=': taste = 0x30; shift = true; break;
    		case '>': taste = 0xE2; shift = true; break;
    		case '?': taste = 0xDB; shift = true; break;
    		case ':': taste = 0xBE; shift = true; break;
    		case ';': taste = 0xBC; shift = true; break;
    		case '_': taste = 0xBD; shift = true; break;
    		case '*': taste = 0xBB; shift = true; break;
    		/*. Großbuchstaben .*/
    		case 'A': shift = true; break;
    		case 'B': shift = true; break;
    		case 'C': shift = true; break;
    		case 'D': shift = true; break;
    		case 'E': shift = true; break;
    		case 'F': shift = true; break;
    		case 'G': shift = true; break;
    		case 'H': shift = true; break;
    		case 'I': shift = true; break;
    		case 'J': shift = true; break;
    		case 'K': shift = true; break;
    		case 'L': shift = true; break;
    		case 'M': shift = true; break;
    		case 'N': shift = true; break;
    		case 'O': shift = true; break;
    		case 'P': shift = true; break;
    		case 'Q': shift = true; break;
    		case 'R': shift = true; break;
    		case 'S': shift = true; break;
    		case 'T': shift = true; break;
    		case 'U': shift = true; break;
    		case 'V': shift = true; break;
    		case 'W': shift = true; break;
    		case 'X': shift = true; break;
    		case 'Y': shift = true; break;
    		case 'Z': shift = true; break;
    		default: break;
    	}
    
    	if(tippen) {
    		if(shift) {
    			keybd_event(0xA1, 0, 0, 0);
    		}
    		if(strg || altgr) {
    			keybd_event(0xA2, 0, 0, 0);
    		}
    		if(alt || altgr) {
    			keybd_event(0x12, 0, 0, 0);
    		}
    		keybd_event(taste, 0, 0, 0);
    		keybd_event(taste, 0, KEYEVENTF_KEYUP, 0);
    		if(alt || altgr) {
    			keybd_event(0x12, 0, KEYEVENTF_KEYUP, 0);
    		}
    		if(strg || altgr) {
    			keybd_event(0xA2, 0, KEYEVENTF_KEYUP, 0);
    		}
    		if(shift) {
    			keybd_event(0xA1, 0, KEYEVENTF_KEYUP, 0);
    		}
    	}
    	return 0;
    }


    So funktioniert es.

    mfg
  15. trik schrieb:
    So funktioniert es.

    mfg

    Mit Verlaub, es ist aber wirklich keine schöne Lösung. Guter Code ist meistens auch schöner Code. Natürlich bist du noch ein Programmier-Anfänger, aber du solltest dir trotzdem klarmachen, dass der Computer für die stupide Arbeit zuständig ist. Und es ist nunmal stupide alle Keycodes abzutippen. Diese Aufgabe lässt sich mit viel weniger Aufwand lösen.
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!