Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Для тех кто хочет юзать MSMQ, Пример 
V
    Опции темы
X-Vlad
Дата 2.4.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: нет
Всего: 5



Привет всем.
Ненашел на форуме ответа по этой теме.. 
Привожу пример как работать с MSMQ в Дельфи 5,6,7

Заходим в добавление/удаление компонентов винды, находим там "Message Queuing" ставим галочку. 
заходим в дельфи - Project > Import Type Lybrary ищем "Microsoft Message Queue 2.0 Object Library" устанавливаем.

версию 3.0 неустанавливайте - матерится... я неразберался что к чему. Остановился на 2.0

Заходим в консоль управления компьютером. Ищем раздел "Message Queuing" ищем "Public Queues" тыцяем правой кнопок мыши и создаем новую очередь например с именем "MyQueue"

Теперь в дельфи пишем:

Код

uses ... MSMQ_TLB, OleServer, ComCtrls, ComObj;

procedure TForm1.SendNewMSMQMessage(Sender: TObject);
const
  cntFormatName = 'DIRECT=TCP:127.0.0.1\MyQueue'; //  MyQueue - название очереди которую Вы создали
var
  aInfo: TMSMQQueueInfo;
  aQueue: IMSMQQueue2;
  aMessage: TMSMQMessage;
begin
  aInfo := TMSMQQueueINfo.Create(self);
  aInfo.FormatName := cntFormatName;
  aQueue := aInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE);
  try
    aMessage := TMSMQMessage.Create(self);
    aMessage.Label_ := 'My Test Message';
    aMessage.Body := 'Hello, World!';
    aMessage.Send(aQueue);
  finally
    aQueue.Close;
  end;
end;


procedure TForm1.ReadMSMQMessages(Sender: TObject);
const
  cntQueueName = 'DIRECT=TCP:192.168.14.64\MyQueue';  //  MyQueue - название очереди которую Вы создали
var
  aQueueInfo: IMSMQQueueInfo;
  aQueue: IMSMQQueue;
  aMessage: IMSMQMessage;
 
   aTransaction,
   aWantDestination,
   aWantBody,
   aRecieveTimeout,
   aInputData,
   aInputLabel: OLEVariant;
begin
    aQueueInfo := CreateCOMObject (CLASS_MSMQQueueInfo) as IMSMQQueueInfo;
    aQueueInfo.FormatName := cntQueueName;
    aQueue := aQueueInfo.Open (MQ_RECEIVE_ACCESS, MQ_DENY_NONE);
    try
        aTransaction := MQ_SINGLE_MESSAGE;
        aWantDestination := True;
        aWantBody := True;
        aRecieveTimeout := 1000;
        aMessage:= aQueue.Receive (aTransaction, aWantDestination , aWantBody , aRecieveTimeout);
        if aMessage<> nil then begin
            aInputData:= aMessage.body;
            aInputLabel:=msg.label_;
            ShowMessage(Format('Label: %s,  Body: %s', [aInputLabel, aInputData]));
        end;
        finally
            queue.close;
        end;
end;





Это сообщение отредактировал(а) X-Vlad - 2.4.2008, 17:13

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  MSMQ_TLB.pas 210,62 Kb


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0376 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.