Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

z.b alle 35 sekunden eine bestimmte funktion aufrufen

Erstmal Hallo,

ich bräuchte ein kleines Programm das alle 35 sec eine Aktion ausführt. Am besten in C++ das hab ich schon.

Jedoch kenn ich mich in C++ nicht wirklich aus.

Die Aktion müsste eine Simulation einer Taste (zb Zahl 1) sein oder ein Mausklick.

Jetzt wollt ich fragen ob mir vielleicht (eher zufällig) jemand hier helfen kann.

@void - von dir hab ich iin einem Thread gefunden das dies mit SetTimer() gehen müsste - nur wie?

MfG
ein kleines Irrlicht


Antworten zu z.b alle 35 sekunden eine bestimmte funktion aufrufen:

Timer
Sollte eigentlich verständlich sein,bei Fragen kannst du dich ja melden.

Hallo an alle,

also ich hab mich ein wenig damit auseinandergesetzt.

Das Programm hab ich - das Programm läuft nur mit einem kleinen Problem.

Also der Link von dir funzt nur mit IE (hab ich gar net drauf) aber die Seite find ich eh net so gut.

Wer sichs runterladen will:

http://www.daoc.dark-empire.net/Testprogramm.rar


Naja und nun zu meinem Problem. Das Programm funzt im Notepad, Word - Windows Explorer nur wollte ich das die Taste 1 in nem Spiel (Dark Age of Camelot) gedrückt wird.

jedoch da gehts nich obwohl das programm läuft (hab die TastaturLED´s blinken lassen zur Kontrolle)

muss man da irgendwas angeben wenn man ne Anwenung wie n Spiel Startet, oder kann ich das durch evtl kleine Änderungen ausgleichen.

MfG

ein kleines Irrlicht.



Hier der Quelltext:


#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

const char   szAppName[] = "Uebung 1: Timer programmieren";      // Global, da in WndProc benutzt

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
   MSG         msg;
   HWND      hWnd;
   WNDCLASS   wc;

   wc.cbClsExtra         = 0;
   wc.cbWndExtra         = 0;
   wc.hbrBackground      = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
   wc.hCursor            = LoadCursor(NULL, IDC_ARROW);
   wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
   wc.hInstance         = hInstance;
   wc.lpfnWndProc         = WndProc;
   wc.lpszClassName      = szAppName;
   wc.lpszMenuName         = NULL;
   wc.style            = CS_HREDRAW | CS_VREDRAW;

   RegisterClass(&wc);

   hWnd = CreateWindow(   szAppName,
                     szAppName,
                     WS_OVERLAPPEDWINDOW,
                     CW_USEDEFAULT,
                     CW_USEDEFAULT,
                     CW_USEDEFAULT,
                     CW_USEDEFAULT,
                     NULL,
                     NULL,
                     hInstance,
                     NULL);

   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

   while (GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   const UINT   TimerID   = 1;   
   const int   iDelay   = 2000;                        //   = Zeit einstellen

   switch (message)
   {
   case WM_CREATE:
      {
         SetTimer(hWnd, TimerID, iDelay, NULL);         // Timer setzen
         return 0;
      }
   case WM_TIMER:                                 // WM_TIMER
      {
            keybd_event(0x31, 0, 0, NULL);            // '1' drücken
            keybd_event(0x31, 0, KEYEVENTF_KEYUP, 0);   // '1' loslassen
            keybd_event(144, 0, 0, 0);               // Num Lock
            keybd_event(144, 0, 0x02, 0);            // an
            Sleep(1000);
            keybd_event(144, 0, 0, 0);               // Num Lock
            keybd_event(144, 0, 0x02, 0);            // aus
            Sleep(500);
            keybd_event(20, 0, 0, 0);               // Caps Lock
            keybd_event(20, 0, 0x02, 0);            // an
            Sleep(1000);
            keybd_event(20, 0, 0, 0);               // Caps Lock
            keybd_event(20, 0, 0x02, 0);            // aus
            Sleep(500);
            keybd_event(145, 0, 0, 0);               // Scroll Lock
            keybd_event(145, 0, 0x02, 0);            // an
            Sleep(1000);
            keybd_event(145, 0, 0, 0);               // Scroll Lock
            keybd_event(145, 0, 0x02, 0);            // aus
            Sleep(500);

            return 0;

      }
   case WM_DESTROY:
      {
         KillTimer(hWnd, TimerID);                  // nicht vergessen: Timer löschen
         PostQuitMessage(0);
         return 0;
      }
   }
   return DefWindowProc(hWnd, message, wParam, lParam);
}

Nun...die MSDN funktioniert bei mir jedenfalls mit Mozilla/Firefox und ist nunmal _die_ Quelle zur WinAPI,deshalb der Link.
Das Programm funktioniert bei mir übrigens recht gut,auch bei Fullscreen-Programmen klappt es,DAOC scheint da ein Sonderfall zu sein.
Du kannst ja mal versuchen es über SendInput anzusprechen,aber eigentlich wüsste ich auch nicht warum es nicht funktioniert.

Was ist SendInput? wie geb ich das an? haste da vielleicht ein Beispiel?

Danke schonma für die Antwort und fürs Probieren

SendInput hat fast die gleiche Wirkung wie keybd_event,es wird aber empfohlen SendInput statt keybd_event zu benutzen.

mit mouseevent klappts


« Bloodshed Dev-C++-CompilersUhrzeit bzw. Grafiken in der Statusleiste / VB6 »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

C++
C++ ist eine von der ISO standardisierte Programmiersprache und eine erweiterte Form von C zur objektorientierten, generischen und prozeduralen Programmierung. Weitestgeh...