Einzelnen Beitrag anzeigen

katjah

Registriert seit: 6. Aug 2006
Ort: Herborn
28 Beiträge
 
#4

AW: mit Delphi Faxen über Fritz-Box

  Alt 7. Nov 2012, 22:04
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.
Gruß Katja
  Mit Zitat antworten Zitat