Tasten simulieren



  • Vorden schrieb:

    du könntest die ASCII-Codes für STRG ALT und ENTF in char-Variablen, oder int-Variablen schreiben und dann dem Programm damit sagen, was es machen soll

    Es gibt keine ASCII-Codes für Strg oder Alt. ASCII-Codes repräsentieren Zeichen, keine Tasten. Vielleich solltest du dich generell vorher etwas besser informieren. Vieles, was du so von dir gibst, ist falsch 🙂

    Thomasder, mit Standard-C++ kannst du sowieso keine Tastendrücke simulieren, das geht nur mit betriebssystemspezifischen Funktionen. Unter Windows ist gerade diese Tastenkombination besonders geschützt, damit die Anmeldung nicht durch ein Programm erfolgen kann. Wofür brauchst du das?



  • Danke erstmal für eure antworten 🙂

    Ich will ein text automatisch schreiben lassen er ist 20 zeilen lang er soll nämlich buchstabe nach buchstabe geschrieben werden das will ich machen und ich kenne keine andere möglich keit als jeden buchstaben mit einer verzögerung von so 100ms das es nicht einfach denn text ausgibt sondern richtig buchstabe nach buchstabe ´schreibt 🙂



  • Ein wenig OT:

    Naja,
    deine Aufgabe kann man doch auch einfacher lösen, oder? ^^

    Mir schiesst jetzt sowas durch den Kopf:

    string deintext = "blablabla";
    unsigned int i = 0;
    for (i = 0; i < deintext.length(); i++)
    {
        cout << deintext[i];
        Sleep(100);
    }
    

    Oder hab ich was an deiner Vorstellung falsch verstanden?

    MfG

    Vic



  • string deintext = "blablabla";
    unsigned int i = 0;
    for (i = 0; i < deintext.length(); i++)
    {
    cout << deintext[i];
    Sleep(100);
    }

    ??? geht nicht ???

    kannst du mir das bitte funktionierend geben ?
    währe echt net



  • thomasder schrieb:

    ??? geht nicht ???

    mein windows geht grad auch nich.... kannst du mir sagen warum?



  • ?? ne aber sag mal ein paar sachen waas nicht geht dann kann mann dir helfen

    und ich kenne mich net gut mit c++ aus deswegen weiss ich net woran das liegt also wenn ich kompliemiere kommt immer (benutze dev cpp) immer ihn der 1 zeile bei string rotes X



  • thomasder schrieb:

    ?? ne aber sag mal ein paar sachen waas nicht geht dann kann mann dir helfen

    genau das wollte ich damit sagen 😉

    poste die fehlermeldungen die der compiler ausspuckt, dann wird dir geholfen 🙂
    meine kristallkugel is halt grad in der werkstatt



  • 3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected ,' or;' before '++' token
    3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected constructor, destructor, or type conversion before '++' token
    3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected ,' or;' before '<' token
    3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected constructor, destructor, or type conversion before '<' token
    3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected ,' or;' before "for"
    3 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp expected unqualified-id before "for"
    1 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp `string' does not name a type 😕



  • hier mal der komplette code

    #include <windows.h> // für Sleep
    #include <string> // für string
    #include <iostream> // für cout
    using namespace std; // damit du string statt std::string und cout statt std::cout schreiben kannst
    
    int main()
    {
      string deintext = "blablabla";
      unsigned int i = 0;
      for (i = 0; i < deintext.length(); i++)
      {
        cout << deintext[i];
        Sleep(100);
      }
    
      return 0;
    }
    


  • G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp In function `int main()':

    11 G:\Dokumente und Einstellungen\Thomas\Eigene Dateien\hallo welt\gtgg.cpp `cout' undeclared (first use this function)
    (Each undeclared identifier is reported only once for each function it appears in.)



  • ja hab ich beim ersten mal vergessen... habs geändert



  • Danke so geht es doch ! kann ich das auch ihn einem fenster machen (windows style) oder ist das zu zeit aufwendig



  • dafür kannst du noch zu wenig c++

    an mfc oder winapi würdest dir wahrscheinlich die zähne ausbeißen
    du könntest es mal mit http://www.clanlib.org/ versuchen... is relativ einfach aufgebaut und nimmt dir die meiste programmierarbeit ab
    ließ auf jeden fall n paar tutorials durch



  • Ok mache ich mal danke für die fette hilfe



  • np immer wieder gern 🙂



  • Wenn Du die Funktionen der stdio.h benutzt, statt Streams, reduziert sich das Problem auf einen simplen Pointerwechsel - etwa so

    void MyClass::InterpreteKeys (FILE   *pSource)
    {
        FILE    *pFileIn;
        char     cKey;
        bool     fRunLoop = true
    
        if (pSource == NULL)
            pFileIn = stdin;
        else
            pFileIn = pSource;
    
        while (fRunLoop == true)
        {
             cKey = fgetc(pSource);
             if (cKey == EOF)
                 fRunLoop = false
             else
                 //Interpretiere hier cKey!
        }
    }
    


  • @MBCS-CITP:

    if (cKey == EOF)

    Dieser Vergleich kann so niemals wahr sein - und wenn doch, würde das eine Assertion rechtfertigen. cKey muss ein int sein. Außerdem ist das Zeichen in der unsigned-char Repräsentation.

    Mal davon abgesehen, dass wir hier im C++ Forum sind 😉



  • hier ist die lösung

    #include <iostream>
    #include <conio.h>

    using namespacen std;

    int main()
    {
    char eingabe;
    cout<<"gib was ein du.....";
    wahl=getch();

    }

    den code habe ich nicht getest ist glaub auch nicht nötig!!



  • 7H3 N4C3R schrieb:

    @MBCS-CITP:

    if (cKey == EOF)

    Dieser Vergleich kann so niemals wahr sein - und wenn doch, würde das eine Assertion rechtfertigen. cKey muss ein int sein. Außerdem ist das Zeichen in der unsigned-char Repräsentation.

    fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.

    7H3 N4C3R schrieb:

    Mal davon abgesehen, dass wir hier im C++ Forum sind 😉

    Man soll dann die stdio.h-Funktione nutzen, wenn einfacher zu handaben sind. Es kommt immer darauf an und ich habe nie ein Problem darin gesehen, die stdio.h und die std:: nach Zweck und Anwendung zu mischen. Wobei ich meistens die stdio.h einfach eleganter und einfacher halte (Geschmackssache).



  • MBCS-CITP schrieb:

    fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.

    Sag ich doch. Und das ist auch der Fehler in deinem Beispiel. Wenn Du schon in die Manpage gucken kannst, wirst Du auch festgestellt haben, dass der Rückgabewert int - und nicht char - ist. EOF ist nicht in (unsigned) char darstellbar und ist typischerweise -1. Der Datentyp von cKey, also char, ist schlichtweg falsch und die Bedingung kann (darf!) so nie wahr sein.


Anmelden zum Antworten