powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Имитация набора текста с клавиатуры.
25 сообщений из 27, страница 1 из 2
Имитация набора текста с клавиатуры.
    #40002344
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Скажите, пожалуйста, как с имитировать набор текста с клавиатуры?
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002350
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SendInput().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002421
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

SendInput().

Почему такой результат?:
автор8пи и0 5 308п8205и 5и лф8 0п80тш53 308фи0 0 8щи= 2080а8щ 0 и5с 8пи и0 5 308п8205и 5и лф8 753 308фи0 0 зкщоусе ьфтфпук
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TForm2.Button2Click(Sender: TObject);
const
  SomeText = 'Ничто так не ограничивает полет мысли начинающего программиста, как компилятор;
var
  TI: TInput;
  KI: TKeybdInput;
  I: Integer;
begin
   Memo1.SetFocus;
   TI.Itype := INPUT_KEYBOARD;

   for I := 1 to Length(SomeText) do
   begin
      KI.wVk := Ord(UpCase(SomeText[I]));
      KI.dwFlags := 0;
      TI.ki := KI;
      SendInput(1, TI, SizeOf(TI));
      KI.dwFlags := KEYEVENTF_KEYUP;
      TI.ki := KI;
      SendInput(1, TI, SizeOf(TI));
   end;

end;
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002456
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

потому что надо читать справку - а в ней написано -
A virtual-key code
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002463
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
Женя32,

потому что надо читать справку - а в ней написано -
A virtual-key code

Еще бы найти эту справку.....
A virtual-key code - Код виртуального ключа, - что это значит?
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002488
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

попробуй тестовую константу сделать ansi
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002545
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32
Еще бы найти эту справку
А пытался? Сочетание буковок msdn ни о чём не говорит?
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002636
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Женя32
Здравствуйте!
Скажите, пожалуйста, как с имитировать набор текста с клавиатуры?

смотри WM_KEYDOWN, WM_CHAR в интернете
делал что-то такое, уже не помню как

апдейт: это если в виндовсе
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002870
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то у меня ничего не получается....... Помогите, пожалуйста....
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002876
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Женя32
Что-то у меня ничего не получается....... Помогите, пожалуйста....

я даже тут нашел, на Sql.ru

https://www.sql.ru/forum/531977/posylka-koda-klavish-v-okno-chuzhogo-prilozheniya

там (по ссылке) функция используется SendMessage(wnd, WM_CHAR, s, 0);
wnd -- идентификатор окна/контрола (поля ввода), идентификатор нужно найти будет, иначе непонятно куда посылать буквы

разбирайся с функцией SendMessage и с тем как идентификатор найти, по ссылке даже какой-то пример кода есть (вроде как не совсем рабочий только)
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002880
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_1234

По ссылке название темы "Посылка кода клавиш в окно чужого приложения", а мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002884
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32

По ссылке название темы "Посылка кода клавиш в окно чужого приложения", а мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.


Представьте, что это чужое приложение :) Хендлы в своем приложении искать проще, все остальное не меняется
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002885
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Женя32
Anton_1234

По ссылке название темы "Посылка кода клавиш в окно чужого приложения", а мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.

так это оно самое и есть, процедура оттуда
по идее эта процедура должна посылать букву из одной программы в какое-то окно открытое другой программой

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.Button1Click(Sender: TObject);
var wnd,whd1: HWND;
    i: Integer;
    s: char;
begin
  s:='K';                                                     // Символ, который посылаем
  wnd := FindWindow(nil,Pansichar(Edit2.text));               // Edit2.Text - заголовок окна
  if wnd <> 0                                                 // Если окно найдено
  then   
    begin
        wnd := FindWindowEx(wnd, 0, PAnsiChar(Edit1.text), nil); // Edit1.Text - класс компонента
        if wnd <> 0                             
        then SendMessage(wnd, WM_CHAR, s, 0);
    end;
end;


в результате работы этой процедуры должна появиться буква К в поле ввода (в окне открытом другой программой), т.е. ты на клавишу не нажимаешь. а буква появится
ну а если длинная строка - передавай побуквенно ее
вроде как у автора что-то не получалось, не работало что-то... я бы даже сделал, но у меня нету дельфи здесь

