Внешнее управление программой
RADIOSOFT 2009
Программа имеет интерфейс для общения с другими программами с использованием функций Windows API.
Далее приведенный текст адаптирован для использования с языком программирования Delphi, однако может быть легко транслирован для использования в C++ и др..
Для работы с 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;
Однако, можно также отдать Handle вашего окна, что исключит путаницу в случае нахождения в системе двух окон с одинаковыми классами.
SendMessage(CheckerHandle, WM_USER, 100, Handle);
Для основного окна программы
Handle := Application.MainForm.Handle
Для посылки команды для RADIO Checker PRO используется функция
SendMessage(CheckerHandle, WM_USER, Cmd, Param);
Действие
Cmd
Param
Включение образца с постановкой на слежение
2012
Номер образца в базе -1
Отключение образца с отключением слежения
2013
Номер образца в базе -1
Постановка на слежение включенных образцов, отключение выключенных
4000
0
Включение образца БЕЗ постановки на слежение
4001
Номер образца в базе -1
Отключение образца без отключения слежения
4002
Номер образца в базе -1
Включение всех образцов с включением слежения
3000
0
Отключение всех образцов с отключением слежения
3001
0
Для обработки обратных сообщений программы нужно добавить функцию - обработчик сообщений 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;