Announcement

Collapse
No announcement yet.

word dokument an fritzfax senden, bild funktioniert schon

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • word dokument an fritzfax senden, bild funktioniert schon

    kann mit dem code unten kann ich ein Bild (TGraphic) an fritzfax senden,
    wie muss ich den code anpassen, sodass ich ein word-dokument senden kann?wäre sooooo super wenn mir jemand dabei helfen würde...
    <PRE>
    procedure SendFax(Bild: TGraphic; FaxNummer: string);
    const
    DokumentTitel = 'FritzMcCoy Test';
    FaxDruckerName = 'FRITZfax Drucker';
    begin

    // Zuerst den Titel und die Nummer des zu druckenden
    // Dokuments in die Registry schreiben
    // (Fritz!Fax schaut dort wohl vor Abfrage
    // einer Nummer nach ;-)
    with TRegistry.Create do
    try
    RootKey := HKEY_CURRENT_USER;
    if OpenKey('\Software\VB and VBA Program Settings\FRITZ!fax\Print',
    True) then
    WriteString(DokumentTitel, FaxNummer);
    finally
    CloseKey;
    Free;
    end;

    // Nun das Bild auf den Faxdrucker drucken
    with Printer do
    begin
    SetPrinter(FaxDruckerName, '', '', 0);
    Title := DokumentTitel; // und hier bitte auch den Titel setzen
    BeginDoc;
    Canvas.Draw((PageWidth - Bild.Width) div 2,
    (PageHeight - Bild.Height) div 2,
    Bild);
    EndDoc;
    PrinterIndex := -1; // Standarddrucker zuruecksetzen
    end;

    end;
    </PRE>

    so wird mein wordfile erstellt:
    <PRE>

    NewFile:= ExtractFilePath('C:\fax\datenbanken\temp')+'Brief. doc';
    WordApplication1.Connect;

    FileName := 'C:\fax\doc.doc';
    WordApplication1.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam);
    WordDocument1.ConnectTo(WordApplication1.ActiveDoc ument);
    WordApplication1.Visible:=false;

    WordApplication1.Selection.TypeText(form1.richedit 1.text);
    Pause:=True;
    WordDocument1.ConnectTo(WordApplication1.ActiveDoc ument);

    WordDocument1.SaveAs(newFile);

    // WordApplication1.ActivePrinter:=('FRITZfax Drucker');
    //WordApplication1.PrintOut;
    </PRE>

  • #2
    Hallo,

    &gt; ..wie muss ich den code anpassen..

    das eigene Programm darf nicht selbst auf den "Drucker" (FAX) zugreifen, sondern muss direkt über Automation in der fernbediensten Microsoft Word-Instanz den "Drucker FAX" auswählen. Wird dann die normale Druck-Funktion von Word (Application-Methode PrintOut) genutzt, landet das Ergebnis als FAX beim Empfänger.

    Damit die richtigen VBA-Anweisungen "erwischt" werden, ist es immer eine gute Idee, die Vorgang zuerst über den Makro-Recorder von Word aufzuzeichnen und dann die mitprotokollierten VBA-Anweisungen im eigenen Delphi-Programm nachzubauen

    Comment


    • #3
      Hallo horst,<p>
      Dein Ansatz ist richtig! Die letzten zwei auskommentierten Zeilen sollten eigentlich das gewünscht tun, wenn der Druckername stimmt. Du solltest nur drauf achten, zuvor den ActivePrinter zwischenzuspeichern und nachher wieder zurückzusetzen! Sonst verstellt die Aktion den Windows Standarddrucker. Zudem solltest Du mal ein Makro aufzeichnen, während Du den BackgroundDruck ausschaltest. Aber vielleicht ist das ja auch eine Option von PrintOut? Sonst weißt Du ja nicht, wann Word fertig ist!<p>
      Schöen Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        danke, ich habs so gelöst...

        <PRE> Druckdatei := 'C:\Brief.doc'; // muss vorhanden sein
        WordApplication1.Visible := false;
        FaxNummer := ''+memo9.text+'';
        FaxDrucker := 'FRITZfax Drucker'; // so wie der Drucker installiert ist
        with TRegistry.Create do
        try
        RootKey := HKEY_CURRENT_USER;

        if OpenKey('\Software\VB and VBA Program Settings\FRITZ!fax\Print',True) then
        WriteString('Microsoft Word - Brief.doc', FaxNummer);
        finally
        CloseKey;
        Free;
        end;
        Label13.caption := GetDefaultPrinter; // Ursprungsstandartdrucker holen
        SetDefaultPrinter(FaxDrucker); // Faxdrucker setzen
        Printer.PrinterIndex := -1; // select default Drucker
        Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
        S := Format('"%s" "%s" "%s"', [Device, Driver, Port]);
        ShellExecute(Handle, 'printto', PChar(DruckDatei), PChar(S), nil, SW_HIDE);
        SetDefaultPrinter(Label13.Caption); // wieder auf Ursprungs-Standarddrucker setzen</PRE>

        ps. wieso kriegt man keine mails wenn im eigenen beitrag gepostet wurde

        Comment


        • #5
          Mein Problem ist noch das Word immer sichtbar ist, wie kann ich das umgehen....
          gruss h

          Comment


          • #6
            Tut <b>WordApplication1.Visible := false;</b> nicht das gewünschte? Ansonsten schaue mal, ob WordDocument auch so eine Eigenschaft hat.<p>Schöne Grüße, Mario Noac
            Schöne Grüße, Mario

            Comment


            • #7
              hatte es damit schon funktioniert aber es funktionierte damals nicht, jetzt klappts, danke dir..

              Comment

              Working...
              X