Einzelnen Beitrag anzeigen

Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#1

Wird ein Event ausgelöst, wenn die Inet-Verb. getrennt wird?

  Alt 26. Feb 2004, 20:54
Hallo Freunde ,

öh, solche Threads gibs hier sicher schon zuHauf, aber ich finde nicht das richtige....

Ich überprüfe, ob eine Verbindung besteht. Wenn eine besteht, dann versuche ich, sie zu beenden.
Nun kann es doch mal vorkommen, dass es ein paar (Milli)Sekunden dauert, bis die Verbindung getrennt ist; da ich aber sofort nach dem Trennen überprüfe, ob die Verbindung noch steht und ensprechend verfahre, kann es vorkommen, dass die Verbindung getrennt wird, der PC aber trotzdem sagt, sie könne nicht beendet werden, weil sie in dem Moment, in dem mein Programm überprüft, gerade noch aktiv ist!

Wird da irgendein Event oder so ausgelöst, wenn eine Verbindung beendet wird, woran man sieht, DASS sie beendet wurde?

Ich habe das im Moment so gelöst, dass vor der Überprüfung das Programm noch 1-2 Sekunden wartet, aber das ist nicht sehr toll...

Delphi-Quellcode:
procedure TForm1.TiShutdownTimer(Sender: TObject);
var f : textfile;
    ConnDetails : TRASConnectionDetails;
    Upload, Download, Trennung, SDVerlauf, Volumen : string;
begin
TiShutdown.Enabled := false;
TiCount.Enabled := false;
Upload := '';
Download := '';
Trennung := '';
SDVerlauf := '';
Volumen := '';

//evtl. Verbindung trennen
try
  if InternetGetConnectedState(nil, 0) then
    begin
     RasMonitor.GetRasConnection(ConnDetails);
     RasMonitor.HangUpRasConnection(Conndetails.RasConn); //verbindung soll getrennt werden
     sleep(1500); //warten....
     getrennt := not InternetGetConnectedState(nil, 0); //hm, nicht sehr sicher...
     if not InternetGetConnectedState(nil, 0) and getrennt
       then Trennung := 'Internetverbindung getrennt.'
       else Trennung := 'Internetverbindung konnte nicht getrennt werden!';

     //evtl. Datenvolumen & Onlinezeit bekommen
     if (GetSessionTraffic('In') / 1024 > 1024)
       then Download := 'Download: ' + FormatFloat('0.00', GetSessionTraffic('In') / 1024 / 1024) + ' Mb'
       else Download := 'Download: ' + FormatFloat('#,##0.00', GetSessionTraffic('In') / 1024) + ' Kb';

     if (GetSessionTraffic('Out') / 1024 > 1024)
       then Upload := 'Upload: ' + FormatFloat('0.00', GetSessionTraffic('Out') / 1024 / 1024) + ' Mb'
       else Upload := 'Upload: ' + FormatFloat('#,##0.00', GetSessionTraffic('Out') / 1024) + ' Kb';

     Volumen := ' (' + Upload + '; ' + Download + ')';
     Trennung := Trennung + Volumen;
    end;
except
  Trennung := 'Internetverbindung konnte nicht getrennt werden!';
end;

  (*---------Onlinezeit fehlt noch-----------*)

//Logfile schreiben
SDVerlauf := 'Shutdown am '+ DatetoStr(IncSecond(now,2)) + ' um ' + TimeToStr(now) + ' erfolgreich ausgeführt. ';
assignfile(f, ExtractFilePath(Application.exename) + 'Shutdown.log');
if FileExists(ExtractFilePath(Application.exename) + 'Shutdown.log')
  then append(f)
  else rewrite(f);
writeln(f, (SDVerlauf + Trennung));
writeln(f, '');
closefile(f);

//Keinen Beenden-Dialog anzeigen
Normalclose := true;

//Windows_Shutdown;
//ExitWin(EWX_POWEROFF or EWX_FORCE); //??
//ExitWin(EWX_SHUTDOWN or EWX_FORCE); //??
ExitWin(EWX_SHUTDOWN); //??
end;
MfG Lefko
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat