Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
Delphi XE2 Enterprise
|
Re: fritz.box Anruferliste
23. Mär 2007, 12:07
Hi,
ich habe mir dafür ne Komponente geschrieben ... hier ein Auszug aus dem Code
Delphi-Quellcode:
procedure TMyGetTelListThread.Execute;
var
Params : TStringList;
HTTP : TIdHTTP;
sTelList : string;
label
DoAbortAll;
begin
HTTP := TIdHTTP.Create( nil);
HTTP.HandleRedirects := True;
HTTP.Request.ContentLength := -1;
HTTP.Request.Accept := ' text/html, */*';
HTTP.HTTPOptions := [hoForceEncodeParams];
Params := TStringList.Create;
sTelList := ' ';
//Wenn Passwort dann Login durchführen
if FPasswort <> ' ' then
begin
if Assigned(FOnStatus) then
FOnStatus(' Führe Login durch ...');
with Params do
begin
Clear;
Add(' getpage=../html/de/menus/menu2.html');
Add(' errorpage=../html/index.html');
Add(' var:lang=de');
Add(' var:pagename=home');
Add(' var:menu=home');
Add(' login:command/password=' + FPasswort);
end;
//Login To Box
try
FHtml := HTTP.Post(' http://'+FBoxURL+' /cgi-bin/webcm', Params);
//Auf ungültiges Passwort prüfen
if StrIPos(' Kennwort ist ungültig', FHtml) > 0 then
FIntErrStr := ' Kennwort ist ungültig !';
except
on E: Exception do FIntErrStr := E. Message;
end;
end;
//Auf abbruch prüfen
if Self.Terminated then goto DoAbortAll;
//Telefonliste holen
if FIntErrStr = ' ' then
begin
if Assigned(FOnStatus) then
FOnStatus(' Fritz!Box Anrufliste erzeugen ...');
try
FHtml := HTTP.Get(' http://'+FBoxURL+' /cgi-bin/webcm?getpage=../html/de/menus/menu2.html&' +
' errorpage=../html/de/menus/' +
' menu2.html&var:lang=de&var:pagename=foncalls&var:' +
' errorpagename=foncalls&var:menu=fon');
if (FPasswort = ' ') and (StrIPos(' FRITZ!Box Anmeldung', FHtml) > 0) then
FIntErrStr := ' Sie benötigen ein gültiges Kennwort um die Anrufliste der Box abzuholen !';
except
on E: Exception do FIntErrStr := E. Message;
end;
//Auf abbruch prüfen
if Terminated then goto DoAbortAll;
if Assigned(FOnStatus) then
FOnStatus(' Fritz!Box Anrufliste abholen ...');
try
FHtml := HTTP.Get(' http://'+FBoxURL+' /cgi-bin/webcm?' +
' getpage=../html/de/FRITZ!Box_Anrufliste.csv');
sTelList := StrAfter(' Dauer', FHtml);
sTelList := Trim(sTelList);
except
on E: Exception do FIntErrStr := E. Message;
end;
//Auf abbruch prüfen
if Terminated then goto DoAbortAll;
end;
//Telefonliste löschen
if (FDeleteOnBox) and (FIntErrStr = ' ') then
begin
if Assigned(FOnStatus) then
FOnStatus(' Fritz!Box Anrufliste löschen ...');
with Params do
begin
Clear;
Add(' getpage=../html/de/menus/menu2.html');
Add(' errorpage=../html/de/menus/menu2.html');
Add(' var:lang=de');
Add(' var:pagename=foncalls');
Add(' var:errorpagename=foncalls');
Add(' var:menu=fon');
Add(' var:pagemaster=');
Add(' telcfg:settings/ClearJournal=1');
end;
try
FHtml := HTTP.Post(' http://'+FBoxURL+' /cgi-bin/webcm', Params);
except
on E: Exception do FIntErrStr := E. Message;
end;
//Auf abbruch prüfen
if Self.Terminated then goto DoAbortAll;
end;
//Event auslösen
if Assigned(FOnHttpResult) then
FOnHttpResult(sTelList, FIntErrStr);
DoAbortAll:
Params.Free;
HTTP.Free;
end;
[edit=Jelly]Die zu langen Zeilen auf Wunsch etwas umgebrochen Mfg, Jelly[/edit]
|
|
Zitat
|