Globale Tastaturabfrage

WorldRacer

Erfahrenes Mitglied
Hio,

hab mal wieder ne Frage: Wie kann ich die Tastaturbefehle abfragen, während ich NICHT im Programm bin? Habs schon so versucht:

Code:
#include <windows.h>
#include <ddraw.h>
#include "ddutil.h"

#define  WindowTitle      "WR2-Blinker"
#define  WindowClassName  "DDWinClass"

bool running;

LONG FAR WINAPI WndProc (HWND , UINT , UINT , LONG) ;

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance , 
					LPSTR lpCmdLine , int nCmdShow)
{
	MSG      msg      ;  
	HWND     hwnd     ;   
	WNDCLASS wndclass ; 
	if (!hPrevInstance)
    {
		wndclass.style         = CS_HREDRAW | CS_VREDRAW  ;
		wndclass.lpfnWndProc   = WndProc ;
		wndclass.cbClsExtra    = 0 ;
		wndclass.cbWndExtra    = 0 ;
		wndclass.hInstance     = hInstance   ;
		wndclass.hIcon         = LoadIcon (NULL , IDI_APPLICATION) ;
		wndclass.hCursor       = LoadCursor (NULL , IDC_ARROW)  ; 
		wndclass.hbrBackground = (HBRUSH)GetStockObject (LTGRAY_BRUSH)  ;
		wndclass.lpszMenuName  = NULL              ;
		wndclass.lpszClassName = WindowClassName ; 
		RegisterClass (&wndclass) ;    
	}
	hwnd = CreateWindow (WindowClassName , 
                         WindowTitle , 
                         WS_OVERLAPPEDWINDOW , 
			             CW_USEDEFAULT , 
						 CW_USEDEFAULT ,
                         CW_USEDEFAULT , 
                         CW_USEDEFAULT ,     
                         NULL , NULL , 
                         hInstance , NULL) ;     
	ShowWindow   (hwnd , nCmdShow) ;  
	UpdateWindow (hwnd) ;

	

	

	running=true;

	while(running)
	{
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
		{ 
			if (msg.message == WM_QUIT) break;
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		
	} 

	

	return msg.wParam ;
}


LONG FAR WINAPI WndProc (HWND hwnd , UINT message , 
                         UINT wParam , LONG lParam) 
{ 
	switch (message)
	{
		case WM_KEYDOWN:
		{
			switch (wParam)
			{
			case VK_ESCAPE:
				MessageBox(NULL, "lalala", "test", MB_OK);
				return 0;
			} break;
		}
		case WM_DESTROY:
		{
			PostQuitMessage (0) ; 
			return 0 ;
		} break;
	} // switch (message)
	return DefWindowProc (hwnd , message , wParam , lParam) ;
} // WndProc

Aber da Fragt der die ans Fenster übergebenen Befehle der Tastatur ab. Der Sinn der ganzen Sache ist, das ich mein Prgramm zu einem Spiel neben her laufen lasse, welches dann auf Tastendruck bestimmte Sounds abspielt. (z.B. bei World Racing 2 den Blinkersound, der fehlt nämlich *g*)

Gibt es da eine Möglichkeit? Vielleicht über die Winapi? bin totaler neuling in c++ habe NULL ^^ ahnung
 
Das geht mit GetAsyncKeyState(). Damit kannst du jede Taste abfragen, egal ob dein Fenster aktiv ist oder nicht.

Code:
SHORT GetAsyncKeyState(      
    int vKey
);
 
Zuletzt bearbeitet:
Zurück