//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <InitGuid.h>
#include <dinput.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma link "dinput8.lib"
TForm1 *Form1;
LPDIRECTINPUT8 fDI;
LPDIRECTINPUTDEVICE8 fDIKeyboard;
HWND m_hWnd;
HRESULT hr;
char fDIKeyboardState[256] = { 0x00 };
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
CoInitializeEx(NULL, COINIT_MULTITHREADED);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {
DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&fDI, NULL );
if(fDI == NULL) {
ShowMessage("Błąd inicjalizacji DI");
this->Close();
return;
}
// Create the connection to the keyboard device
fDI->CreateDevice(GUID_SysKeyboard, &fDIKeyboard, NULL);
if (fDIKeyboard == NULL) {
ShowMessage("Błąd inicjalizacji KLAWIATURY");
this->Close();
return;
} else {
fDIKeyboard->SetDataFormat(&c_dfDIKeyboard);
fDIKeyboard->SetCooperativeLevel(m_hWnd, DISCL_BACKGROUND | DISCL_EXCLUSIVE );
fDIKeyboard->Acquire();
Timer1->Enabled = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) {
if(fDIKeyboard) {
fDIKeyboard->Unacquire();
}
CoUninitialize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) {
hr = fDIKeyboard->GetDeviceState( sizeof(fDIKeyboardState), (LPVOID)&fDIKeyboardState );
if(FAILED(hr)) {
Beep();
}
}
//---------------------------------------------------------------------------