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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2011, 15:38   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
Восклицание Передать нажатие ENTER программе которая не в фокусе(свёрнута в трей)

Доброго времени суток!

Написал ПО которое с заданным интервалом времени, постит заданный текст в некое окно. Точнее в некий Edit компонент окна.

Так вот, текст вставляет, а вот с отправкой этого текста большоя проблема!

Если открыть программу и поставить фокус на полее ввода, то enter успешно отправляется и сообщения отсылаются. А вот если программу свернуть, то сообщения вставляются, но не отсылаются.

пробовал и SendMessage, и Keybrd_event и PostMessage, и отправку WM_CHAR #10 #13. Это все работает, но только в том случае если программа сейчас в фокусе, а конктретно нужное мне поле ввода.

Как заслать нажатие Enter в поле ввода другой программы, при условии что программа скрыта с экрана(свётрнута в трей) и находится не в фокусе?
Человек_Борща вне форума Ответить с цитированием
Старый 11.07.2011, 16:00   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно это попробовать
Код:
PostMessage(Handle,Wm_KeyDown, VK_RETURN, 1);
Sleep(200);
PostMessage(Handle,Wm_KeyUp, VK_RETURN, 1);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.07.2011 в 16:10.
Аватар вне форума Ответить с цитированием
Старый 11.07.2011, 17:29   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

тогда уж:
Код:
SendMessage(Handle,Wm_KeyDown, VK_RETURN, 1);
PostMessage(Handle,Wm_KeyUp, VK_RETURN, 1);
Цитата:
а конктретно нужное мне поле ввода
а енумерацию дочерних окон кто делать будет?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.07.2011, 18:16   #4
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Извиняюсь за дилетантство...
А зачем эмулировать нажатие интера в эдите?
Не проще эмулировать нажатие кнопки около этого эдита? В большинстве программ так интерфейс и построен. А обработка интера - просто перехватывается и делает то же самое, что и кнопка рядомстоящаа (или другой контрол)...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 11.07.2011, 21:04   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Аватар, что-то мне подсказывает что в окне без фокуса этот код не сработает(Пробовал все вариации отправки нажатия Enter(Ну которые нашёл в интернетах)). Но я последним lParam ставил 0. Попробую ваш вариант=)


raxp, Увы HWND эдита я отлично получаю и даже пишу туда нужный мне текст. Проблема в отправке Enter'а в Edit программы, которая не в фокусе на данный момент.

Johnson, в том-то и дело. Был бы рядом батон какой-нибудь, который отправлял бы текст, я бы на него давил. С этим особо проблем никогда и небыло.

Но у меня только поле ввода(edit), которое воспринимает нажатие Enter'а как комманду "Отправить сообщение в чат". И ничиго более.


_ADDED_
В обшщем код от raxp и Аватар тоже не срабпатывает. Сейчас засниму флэшку и покажу.

_ADDED_
Вот элюстрация мой проблемы(Во вложении flv запись)
Вложения
Тип файла: rar myTrouble.rar (2.87 Мб, 15 просмотров)

Последний раз редактировалось Человек_Борща; 11.07.2011 в 21:35.
Человек_Борща вне форума Ответить с цитированием
Старый 11.07.2011, 21:49   #6
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сделай захват какой нибудь клавиши например F12, будет работать даже если форма не фокусе.

Последний раз редактировалось Aliens_wolfs; 11.07.2011 в 23:29.
Aliens_wolfs вне форума Ответить с цитированием
Старый 11.07.2011, 22:21   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

А смысл? Я делаю тоже самое только при помощи таймера.
На видио проекрасно показано что без фокуса ENTER не посылается. а #10#13 считается переходом на новую строку(не enter)
Человек_Борща вне форума Ответить с цитированием
Старый 11.07.2011, 22:35   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Возможно беда в том, что событие по Enter срабатывает тогда, когда фокус ввода на этом эдите. А вот как дела с фокусом ввода в свернутых окнах не знаю, только могу предположить, что ActiveControl=nil
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.07.2011, 22:39   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

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

Последний раз редактировалось Aliens_wolfs; 11.07.2011 в 22:44.
Aliens_wolfs вне форума Ответить с цитированием
Старый 11.07.2011, 22:43   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Когда форма не фокусе она не отвечает на нажатие клавиш поэтому нужно конкретную клавиши привязать она будет за ней следить постоянно, а таймер возможно пропускает событие клавиш либо будет не всегда срабатывать. Попробуй мой пример и убедись.
Я правильно понял, что предлагается править исходник скрытой формы? Но похоже это чужая прога. Я правильно понял?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нажатие Enter Кристинка89 Общие вопросы C/C++ 2 18.05.2011 18:40
Повторное нажатие Enter _-Re@l-_ Общие вопросы Delphi 10 28.01.2011 23:48
Нажатие Enter Alana Общие вопросы Delphi 4 27.10.2010 14:31
Двойное нажатие клавиши Enter Nezaam Помощь студентам 4 18.08.2010 17:00
Нажатие Enter Screame Microsoft Office Excel 1 01.11.2009 17:02