Šaljem ti izmenjenu proceduru, tako da podržava i Alt, Ctrl, Shift ...
Code:
procedure SendString(value:string; Shift:TShiftState; Other:byte);
var c:byte;
label kraj;
begin
If ssShift in Shift then keybd_event(VK_SHIFT, 0, 0,0);
If ssAlt in Shift then keybd_event(VK_MENU, 0, 0,0);
If ssCtrl in Shift then keybd_event(VK_CONTROL, 0, 0,0);
If ssLeft in Shift then keybd_event(VK_LBUTTON, 0, 0,0);
If ssMiddle in Shift then keybd_event(VK_MBUTTON, 0, 0,0);
If ssRight in Shift then keybd_event(VK_RBUTTON, 0, 0,0);
If Other<>0 then keybd_event(Other, 0, 0,0);
if length(value)=0 then exit;
while length(value)<>0 do begin
c:=byte(value[1]);
if c>=33 then begin
if c<=41 then begin
c:=(c+16);
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
end;
if c>=48 then begin
if c<=57 then begin
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
end;
if c>=65 then begin
if c<=90 then begin
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
end;
if c>=97 then begin
if c<=122 then begin
c:=(c-32);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
end;
if c=58 then begin
c:=190;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=59 then begin
c:=188;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=95 then begin
c:=189;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=167 then begin
c:=51;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=61 then begin
c:=48;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=42 then begin
c:=187;
keybd_event(VK_SHIFT, 0, 0,0);
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
goto kraj;
end;
if c=43 then c:=187;
if c=44 then c:=188;
if c=46 then c:=190;
if c=45 then c:=189;
keybd_event(c, 0, 0,0);
keybd_event(c, 0, KEYEVENTF_KEYUP,0);
kraj:
delete(value,1,1);
application.ProcessMessages;
end;
If ssShift in Shift then keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
If ssAlt in Shift then keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP,0);
If ssCtrl in Shift then keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
If ssLeft in Shift then keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP,0);
If ssMiddle in Shift then keybd_event(VK_MBUTTON, 0, KEYEVENTF_KEYUP,0);
If ssRight in Shift then keybd_event(VK_RBUTTON, 0, KEYEVENTF_KEYUP,0);
If Other<>0 then keybd_event(Other, 0, KEYEVENTF_KEYUP,0);
end;
Sve ostalo možeš da proslediš preko Virtual-Key kodova, spisak potraži u helpu.