Alle 20 Sec Aktion ausführen - Aktion geht nur bedingt



  • Hallo an alle,

    ich wollte das alle X Sekunden die Taste 1 gedrückt wird. Das funktioniert auch Mein 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.

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

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

    edit: sfds



  • Hallo,

    ich glaube das solltest du eher im WinAPI-Forum fragen ;).

    mfg
    v R



  • Hey, ein DAOC Spieler. Welcher Server, welches Reich? 🙂



  • ... und jemand der anscheinend versucht zu schummeln ... vergiss es lieber gleich du unmoralischer mensch 😡

    ich weis das es das gibt. leute, die sich tbots schreiben das ihre figuren den ganzen tag und nacht rumrennen und erfahrungspunkte sammeln.

    echt fair. 🙄



  • wenigsten gibt er sich mühe und versucht es selbst zu coden 😃 😃 😃



  • Hallo,

    danke für dir vielen Antworten.
    Also es geht um folgendes: ich bin Schneider und benutz das Gold, das ich von creepen hab um zu powercraften.

    Jedoch muss ich da die ganze Zeit so ca 20 Stück von irgend nem Handschuh machen. (alle 35 sec maustaste oder ne zahl drücken)

    wenn ich aber für 20 stück die Sachen einkaufen kann und dann mal so einfach 20 stück herstellen kann, heisst das für mich ich kann 2 min vom rechner weg.

    Ich persöhnlich seh das nicht so direkt als bot den ich einschalt und kann den die ganze nacht laufen lassen, da ich ja alle 2 min die sachen verkaufen, neue einkaufen und aus der crafting liste ein gelbes Item raussuchen muss.

    MfG

    Ein kleines Irrlicht



  • aber von der taste 1 zu →→→↑→↑←↑↑→rechtsklick→↑← enter is es auch nich so weit-.-



  • Lass doch mal testweise die Taste etwas länger gedrückt, für 10/20/50ms oder so. Denn ich glaub DirectInput macht nur eine Momentaufnahme der gedrückten tasten, und mit deiner Methode ist dieser Moment ja nicht gerade sehr lang.

    BTW ist keybd_event "veraltet". Man verwendet jetzt SendInput, hat IMHO aber nichts mit dem Problem zu tun.



  • Dieser Thread wurde von Moderator/in Gerard aus dem Forum C++ in das Forum WinAPI verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • funzt - mit mouseevent klappts

    muss halt die maus immer posotionieren.

    MfG



  • Bei Online-Spielen ist cheaten nicht nur unfair, sondern auch verboten.

    Bitte überleg dir gut, ob du dein Programm wirklich benutzt. Die Cheat-Erkennung funktioniert bei vielen Online-Spielen recht gut.


Anmelden zum Antworten