Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » timer zu langsam

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.03.2006, 23:32 Uhr
~chris
Gast


ich bin derzeit dabei ein programm zu machen, welches alle aktivitäten an der Tastatur und Maus aufzeichnet und auch wieder abspielen kann.
Die Aufzeichnung funktioniert zwar aber die is viel zu langsam, so das buchstaben verloren gehen...
ich habe zu diesem zweck einen timer erstellt mit nem intervall von 1. in diesem timer werden jetzt bei jedem durchlauf alle tasten überprüft...
und einige tasten muss ich bis zu einer halben sekunde gedrückt halten, damit diese überhaupt wargenommen werden. gibt es eine möglichkeit das schneller zu machen? und warum läuft das überhaupt so langsam? ich hab hier mal den code:

C++:
int sleeper=0;

int keystat[255];//array zum speichern der tastenstatusse während der aufzeichnung

int key[]={0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,
0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,
0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
0x55,0x56,0x57,0x58,0x59,0x5A,0x70,0x71,
0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
0x7A,0x7B,0x08,0x09,0x0C,0x0D,0x10,0x11,
0x12,0x13,0x14,0x90,0x1B,0x20,0x21,0x22,
0x23,0x24,0x25,0x27,0x26,0x28,0x2A,0x2D,
0x2E,0x2F,0x5B,0x5C,0x5F,0x60,0x61,0x62,
0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,
0x6D,0x6F,0x6B};//Tasten

int keycounter=0;

void __fastcall TForm1::RecorderTimer(TObject *Sender)
{
   if (GetKeyState(0x60)<0) {//fals die taste gedrückt wurde...
       Recorder->Enabled=false;
       Sleeper->Enabled=false;
       Application->MessageBox("Aufzeichnung beendet!","WinBot",MB_OK);
       }
   else
   {


        if(GetKeyState(key[keycounter])<0&&keystat[keycounter]==0)//fals die taste gedrückt wird, und fals diese noch nicht gedrückt ist...
        {
        AdjustGrid(StringGrid1, false, false, 1);
        StringGrid1->Row=StringGrid1->RowCount-1;
        StringGrid1->Cells[0][StringGrid1->Row-1]="no event";
        StringGrid1->Cells[2][StringGrid1->Row-1]="sleep";
        StringGrid1->Cells[3][StringGrid1->Row-1]=sleeper;
        AdjustGrid(StringGrid1, false, false, 1);
        StringGrid1->Row=StringGrid1->RowCount-1;
        StringGrid1->Cells[0][StringGrid1->Row-1]="no event";
        StringGrid1->Cells[2][StringGrid1->Row-1]="presskey";
        StringGrid1->Cells[3][StringGrid1->Row-1]=getkeystring(key[keycounter]);
        keystat[keycounter]=1;
        sleeper=0;
        }
        if(keystat[keycounter]==1)//fals die taste gedrückt ist
        {
        if(GetKeyState(key[keycounter])<0)//prüfe, ob sie immernoch gedrückt ist...
        {}else{//fals nicht...
        AdjustGrid(StringGrid1, false, false, 1);
        StringGrid1->Row=StringGrid1->RowCount-1;
        StringGrid1->Cells[0][StringGrid1->Row-1]="no event";
        StringGrid1->Cells[2][StringGrid1->Row-1]="sleep";
        StringGrid1->Cells[3][StringGrid1->Row-1]=sleeper;
        AdjustGrid(StringGrid1, false, false, 1);
        StringGrid1->Row=StringGrid1->RowCount-1;
        StringGrid1->Cells[0][StringGrid1->Row-1]="no event";
        StringGrid1->Cells[2][StringGrid1->Row-1]="releasekey";
        StringGrid1->Cells[3][StringGrid1->Row-1]=getkeystring(key[keycounter]);
        keystat[keycounter]=0;
        sleeper=0;
        }        }
        keycounter++;
        if(keycounter==89)
        {keycounter=0;}

   }//ende else
}//ende void


Dieser Post wurde am 02.03.2006 um 09:17 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.03.2006, 17:12 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Ohne mich groß durch den Quellcode gewühlt zu haben:
1. Stelle niemals TTimer::Interval auf einen Wert < 20!
2. Bei den ganzen VCL-Funktionen, die du da jede Millisekunde benutzen willst ... Da ist nicht der Timer zu langsam sondern selbstverständlich dein PC.

Dieser Post wurde am 02.03.2006 um 17:13 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.03.2006, 19:04 Uhr
~Kris
Gast


Warum nimmst du nicht ne "Endlosschleife" und machst dort die Tastenabfrage rein?

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.03.2006, 21:24 Uhr
Spacelord
Hoffnungsloser Fall


Ich denke das ist eher nen Fall für nen Keyboard oder JournalRecordProc Hook.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: