Мне нужно программно ввести один символ в ячейку сетки Delphi (в другом приложении).Имитация ввода клавиатуры в Delphi с использованием WinAPI
Для того, чтобы сделать это вручную, необходимы следующие шаги:
- Нажмите кнопку F3.
- Нажмите клавишу со стрелкой вправо 3 раза.
- Нажмите кнопку пробела.
- Тип буквы «E» на клавиатуре.
Нажмите клавишу со стрелкой вправо.
// Press F3 button keybd_event(VK_F3, 0, 0, 0); // Press right arrow key 3 times keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); // Press the space button keybd_event(VK_SPACE, 0, 0, 0); // Type letter E keybd_event(Ord('E'), 0, 0, 0); // Move to the right keybd_event(VK_RIGHT, 0, 0, 0);
Но это не работает. Когда я запускаю этот код, ничего не происходит.
Как мне изменить этот код, чтобы он действительно имитировал ввод пользователя?
Некоторое время назад я сделал кое-что о ['virtual keyboard'] (http://stackoverflow.com/a/12565963/960757) (и будет много других). Но к вашей проблеме, если вы нацеливаетесь на «TStringGrid», я думаю, что вы не можете делать ничего, кроме фокусировки и моделирования ваших нажатий клавиш (если я помню это право, «TStringGrid» не отвечает на любое сообщение, которое быть в состоянии установить текст ячейки). – TLama
В этом конкретном приложении можно вводить значения в эту сетку только с клавиатуры. Я уже делал это с помощью AutoHotKey и MS UI Automation, но теперь вам нужно переписать этот код в Delphi. –
Я не могу полагаться на сетку, сфокусированную, потому что есть программа на целевой системе, которая активируется каждые 200 миллисекунд. –