Показать сообщение отдельно
  #4  
Старый 25.01.2022, 01:47
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Пока сделал такой вариант:

программа посылающее сообщение [центру уведомлений]
Код:
const
  CMD_SETLABELTEXT = 1; // Задаем ID команды 
....
.....

function Notify_Send(EXE_PATH, aMESSAGE: string): Boolean;
var
  CDS: TCopyDataStruct;
  SUPER_MESSAGE: string;
begin
  SUPER_MESSAGE := '[' + EXE_PATH + '] ' + '[' + aMESSAGE + ']'; // склеиваем информацию в одну строку
  { ---------------------------------------------------- }
  CDS.dwData := CMD_SETLABELTEXT; // Устанавливаем тип команды
  CDS.cbData := Length(SUPER_MESSAGE) + 1; // Устанавливаем длину передаваемых данных
  GetMem(CDS.lpData, CDS.cbData); // Выделяем память буфера для передачи данных
  try
    StrPCopy(CDS.lpData, AnsiString(SUPER_MESSAGE)); // Копируем данные в буфер
    // Отсылаем сообщение в окно с заголовком MyNotifyCentr_BKF
    SendMessage(FindWindow(nil, 'MyNotifyCentr_BKF'), WM_COPYDATA, Form1.Handle, Integer(@CDS));
  finally
    FreeMem(CDS.lpData, CDS.cbData); // Высвобождаем буфер
  end;
end;


Программа центр уведомлений, которая принимает сообщения
Код:
  
private
  // Обработчик сообщения WM_COPYDATA
    procedure WMCopyData(var MessageData: TWMCopyData); message WM_COPYDATA;

.......
......
const
  CMD_SETLABELTEXT = 1;

.......
......
procedure TForm1.WMCopyData(var MessageData: TWMCopyData);
begin
  // Устанавливаем свойства метки, если заданная команда совпадает
  if MessageData.CopyDataStruct.dwData = CMD_SETLABELTEXT then
  begin
    // Устанавливаем текст из полученных данных
    sLabel1.Caption := PAnsiChar((MessageData.CopyDataStruct.lpData));
    MessageData.Result := 1;
  end
  else
    MessageData.Result := 0;
end;

посылать в окно сообщение, в котором путь к exeшнику который посылает сообщение, и само сообщение..
В программе которая принимает сообщения, я беру путь к exeшнику и получаю его иконку с помощью ExtractAssociatedIcon.
Есть ли еще какие-либо способы?
Ответить с цитированием