Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1093
от 17.03.2008, 02:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 441, Экспертов: 66
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 126870: Доброе время суток господа эксперты. Помогите реализовать следующую задачу: сущ-ет программа для просмотра записей дефектоскопов РДМ-2. Очень неудобная в использовании,когда есть аналогичная для дефектоскопов АДС-02, где для перемотки лент ес...

Вопрос № 126.870
Доброе время суток господа эксперты.
Помогите реализовать следующую задачу:
сущ-ет программа для просмотра записей дефектоскопов РДМ-2. Очень неудобная в использовании,когда есть аналогичная для дефектоскопов АДС-02, где для перемотки лент есть дополнительная функция, которая определяется скорость перемотки ленты и лента прокручиватеся с заданной скоростью.
Есть выход из ситуации- написать программу, которая будет посылать программе под РДМ-2 нажатие PageDown и PageUP,интервал "нажатия" должен задаваться юзером. и еще она должна быть постоянно на виду т.е. не скрываться за другим активным окном, для того чтобы останавливать ленту в любой момент.
Получается она должна состоять из двух кнопок и одного тесктового поля: в текстово поле вводиться скорость отправки нажатия PD и PU, если кнопки отжаты, то данные "нажатия" не отправляются программе РДМ.
Если же данная задача трудоемка, то подскажите как найти определенное окно, как отправить ее нажатие определенной кнопки,как сделать так чтобы диалоговое окно реализуемой программы была всегда поверх активных окно.
СПСАИБО ОГРОМНОЕ!!!!
Отправлен: 11.03.2008, 22:30
Вопрос задал: deeppc (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, deeppc!

Могу предложить такой вариант решения (не самый элегантный но работает). Код в приложении.
На форме 2 TEdit (EName и ETime), 2 TButton (BUpC и BDown), 2 TTimer (TUp и TDown). Объявлены 2 глобальных переменных boolUp, boolDown: Boolean;
По нажатию на Button проверяем число ли введено в Edit. Изменяем значение boolDown или boolUp на противоположное. Если волучилось False отключаем соответствующий таймер и вываливаемся, иначе задаем интервал нужному таймеру (в мс) и запускаем его.
По событию таймера: определяем Handle окна с заголовком введенным в EName. Если окна с таким заголовком ненайдено - ругаемся и вываливаемся, иначе посылаем нашему окошку последовательно сообщение о нажатии (KEYDOWN) и отпускании (WM_KEYUP) нужной клавиши (здесь VK_NEXT или VK_PRIOR).
А насчет приложения всегда поверх дрругих - установите свойство формы FormStyle := fsStayOnTop/

Приложение:

Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 12.03.2008, 09:45
Оценка за ответ: 5
Комментарий оценки:
Спсибо большое. обязательно воспользуюсь вашим кодингом.Творческих успехов Вам!!!!!

Отвечает: Sosedov A.I.
Здравствуйте, deeppc!

Здесь http://megalib.com/books/51/sndkey32.htm лежит модуль, содержащий две функции:
AppActivate - передача приложению фокуса ввода;
SendKeys - собственно посылка приложению нажатий клавиатуры;
и одну опечатку в строке №355, которая должна выглядеть так:

While (I<L) do begin

Ваша задача:
1. Создать форму, присвоив ей свойство FormStyle:=fsStayOnTop, чтобы она была всегда поверх всех окон.
2. Разместить на форме компонент таймера и любые другие компоненты ввода и управления на Ваше усмотрение, которые будут задавать таймеру интервал, пускать и останавливать его, выбирать направление скроллинга, то есть эмулируемую клавишу.
3. В обработчике таймера вставить вызов функций AppActivate и SendKeys.
Ответ отправил: Sosedov A.I. (статус: 3-ий класс)
Ответ отправлен: 12.03.2008, 09:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое. похоже очень полезная ссылка.удачи Вам!!!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.4 от 15.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное