|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите собрать "докучи"
Всем привет.
Помощь нужна… Вопрос такой – есть программка, 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, 23.11.2009 в 13:45. |
#2
|
|||
|
|||
Однако, можно также отдать 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. |