Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   mit Delphi Faxen über Fritz-Box (https://www.delphipraxis.net/171463-mit-delphi-faxen-ueber-fritz-box.html)

luisk 7. Nov 2012 15:46

mit Delphi Faxen über Fritz-Box
 
Hallo,
ich will mit Delphi Faxe über die Fritzbox verschicken.
Der FritzFax-Drucker ist installiert, und ich kann
die Telefonnummer in die Registry eintragen und über TPrinter rausschicken.
Nun habe ich folgendes Problem:
Die Fritz-Fax-Software öffnet bei jedem Druckauftrag einen Bestätigungsdialog,
womit eine Automatisierung nicht möglich ist. Man muss immer ok drücken.
Kann mir jemand sagen, wie ich diesen Dialog abschalten kann?
Habe in den Registry-Parametern keinen für mich plausiblen Parameter gefunden.

Darlo 7. Nov 2012 15:55

AW: mit Delphi Faxen über Fritz-Box
 
Kannst Du nicht auf das Handle des Dialogs zugreifen und bestätigen?

Hatte da mal irgendwas für ein anderes Programm mit "enum & FindWindow" gemacht.

EDIT: Schau mal hier http://www.swissdelphicenter.ch/de/showcode.php?id=327
Delphi-Quellcode:
{
  Example how to search for a window that contains the
  word "notepad" and maximize it.

  Beispiel, wie man ein Fenster "notepad" findet
  und es anschliessend maximiert.
}

procedure TForm1.Button1Click(Sender: TObject);
var
  h: hwnd;
begin
  h := FindWindowByTitle('notepad');
  if h <> 0 then // if we found notepad
    ShowWindow(h, SW_MAXIMIZE)
  else
    ShowMessage('not found.');
end;

luisk 7. Nov 2012 15:57

AW: mit Delphi Faxen über Fritz-Box
 
hi,
das wäre die Notlösung. Abschalten wäre besser.

katjah 7. Nov 2012 21:04

AW: mit Delphi Faxen über Fritz-Box
 
Hi,

ich habe sowas vor ewigen Zeiten mal gemacht. Mit ok bestätigen muss ich da nichts, es öffnet sich lediglich das FritzFax-Übersichtsfenster.
Hier der Auszug aus dem Code:
Block1:
Delphi-Quellcode:
 
  regist:=TRegistry.Create;
  regist.rootkey:=HKEY_CURRENT_USER;
  regist.openkey('SOFTWARE\AVM\Fritz! 2.0\Fritz!',true);
  //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
  regist.writestring('SendMergePath',''); // Stand mal auf : C:\Dokumente und Einstellungen\"UserName"\Lokale Einstellungen\Anwendungsdaten\FRITZ!\Tmp00000
  regist.CloseKey;
  regist.free;
Block2:
Delphi-Quellcode:
function StartFritzFax:boolean;
var WindowHandle : THandle;
    WindowName   : String;
    i            : integer;
begin
  WindowName:='FRITZ!fax';
  WindowHandle := FindAWindow(WindowName, '');
  result:=false;
  if WindowHandle<>0 then
    result:=true
  else
  begin
    OpenProgram(Application.handle,'FriFax32','');
    i:=0;
    repeat
      WindowHandle := FindAWindow(WindowName, '');
      inc(i);
      if WindowHandle=0 then
        Sleep(1000)
      else
      begin
        result:=true;
        SendMessage(WindowHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
      end;
    until (WindowHandle<>0) or (i>5);
  end;
end;
Block3:
Delphi-Quellcode:
 
  DocName:='Name des Dokuments';
  regist:=TRegistry.Create;
  regist.rootkey:=HKEY_CURRENT_USER;
  regist.openkey('\Software\VB and VBA Program Settings\FRITZ!fax\Print',true);
  //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
  regist.writestring(DocName,FaxNr);
  regist.openkey('\Software\VB and VBA Program Settings\FRITZ!fax\SendTime',true);

// Zeitversetzt senden
  if (rgSend.ItemIndex=1) or
     ((SendDateTime<>0) and (FaxSpinEdit1.Value>0)) then
  begin
    SendDateTimeX:=DateTimeToStr(SendDateTime);
    regist.writestring(DocName,SendDateTimeX);
    if FaxSpinEdit1.Value>0 then
      SendDateTime:=IncMinute(SendDateTime,FaxSpinEdit1.Value);
  end;
  regist.free;
  printer.Title:=DocName;
  Printer.BeginDoc;
  DoPrint; //eigentlicher Druck
  Printer.EndDoc;
  sleep(1000);
Ich habe das aus meinem Code rausgezogen und hoffentlich alle relevanten Teile erwischt. Die Blöcke werden in der Reihenfolge ausgeführt, Block3 ggf. mehrfach. Ich hoffe, das hilft Dir weiter.

luisk 8. Nov 2012 17:56

AW: mit Delphi Faxen über Fritz-Box
 
Hallo Katja,
und wie hast Du es hinbekommen, dass der Dialog mit dem OK-Button nicht mehr erscheint ?

luisk 8. Nov 2012 18:09

AW: mit Delphi Faxen über Fritz-Box
 
hier hab ich was gefunden:
http://www.ip-phone-forum.de/archive.../t-93961.html?
Wenn in der Registry für den Dokumentnamen eine Faxnummer hinterlegt ist, fragt Fritz!Fax nicht mehr nach der Rufnummer, sondern nutzt die hinterlegte. Danach wird der Registryeintrag automatisch gelöscht.

Also brauchst Du einen batch, der als erstes das Dokumentname/Faxnummer-Paar in die Registry einträgt und dann das Dokument druckt.
Lösung:
In Registry unter
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\FRITZ!fax\Print
eine Zeichnfolge eintragen. Der Name der Zeichenfolge ist der Name des Druckjobs, der Wert ist die Rufnummer

und hier:
http://www.spotlight-wissen.de/archi...e/1038523.html
*--- Beginn Doku ---*
Um das Faxmodul von FRITZ!32 direkt aus Office-Applikationen (z.B.
Berichtsfunktionen von MS Access Datenbanken) anzusprechen, können Sie in
der Registry zwei Einträge vom Typ Zeichenkette verwenden. Damit wird der
Dokumenttitel und die Rufnummer an den FRITZ!fax Drucker übergeben.

Ergänzen Sie zunächst den Zweig H_KEY_CURRENT_USER\SOFTWARE um den
Schlüssel VB and VBA Program Settings. Damit wird der Zugriff durch
Office-Programme sichergestellt.
Danach muss der Schlüssel noch eindeutig auf FRITZ!fax und den Druckprozeß
bezogen werden.
Der Schlüssel für ein einmaliges Fax lautet:
HKCU\Software\VB and VBA Program Settings\FRITZ!fax\Print
und der Schlüssel für den Serienfaxversand lautet:
HKCU\Software\VB and VBA Program Settings\FRITZ!fax\Serienbrief
In dem jeweils gewünschten Schlüssel einen Wert vom Typ Zeichenkette
setzen. Der Name des Wertes entspricht dem Dokumentnamen (Dateinamen), sein
Inhalt der Rufnummer an die das Fax geschickt werden soll.
Mit dem Setzen des Wertes wird der Aufruf des Rufnummerneingabefensters
unterdrückt (FRITZ!fax läuft im Hintergrund!). Nach dem Faxversand wird der
komplette Eintrag automatisch in der Registry gelöscht. Dadurch ist
insbesondere beim Serienfaxen eine Synchronisation mit der Textverarbeitung
möglich, um das Überschneiden zweier Serienbriefseiten zu verhindern.

AVM bietet - unabhängig von den tatsächlich vorhandenen Möglichkeiten -
außer den beiden Registry-Schlüsseln, keine weitergehenden Informationen
für die Integration von FRITZ!fax in selbsterstellten Applikationen an.
Bitte haben Sie Verständnis dafür, dass wir unsere Hilfestellungen zur Zeit
nicht auf Details der Programmierung ausdehnen können.
*--- Ende Doku ---*

katjah 8. Nov 2012 18:25

AW: mit Delphi Faxen über Fritz-Box
 
Zitat:

Also brauchst Du einen batch, der als erstes das Dokumentname/Faxnummer-Paar in die Registry einträgt und dann das Dokument druckt.
Lösung:
In Registry unter
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\FRITZ!fax\Print
eine Zeichnfolge eintragen. Der Name der Zeichenfolge ist der Name des Druckjobs, der Wert ist die Rufnummer
Das macht mein Code ja, dann wird es wohl das gewesen sein.

luisk 8. Nov 2012 18:29

AW: mit Delphi Faxen über Fritz-Box
 
Danke, Katja, mir hat die Erklärung gefehlt.
hier ist auch noch ne Quelle:
http://www.delphipraxis.net/45440-au...ung-faxen.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz