1

ファックスを送信するために以下のコードを試しました:

uses
  ComObj, ActiveX, FAXCOMEXLib_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  JobIDs: OleVariant;
  FaxServer: IFaxServer2;
  FaxDocument: IFaxDocument2;
begin
  try
    FaxServer := CoFaxServer.Create;
    FaxServer.Connect('');
    FaxDocument := CoFaxDocument.Create;
    FaxDocument.Body := 'd:\Document.pdf';
    FaxDocument.DocumentName := 'Document name';
    FaxDocument.Recipients.Add('+1 (425) 555-4567', 'Bill');
    FaxDocument.Sender.Name := 'Bob';
    FaxDocument.Sender.BillingCode := '23A54';
    FaxDocument.Sender.Department := 'Accts Payable';
    FaxDocument.Sender.FaxNumber := '+972 (4) 555-9070';
    JobIDs := FaxDocument.ConnectedSubmit(FaxServer);

    for I := VarArrayLowBound(JobIDs, 1) to VarArrayHighBound(JobIDs, 1) do
      ShowMessage('Job ID: ' + VarArrayGet(JobIDs, [I]));
  except
    on E: EOleSysError do
      ShowMessage(
        Format('Sending of the fax failed! %s [%d]', [E.Message, E.ErrorCode])
      );
  end;
end;

私がやろうとしていたのは、送信された FAX のジョブ ステータスを取得することでした。追加してみました

var
  FaxJobStatus: IFaxJobStatus;
.....

FaxJobStatus := CoFaxJobStatus.Create;

ソース コードをコンパイルし、エラーは見つかりませんでしたが、コードを実行した後、FaxJobStatus := CoFaxJobStatus.Create で「クラスが登録されていません」と言って失敗します。

4

1 に答える 1

1

IFaxJobStatus ドキュメントから:

FaxJobStatus オブジェクトは作成しません。FaxJobStatus 型のパラメーターを含む IFaxServerNotify::OnIncomingJobChanged または IFaxServerNotify::OnOutgoingJobChanged を実装すると、通知の一部として受信されます。イベントが発生し、実装された関数が呼び出されると、動的情報を含むこのオブジェクトを受け取ります。

IFaxServerNotify.OnIncomingJobChangedそのため、またはIFaxServerNotify.OnOutgoingJobChangedイベントに登録する必要があります。Statusイベントが受信されると、FaxJobStatus オブジェクトを取得し、そのプロパティを読み取ることができます。

于 2014-07-05T15:06:10.103 に答える