Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.11.2009, 13:27
HomerSSS HomerSSS вне форума
Прохожий
 
Регистрация: 19.11.2008
Сообщения: 11
Репутация: 10
Вопрос Помогите собрать "докучи"

Всем привет.

Помощь нужна… Вопрос такой – есть программка, RADIO CHECKER PRO называется. Вот выдержка из её хелпа:

Внешнее управление программой

Программа имеет интерфейс для общения с другими программами с использованием функций
Windows API.

Для работы с RADIO CHECKER PRO нужно запустить его и найти его окно в системе.

Для этого определяем метку окна программы (Window Handle) с помощью функции.
Код:
function GetCheckerHandle: Integer;
begin
  Result := FindWindow('TRadioChecker', nil);
end;

// Запомним Handle
CheckerHandle := GetCheckerHandle;

Далее необходимо отправить название класса окна Вашей программы, для того, чтобы Checker
имел возможность обратного общения с программой.

Код:
function SendWindowClassName(ClassName: string): Integer;
var
  Struct: COPYDATASTRUCT;
  pch: array[0..255] of Char;
begin
  Struct.dwData := 1000;
  Struct.lpData := StrPCopy(pch, ClassName);
  Struct.cbData := StrLen(Struct.lpData) + 1;
  SendMessage(CheckerHandle, WM_COPYDATA, 0, LPARAM(@Struct));
end;
Admin: Учимся пользоваться тегами!

Последний раз редактировалось Admin, 23.11.2009 в 13:45.
Ответить с цитированием
  #2  
Старый 23.11.2009, 13:28
HomerSSS HomerSSS вне форума
Прохожий
 
Регистрация: 19.11.2008
Сообщения: 11
Репутация: 10
По умолчанию

Однако, можно также отдать Handle вашего окна, что исключит путаницу в случае нахождения в
системе двух окон с одинаковыми классами.
Код:
SendMessage(CheckerHandle, WM_USER, 100, Handle);

Для основного окна программы 
Handle :=  Application.MainForm.Handle

Для посылки команды для RADIO Checker PRO используется функция 
SendMessage(CheckerHandle, WM_USER, Cmd, Param);

Для обработки обратных сообщений программы нужно добавить функцию - обработчик сообщений
WM_USER.

При нахождение одного из образцов RADIO Checker Pro сообщит об этом Вашей программе с
кодом.
Код:
wParam = 2000, 
lParam = Номер образца в базе -1
procedure CheckerMessage (var Msg: TMessage); message WM_USER;
...
procedure TCheckerHandler.CheckerMessage (var Msg: TMessage);
begin
  case a.wParam of
   2000: SampleIndex := Msg.lParam + 1;
  end;
end;
Вот это то мне и надо – отловить, когда программа пошлёт это самое сообщение. Может ктонить поможет собрать эти обрывки кода до-кучи, в более-менее осмысленную форму?

Спасибо.

Последний раз редактировалось Admin, 23.11.2009 в 13:46.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter