Code: var s:string; I: Integer; begin s:='Nik'; sleep(3000); for I := 1 to length(s) do begin keybd_event(Ord(s[i]), 0, 0, 0); keybd_event(Ord(s[i]), 0, KEYEVENTF_KEYUP, 0); end; end; end. Данный код выводит следующие - т9+. А если просто вписываю буквы, то всё нормально. Я так понимаю строку здесь использовать нельзя? Тогда какой тип использовать? З.Ы. Ещё хотелось бы узнать про SendInput. Читал на сайте у микрософта, нифига не понял.
изучай чем от твоего варианта отличается, не помню где взял в инете, но свое дело делала PHP: procedure SendKeys(sText: String); var i : Integer; shift : Boolean; vk, scancode : Word; ch : Char; c, s : Byte; const vk_keys : Array[0..9] of Byte=(VK_HOME, VK_END, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE); vk_shft : Array[0..2] of Byte=(VK_SHIFT, VK_CONTROL, VK_MENU); flags : Array[FALSE..TRUE] of Integer = (KEYEVENTF_KEYUP,0); VK_RETURN = 13; // 013 ENTER key begin shift:=FALSE; if CompareText(sText, 'ENTERKEY') = 0 then // sText := '~'; // $0D; begin keybd_event(VK_RETURN, 1, 0, 0); keybd_event(VK_RETURN, 1, KEYEVENTF_KEYUP, 0); exit; end; for i:=1 to Length(sText) do begin ch:=sText[i]; if (ch>=#250) then begin s:=Ord(ch)-250; shift:=NOT Odd(s); c:=vk_shft[s shr 1]; scancode:=MapVirtualKey(c, 0); Keybd_Event(c, scancode, flags[shift], 0); end else begin vk:=0; if (ch>=#240) then c:=vk_keys[Ord(ch)-240] else if (ch>=#228) then c:=Ord(ch)-116 else if (ch<#32) then c:=Ord(ch) else begin vk:=VkKeyScan(ch); c:=LoByte(vk); end; scancode:=MapVirtualKey(c, 0); if (NOT shift AND (Hi(vk)>0)) then Keybd_Event(VK_SHIFT, $2A, 0, 0 ); Keybd_Event( c, scancode, 0, 0 ); Keybd_Event( c, scancode, KEYEVENTF_KEYUP, 0 ); if (NOT shift AND (Hi(vk)>0)) then Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0); end; Application.ProcessMessages; end; end;
Code: function knop(var s:string): string; begin if (s=' ') then knop:='32'; if (s='-') then knop:='189'; if (s='1') then knop:='49'; if (s='2') then knop:='50'; if (s='3') then knop:='51'; if (s='4') then knop:='52'; if (s='5') then knop:='53'; if (s='6') then knop:='54'; if (s='7') then knop:='55'; if (s='8') then knop:='56'; if (s='9') then knop:='57'; if (s='0') then knop:='48'; if (s='q') or (s='й') then knop:='81'; if (s='w') or (s='ц') then knop:='87'; if (s='e') or (s='у') then knop:='69'; if (s='r') or (s='к') then knop:='82'; if (s='t') or (s='е') then knop:='84'; if (s='y') or (s='н') then knop:='89'; if (s='u') or (s='г') then knop:='85'; if (s='i') or (s='ш') then knop:='73'; if (s='o') or (s='щ') then knop:='79'; if (s='p') or (s='з') then knop:='80'; if (s='[') or (s='х') then knop:='219'; if (s=']') or (s='ъ') then knop:='221'; if (s='a') or (s='ф') then knop:='65'; if (s='s') or (s='ы') then knop:='83'; if (s='d') or (s='в') then knop:='68'; if (s='f') or (s='а') then knop:='70'; if (s='g') or (s='п') then knop:='71'; if (s='h') or (s='р') then knop:='72'; if (s='j') or (s='о') then knop:='74'; if (s='k') or (s='л') then knop:='75'; if (s='l') or (s='д') then knop:='76'; if (s=';') or (s='ж') then knop:='186'; if (s='э') then knop:='222'; if (s='z') or (s='я') then knop:='90'; if (s='x') or (s='ч') then knop:='88'; if (s='c') or (s='с') then knop:='67'; if (s='v') or (s='м') then knop:='86'; if (s='b') or (s='и') then knop:='66'; if (s='n') or (s='т') then knop:='78'; if (s='m') or (s='ь') then knop:='77'; if (s=',') or (s='б') then knop:='188'; if (s='.') or (s='ю') then knop:='190'; if (s='/') then knop:='191'; end; Вот такую процедурку накатал, но многое, нужно дорабатывать. Не стал с массивом заворачиваться. Пользуйтесь.