wenn mir jetzt noch jemand sagen kann wiso das programm 2mal durchläuft, obwohl ich nur einmal gedrückt habe, dann mache ich luftsprünge

komischerweisse ist das aber nur bei den ersten 2 mal der fall, dass "er" das programm 2 mal ausführt, danach klappt es wie es sollte - aber leider auchnicht immer.
..
wenn ich wärend der sleeptime drücke, wird das programm nur einmal ausgeführt, dnach immer 2 mal



Code:
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <winioctl.h>

using namespace std;


int main(void)
{
DWORD dwfreq=800, dwDuration=200;
DWORD dwEvtMask;
int anzahl=0;
BOOL succ;
///////////////////////////////////////////////////
DCB dcb;

memset(&dcb, sizeof(dcb), 0);

dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = CBR_600;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;                     // enable parity checking 
dcb.fOutxCtsFlow = FALSE;               // CTS output flow control 
dcb.fOutxDsrFlow = FALSE;               // DSR output flow control 
dcb.fDtrControl = DTR_CONTROL_ENABLE;   // DTR flow control type 
dcb.fDsrSensitivity = FALSE;            // DSR sensitivity 
dcb.fTXContinueOnXoff = FALSE;          // XOFF continues Tx 
dcb.fOutX = FALSE;                      // XON/XOFF out flow control 
dcb.fInX = FALSE;                       // XON/XOFF in flow control 
dcb.fErrorChar = FALSE;                 // enable error replacement 
dcb.fNull = 0;                          // enable null stripping 
dcb.fRtsControl = RTS_CONTROL_ENABLE;   // RTS flow control 
dcb.fAbortOnError = FALSE;              // abort on error 
dcb.fDummy2 = 0;                        // reserved 
dcb.wReserved = 0;                      // not currently used 
dcb.XonLim = 0;                         // transmit XON threshold 
dcb.XoffLim =0;                         // transmit XOFF threshold 
dcb.ByteSize = 8;                       // number of bits/byte, 4-8 
dcb.Parity = NOPARITY;                  // 0-4=no,odd,even,mark,space 
dcb.StopBits = ONESTOPBIT;              // 0,1,2 = 1, 1.5, 2 
dcb.XonChar = 0;                        // Tx and Rx XON character 
dcb.XoffChar = 0;                       // Tx and Rx XOFF character 
dcb.ErrorChar = 0;                      // error replacement character 
dcb.EofChar = 0;                        // end of input character 
dcb.EvtChar = 0;                        // received event character 
dcb.wReserved1 =0;                      // reserved; do not use 
///////////////////////////////////////////////////

HANDLE hCOM = CreateFile ("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

//////////////////////////////
start:
//////////////////////////////
//warteschelife - damit das signal nicht gleich 2 mal abgegriffen wird
printf("Bitte warten!...");
Sleep(2000);
printf("...Weiter.");
//warteschleife ende
//////////////////////////////


succ= SetCommState(hCOM, &dcb);


//////////////////////////////
cout << "" <<endl;
cout <<"------------------------"<<endl;
cout <<"Auf Signal warten."<<endl;


SetCommMask(hCOM,EV_DSR);               // 
WaitCommEvent(hCOM,&dwEvtMask,NULL);    // auf tastendruck warten


printf("%d",dwEvtMask);
cout <<"<--->"<<endl;
printf("%d",EV_DSR);

if(dwEvtMask & EV_DSR)
{
  printf("....jjojojoojojojojoj....");  
  
//noch ein peep ausgeben
Beep (dwfreq,dwDuration);
//cout<<'\a';
//bepp ende

}

cout <<"Signal erhalten."<<endl;
cout <<"------------------------"<<endl;
cout << "" <<endl;
//////////////////////////////


//////////////////////////////
//datei oeffnen

//funktioniert
cout <<"Increment wird geoeffnet."<<endl;
cout <<"------------------------"<<endl;
system("d:\\Dev-Cpp\\Examples\\inc.bat");
cout <<"------------------------"<<endl;
cout <<"Increment beendet."<<endl;
//datei oeffnen ende
//////////////////////////////

//////////////////////////////
++anzahl;
cout << "" <<endl;
cout << "" <<endl;
printf("Es wurde ");
printf("%d",anzahl);
printf(" mal Incrementiert.");
cout << "" <<endl;
cout << "" <<endl;
//////////////////////////////

cout << "****************************" <<endl;
cout << "" <<endl;


goto start;
//////////////////////////////

CloseHandle(hCOM);
return 0;
}