а может я не понимаю чего ты хочешь?

что ты понимаешь под словами "имитировать набор текста с клавиатуры"?
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002891
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32> мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.

Давно бы уже на keybd_event или на сообщениях реализовал, для лабы сгодилось бы.

P.S. Кириллицу юникодом нужно посылать. Примерно так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var
  KeyInputs: array of TInput;

begin
  Memo1.SetFocus;
  SetLength(KeyInputs, 1);
  KeyInputs[0].Itype := INPUT_KEYBOARD;
  KeyInputs[0].ki.wVk := 0;
  KeyInputs[0].ki.wScan := Ord(SomeText[i]);
  KeyInputs[0].ki.dwFlags := 4; // 4 = KEYEVENTF_UNICODE
  SendInput(1, KeyInputs[0], SizeOf(KeyInputs[0]));

  KeyInputs[0].ki.dwFlags := 4 or KEYEVENTF_KEYUP;
  SendInput(1, KeyInputs[0], SizeOf(KeyInputs[0]));


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002892
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x1ca4064
Женя32

По ссылке название темы "Посылка кода клавиш в окно чужого приложения", а мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.


Представьте, что это чужое приложение :) Хендлы в своем приложении искать проще, все остальное не меняется

автору темы: читай что добрые люди пишут

я сразу что-то не въехал что автору темы надо, или он исправил пока я отвечал :))
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002894
Anton_1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а может от автора вообще виртуальную клавиатуру требуют?
на одну кнопку нажал - одна буква добавилась,
на другую другая добавилась,
нажал на кнопку которая ентер изображает - добавилось #13#10

с позицией курсора только разбираться надо будет и со стиранием ранее написанного, чтобы не все стиралось, а по одной букве
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002895
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_1234> а может от автора вообще виртуальную клавиатуру требуют?

Зачем гадать и флудить? Уймитесь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002920
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Женя32> мне нужно в своем приложении набрать текст, используя имитацию нажатия клавиш.

Давно бы уже на keybd_event или на сообщениях реализовал, для лабы сгодилось бы.

P.S. Кириллицу юникодом нужно посылать. Примерно так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var
  KeyInputs: array of TInput;

begin
  Memo1.SetFocus;
  SetLength(KeyInputs, 1);
  KeyInputs[0].Itype := INPUT_KEYBOARD;
  KeyInputs[0].ki.wVk := 0;
  KeyInputs[0].ki.wScan := Ord(SomeText[i]);
  KeyInputs[0].ki.dwFlags := 4; // 4 = KEYEVENTF_UNICODE
  SendInput(1, KeyInputs[0], SizeOf(KeyInputs[0]));

  KeyInputs[0].ki.dwFlags := 4 or KEYEVENTF_KEYUP;
  SendInput(1, KeyInputs[0], SizeOf(KeyInputs[0]));



Рустам , спасибо большое за код. Все работает так, как надо!
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40002979
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger
Женя32
Еще бы найти эту справку
А пытался? Сочетание буковок msdn ни о чём не говорит?

MSDN уже не актуально, теперь это докс.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003057
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое msdn - я знаю. А что такое докс?
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003058
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во блин, в январе интегрировались
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003063
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я иногда пользовался оффлайн msdn 2008. Там точнее указано с какой версии поддерживается функция. В онлайновой всё до W2000 округлили
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003064
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда именно они интегрировались и что именно сделали -
ХЗ, но у меня было такое впечатление, что в MSDN было
больше инфы "доступно сразу" (скажем, коды примеров).

Щас они тоже есть, наверняка, никуда не пропали, но более
удобно не стало, ИМХО. Опять же - на некоторых страницах
есть ссылки ведущие на саму себя (типа "см. также" в никуда).

В общем, у МС утекают не только исходники, но и квалификация.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003065
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger > В онлайновой всё до W2000 округлили

Да это фигня, более старые версии мало у кого остались.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Имитация набора текста с клавиатуры.
    #40003070
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приходилось для наших клиентов под серверные NT
библиотеку допиливать. Правда сейчас уже неактуально.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Имитация набора текста с клавиатуры.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]