Ich verstehe, was du damit sagen willst. Bleiben wir dabei: Es gibt die Post, TransoFlex und UPS. Bei allen kann ich noch Post fragen. Dafür habe ich IMessages.GetMessage.
Nun kann ich bei der Post auswählen, ob nur das Vorliegen neuer Post erfragt werden soll und wer das machen darf (Open MQ_RECEIVE_ACCESS, MQ_DENY_NONE), erfragen und gleich mitnehmen <bei Post löschen> aber nur spezielle Leute das machen dürfen (Open MQ_PEEK_ACCESS, MQ_DENY_RECEIVE_SHARE) etc.
Bei TransoFlex kann ich genau das gleiche machen, nur nicht festlegen, wer diese Aktionen durchführen darf.
UPS will garnicht genau wissen, was ich vorhabe, sondern ich kann mich selbst dort bedienen.
Wie soll ich darauf mit IMessage.GetMessage reagieren?
Ich habe als Zwischenlösung (nur damit ich weiter testen kann) ein Array mit Parametern angelegt:
Delphi-Quellcode:
procedure TMy_MSMQ.SetParam(Value:
string);
begin
SetLength(fParams, Succ(Length(fParams)));
fParams[High(fParams)]:=Value;
end;
...
procedure TMy_MSMQ.QueueOpen
begin
fQueue:=fQueueInfo.Open(StrToInt(fParams[0]), StrToInt(fParams[1]));
//MQ_SEND_ACCESS / MQ_RECEIVE_ACCESS etc.
end;
procedure TForm1.Button2Click(Sender: TObject);
var
mq: IMy_MQ;
begin
mq:=TMy_MSMQ.Create;
//Verbinden
mq.SetParam(IntToStr(MQ_RECEIVE_ACCESS));
mq.SetParam(IntToStr(MQ_DENY_NONE));
if (mq.QueueOpen('
DIRECT=OS:.\Private$\Test'))
then
ShowMessage('
Queue opened');
end;
Funktioniert, ist aber nicht optimal...