Я новичок в Delphi, и я пытаюсь написать экспериментальный плагин для программы в Lazarus. Я нашел бесплатный исходный код из другого плагина, и я стараюсь основываться на нем. Мой плагин должен получить сообщение, отправленное программой, и вставить строку в строку редактирования. До сих пор мне удалось реализовать обработчик программы. Тем не менее, я придерживался CopyDataStruct, который работает с сообщением, отправленным основной программой.Lazarus/Delphi: Msg.CopyDataStruct не распознан
ОБНОВЛЕНИЕ Я думаю, что отзыв от Марко ван де Воорта может объяснить источник проблемы. Я провел некоторое исследование после поиска учебника, и кажется, что эти сообщения просто потеряны.
Так что я переписать свой код, в том числе:
function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam):LRESULT; stdcall;
begin
case uMsg of WM_COPYDATA:
begin
Result := TForm1.WMCopyData();
exit;
end;
else
Result := CallWindowProc(PrevWndProc, Ahwnd, uMsg, WParam, LParam);
end;
end;
, а также
PrevWndProc:=Windows.WNDPROC(SetWindowLongPtr(Self.Handle,GWL_WNDPROC,PtrInt(@WndCallback)));
в разделе FormCreate.
Теперь у меня есть ошибка с результатом: = TForm1.WMCopyData(); Я не уверен, какие параметры должны быть переданы в эту функцию. Он объявляется как: TForm1.WMCopyData (var Msg: TCopyDataStruct); но ни «Msg», ни «TCopyDataStruct» не работают. Не могли бы вы мне помочь?
Посмотрите, как TWMCopyData определяется в Lazarus. Вы можете нажать Ctrl + клик на нем, и Lazarus должен открыть соответствующий исходный файл. –
Очень полезный намек. Я проверю. Спасибо – Krzychu
Вы объявляете параметр как 'var TWMCopyData: Msg', что означает параметр с именем' TWMCopyData' и type 'Msg'. Я предполагаю, что вам нужно их поменять: 'var Msg: TWMCopyData'. – Abelisto