Para nutrir y completar un poco el tema:
Código Delphi
[-]procedure Keyb_Event(C: CHAR);
var
S: WORD;
begin
S:= VkKeyScan(C);
if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,0,0);
if(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,0,0);
if(S and $0400) <> 0 then keybd_event(VK_LMENU,0,0,0);
keybd_event(S,0,0,0);
keybd_event(S,0,KEYEVENTF_KEYUP,0);
if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
if(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
if(S and $0200) <> 0 then keybd_event(VK_LMENU,0,KEYEVENTF_KEYUP,0);
end;
Ejemplo de uso:
Saludos.