Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 20:41   #1
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
Радость [Delphi 7] иимитация ввода с клавиатуры

сделал вот такую процедуру
Код:
procedure enter(var s:string);
var i:integer;
begin
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;
цифры нормально вводит, а символы отказывается
unbanned вне форума Ответить с цитированием
Старый 15.06.2011, 21:53   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

SendInput получше будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.06.2011, 22:04   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Аватар, +1

ТС, первая ваша ошибка в том что вы не читаете описание функции, они принимает виртуальный код клавиши, а не код символа как вы полагаете.
читать про MapVirtualKey тырк
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.06.2011, 23:27   #4
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Код:
procedure typing(var str: string);
var
  inp: TInput;
  i: integer;
begin
  for i := 1 to length(str) do
  begin

    inp.Itype := INPUT_KEYBOARD;
    inp.ki.wVk := Ord(UpCase(str[i]));
    inp.ki.dwFlags := 0;
    SendInput(1, inp, SizeOf(inp));

    inp.Itype := INPUT_KEYBOARD;
    inp.ki.wVk := Ord(UpCase(str[i]));
    inp.ki.dwFlags := KEYEVENTF_KEYUP;
    SendInput(1, inp, SizeOf(inp));

    Application.ProcessMessages;
    Sleep(80);
  end;
end;
ну вот... погуглив вот что получилось)
спасибо.
unbanned вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода с клавиатуры DoGFoX Помощь студентам 5 16.06.2010 23:40
Запрет ввода с клавиатуры букв Omedus Общие вопросы Delphi 13 16.05.2010 14:39
Ограничение ввода с клавиатуры jekidollar Общие вопросы C/C++ 1 12.05.2010 08:23
Обноружение ввода с клавиатуры Flippp Общие вопросы C/C++ 6 28.12.2009 23:40
сохранение ввода с клавиатуры в файл Aleksandar Общие вопросы Delphi 3 22.10.2008 03:42