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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 14:01   #1
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию неправильная работа keybd_event

Здравствуйте.
Есть код, раньше он работал, а сейчас нет.
Для примера набросал код, но на самом деле я работаю с другим окном.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Активизация Edit-a
  SendMessage(Edit1.Handle, WM_LBUTTONDOWN, 0, 0);
  SendMessage(Edit1.Handle, WM_LBUTTONUP, 0, 0);

  { Выделение содержимого Edit-a }
  // Нажатие и отпускание клавиши HOME
  keybd_event(VK_HOME, 0, 0, 0);
  keybd_event(VK_HOME, 0, KEYEVENTF_KEYUP, 0);

  // Нажатие клавиши Shift
  keybd_event(VK_SHIFT, 0, 0, 0);

  // Нажатие и отпускание клавиши END
  keybd_event(VK_END, 0, 0, 0);
  keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0);

  // Отпускание клавиши Shift
  keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

  { Копирование выделенного текста }
  keybd_event(VK_CONTROL, 0, 0, 0);
  keybd_event(Ord('C'), 0, 0, 0);
  keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
Здесь происходит кликом активизация Edit-a, потом зажатие клавиши Shift и нажатие на клавишу End. Но почему-то не происходит выделение и копирование.
В чем может быть проблема? Задержка в виде Sleep не дает результата.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 07.01.2012, 14:07   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а кто сказал что вы активируете Эдит?

ему фокус дать нужно, а не просто послать ему сообщения о нажатиях.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.01.2012, 14:09   #3
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а кто сказал что вы активируете Эдит?

ему фокус дать нужно, а не просто послать ему сообщения о нажатиях.
Активизация происходит:
Код:
  // Активизация Edit-a
  SendMessage(Edit1.Handle, WM_LBUTTONDOWN, 0, 0);
  SendMessage(Edit1.Handle, WM_LBUTTONUP, 0, 0);
Замена этих строк на
Код:
Edit1.SetFocus;
не дает никакого результата.
Проверяю не на чужой форме, а на своей. Переход на начало и конец строки происходит, а выделение нет.
Проверьте, пожалуйста, код у себя, может быть дело с системой.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.

Последний раз редактировалось chertovich; 07.01.2012 в 14:11.
chertovich вне форума Ответить с цитированием
Старый 07.01.2012, 14:52   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Все, нашел проблему, оказывается, у меня был включен num lock
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.

Последний раз редактировалось chertovich; 07.01.2012 в 20:21.
chertovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неправильная работа программы на delphi руслан1993 Помощь студентам 0 28.05.2011 12:13
неправильная работа при инициализации переменной }|{opa KopHeB Помощь студентам 0 02.02.2011 04:32
ADOTable неправильная работа. Spaun Помощь студентам 1 23.06.2010 10:12
неправильная работа программки. Rafff Общие вопросы C/C++ 6 05.04.2010 15:16
Неправильная работа switch в while konstantinopol Общие вопросы C/C++ 3 24.01.2009 03:51