000
23.07.2004, 14:33 Uhr
~Irrlicht
Gast
|
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: 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); } |