Sleep in ButtonClick Funktion nicht gefunden



  • Hallo,

    ich habe schon die Suchfunktion benutzt, konnte leider nur nichts passendes finden.

    Ich möchte in der buttonClick Funktion ein Sleep verwenden, allerdings sagt er mir beim compilieren, dass es ein undefinierter Bezeichner sei.

    In der Hauptquell datei des Projekts habe ich die windows.h eingebunden und dort in der main() funktion wird das Sleep auch gefunden.

    Die ButtonClick Funktion ist ja in der Form1.h(wird ja automatisch da angelegt, }wenn ich im EntwurfsFenster auf den Button klicke).

    Meine Frage also: was muss ich tun um die Sleep Funktion auch dort benutzen zu können?

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
            IntPtr calculatorHandle = FindWindow("test", "test");
    
            if (calculatorHandle == IntPtr::Zero)
            {
                MessageBox::Show("Calculator is not running.");
                return;
            }
    		textBox1->Text=  calculatorHandle.ToString();
            // Make Calculator the foreground application and send it
            // a set of calculations.
            SetForegroundWindow(calculatorHandle);
    		Sleep(50);
    		SendKeys::SendWait("A");
    
    		}
    

    Ein anderes Problem, dass sich mit dem Sleep vielleicht lösen lässt, ist dass das Sendwait() nur einmal pro programm start funktioniert. Danach kommen die Tastendrücke nicht mehr im anderen Programm an. Das lustige ist, dass Winspector die Tastendrücke jedoch beim Zielprogramm anzeigt, nur wird nicht mehr in das Edit Fenster geschrieben.
    Vielleicht weil das Programm nach vorne holen zu lange dauert oder so was.

    Ich benutze Visual C++ 2008 Express Edition und bin da noch ein blutiger Anfänger.

    Danke im voraus

    veio


  • Mod

    Falsches Forum: Gehört nach C++/CLI!

    SetForegroundWindow ist evtl. gar nicht erlaubt für Dich und kommt nicht in den Vordergrund. Du kennst die Doku?
    http://msdn2.microsoft.com/en-us/library/ms633539(VS.85).aspx

    Dieser Artikel ist zwar für VB 6 geschrieben passt aber auch auf Dein Problem
    http://msdn2.microsoft.com/de-de/library/bb979463.aspx



  • Also SetForegroundWindow funktioniert definitiv in meinem programm 🙂



  • habe mal statt "Sleep(50);" "for(int i=0;i<50000000;i++);" verwendet und dann wird das A richtig gesendet..ein Sleep() wäre aber einiges schöner 😞


  • Mod

    veio schrieb:

    habe mal statt "Sleep(50);" "for(int i=0;i<50000000;i++);" verwendet und dann wird das A richtig gesendet..ein Sleep() wäre aber einiges schöner 😞

    Das ist in meinen Augen Unsinn!



  • Inwiefern?

    Ohne die Schleife kommt das A nun mal nicht im Chatfenster an, mit schon.



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    veio schrieb:

    Inwiefern?

    Ohne die Schleife kommt das A nun mal nicht im Chatfenster an, mit schon.

    1. Schleife ist je Prozessor nicht konstant.
    2. Sleep müsste das selbe tun, außer Du wartest evtl. nicht lange genug.



  • Ja, da soll auch nicht wirklich ne sinnlose Schleife hin, nur brauchte ich was, was ein wenig zeit verbraucht und Sleep kann ich ja nicht aufrufen. Das ist auch die Frage: Wie kann ich da Sleep aufrufen?


Anmelden zum Antworten