Sendkeys в vb6 - PullRequest
       45

Sendkeys в vb6

1 голос
/ 26 ноября 2008

Просто пытаюсь нажать клавишу ввода после задержки в vb6, все примеры, которые я нахожу, не работают, какая-нибудь помощь?

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

Ответы [ 7 ]

2 голосов
/ 26 ноября 2008

Возможно, вам потребуется предоставить более подробную информацию. Но если вы пытаетесь отправить ключ ввода в приложение, созданное VB6, и он не забирает его, то обычно это тот факт, что вы не установили для свойства KeyPreview формы значение true. Без управления с текущим фокусом поглощает нажатие, которое вы послали.

Если вы создали приложение, получающее клавишу ввода. Я настоятельно рекомендую вам выполнить рефакторинг приложения, чтобы любой код, вызываемый вводом, мог быть выполнен с помощью кода. Обычно это делается путем перемещения кода в область, доступную для обоих приложений. Это потому, что Sendkeys общеизвестно недетерминирован и может вызвать много странностей.

Существует событие keybd_event, которое вы можете использовать из информации Win32 API здесь Я нашел это более надежным, чем SendKeys.

0 голосов
/ 07 ноября 2012

Вот что я делаю, если я хочу отложить некоторые действия в моем скрипте:

t = Timer + 5        'Change 5 to a higher number if you need more time to wait
Do While Timer < t
    DoEvents           'This is necessary to prevent freezing 
Loop

SendKeys "{ENTER}"

SendKeys "{ENTER}", True    'This might also work
0 голосов
/ 21 мая 2009

Есть некоторые проблемы с SendKeys на Vista. См. эту статью Карла Петерсона для деталей и решения.

0 голосов
/ 19 мая 2009

Вы можете попробовать мою программу PushKeys, которая доступна здесь . Синтаксис совместим с SendKeys, но использует API keybd_event и имеет встроенную функцию ожидания.

0 голосов
/ 01 декабря 2008

Я сделал тестовое приложение vb6. с 1 формой, 1 кнопкой по умолчанию, 1 таймером:

Private Sub Command1_Click()
  Debug.Print CStr(Now) + " Command1"
End Sub
Private Sub Timer1_Timer()
    Debug.Print CStr(Now) + " Sendkeys"
    SendKeys "{Enter}"
End Sub

Казалось, работает при отправке себе. 30.11.2008 18:11:38 Sendkeys 30.11.2008 18:11:38 Command1 30.11.2008 18:11:43 Sendkeys 30.11.2008 18:11:43 Command1 30.11.2008 18:11:48 Sendkeys 30.11.2008 18:11:48 Command1

Вы хотите отправить в другой процесс?

0 голосов
/ 26 ноября 2008

SendKeys всегда должен быть последним средством.

Проблема действительно в фокусе. Вы должны установить фокус перед каждой отправкой.

Почти все можно выполнить с помощью сценариев, так что вы пытаетесь сделать?

0 голосов
/ 26 ноября 2008

Что вы пытаетесь сделать? Откуда ты знаешь, что это не работает?

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

...