procedure TForm1.Button1Click(Sender: TObject);
var
KeyState : TKeyboardState;
begin
GetKeyboardState(KeyState);
if ( (not ((KeyState[VK_NUMLOCK] and 1)=1) ) or ( ((KeyState[VK_NUMLOCK] and 1)=1))) then
// Simulate a key press
keybd_event(VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
// Simulate a key release
keybd_event( VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0);end;