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 Bild  

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 Bild  



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;
}