2009-09-16 3 views
4

У меня есть код, который запускает внешнее приложение и автоматически заполняет приглашение пароля.Как отправить клавишу «ВВОД» нажать на другое приложение?

Я хочу автоматизировать нажатие клавиши «ВВОД», так что пользователю не нужно нажимать «ОК».

Как я могу отправить ключ ENTER во внешнее приложение?

Ниже мой код в его нынешнем виде.

Первая строка для ввода пароля в приложение работает нормально.

Вторая строка для отправки нажатия клавиши ENTER не имеет никакого эффекта.

Я использую Delphi 2010.

//now that we have the control handle, send the password to it 
    SendMessage(AppHandle,WM_SETTEXT,0,Integer(PChar(pwd))); 

    //and now push ENTER 
    SendMessage(AppHandle,WM_KEYDOWN,0,Integer(PChar(#13))); 
+0

Возможно, вам нужно сначала отправить вкладку, а затем нажать «Ввод»? – Phoexo

+0

В Vista/Win7 - Если ваше приложение, на которое настроено таргетинг, работает как администратор, тогда этот метод не удастся, так как сообщения будут игнорироваться ОС. – skamradt

ответ

12

Попробуйте

PostMessage(AppHandle, WM_KEYDOWN, VK_RETURN, 0); 

Bye.

+0

Простой и эффективный. Благодаря! – JosephStyons

1

Попробуйте # 13 # 10, а не просто # 13.

+0

Спасибо за идею, но никакой разницы. Я также попытался отправить их последовательно, и там не повезло. – JosephStyons

2

Быстрый ответ. Дублируйте свой последний вызов SendMessage с помощью события WM_KEYUP. Некоторые системы запускаются только тогда, когда ключ отпускается, когда он не нажат.

Что-то попробовать, пока не ответят настоящие программисты. (:-)

+0

Для пользовательских интерфейсов довольно часто реагировать на события мыши, а не на мыши. Я не уверен в ключевых нажатиях.Но хорошее предложение в любом случае. +1 –

+0

Это очень умная идея, но это не сработало. – JosephStyons

1

Существует несколько различных способов, которыми вы можете заниматься тем, что хотите.

Первым и самым простым способом является файл SendKey32.pas. Это устройство было специально написано, чтобы вы могли делать именно то, что вы просите. Эта статья delphi.about.com дает хорошее объяснение относительно устройства и того, что он может сделать.

Я лично начал использовать другой метод из-за некоторых ограничений, обнаруженных в материалах SendKey32. Второй метод - сообщения журнала воспроизведения. Это тип Windows System Hook, который позволяет отправлять сообщения с нажатием клавиши («нажатие клавиши») на O/S и иметь дело со всеми небольшими неприятностями.

Существует единое целое, которое я нашел в сети под названием hkSend.pas, который имеет все необходимые сантехнические настройки для одного вызова функции (SendKeys).

Если вы используете Google для этого и посмотрите на первые две записи, вы найдете копию файла .pas, и вы сможете увидеть, что связано с ней. Лицо, написавшее hkSend, похоже, заставило его работать аналогично SendKey32.pas, но вместо этого использовало функцию «Просмотр журнала».

HTH,

Ryan.

Смежные вопросы