Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Internet-Verbindung als Event abfangen und anzeigen (https://www.delphipraxis.net/15548-internet-verbindung-als-event-abfangen-und-anzeigen.html)

mumu 30. Jan 2004 17:43


Internet-Verbindung als Event abfangen und anzeigen
 
Frage: ich versuche das online und offline gehen mit einem event signalisieren, was mach ich hier falsch???

Delphi-Quellcode:
const
  RASCN_Connection      = $00000001;
  RASCN_Disconnection   = $00000002;
  RASCN_BandwidthAdded  = $00000004;
  RASCN_BandwidthRemoved = $00000008;

function RasConnectionNotification(hrasconn: THRasConn; hEvent: THandle; dwFlags: Longint): longint; external 'rasapi32.dll' name 'RasConnectionNotificationA';


var pCanRead: PWOHandleArray;
begin
  pCanRead:=AllocMem(2*sizeof(THandle));
  pCanRead[0]:=CreateEvent(nil,True,False,'RASStatusNotificationObject1');
  RasConnectionNotification(INVALID_HANDLE_VALUE, pCanRead[0], RASCN_Connection);
  if pCanRead[0] = 0 then showmessage('geht net');
  pCanRead[1]:=CreateEvent(nil,True,False,'RASStatusNotificationObject2');
  if pCanRead[1] = 0 then showmessage('geht net');
  RasConnectionNotification(INVALID_HANDLE_VALUE, pCanRead[1], RASCN_Connection);
  if WaitForMultipleObjects(2, @pCanRead[0],   False, 20) = WAIT_OBJECT_0 then showmessage('online');
  if WaitForMultipleObjects(2, @pCanRead[1],   False, 20) = WAIT_OBJECT_0+1 then showmessage('offline');
end;
danke schonmal im vorraus

Christian Seehase 30. Jan 2004 18:52

Re: Internet-Verbindung als Event abfangen und anzeigen
 
Moin mumu,

schau Dir nochmal genau die Dokumentation zu WaitForMultipleObjects an.

mumu 31. Jan 2004 16:31

Re: Internet-Verbindung als Event abfangen und anzeigen
 
tja ich kriegs halt einfach nicht... habs heut jetzt den ganzen tag probiert, weiß nicht was ich da falsch mach WaitForMultipleObjects hab ich auch schon auf INFINITE gesetzt bzw. in eine Schleife gepackt, aber nix... habs auch schon mit waitforsingleobject gemacht:
Delphi-Quellcode:
var
    Event: THandle;
begin
  Event := CreateEvent(nil,False,False,'RASStatusNotificationObject1');
  RasConnectionNotification(INVALID_HANDLE_VALUE, Event, RASCN_Connection);
  waitret := waitforsingleobject(event, INFINITE);
  showmessage(inttostr(waitret));
wär echt spitze wenn mir jemand nochmal helfen würd

danke

Christian Seehase 31. Jan 2004 23:19

Re: Internet-Verbindung als Event abfangen und anzeigen
 
Moin Mumu,

statt Deiner zwei if Zeilen aus dem Eingangsposting probier's mal hiermit (ungetestet, sollte aber gehen):

Delphi-Quellcode:
var
  dwResult : DWORD;
  fExit   : boolean;

begin
  // der Teil vor den if Zeilen

  fExit := false;
  while not fExit do begin
    dwResult := WaitForMultipleObjects(2,@pCanRead[0],False, 20);
    case dwResult of
      WAIT_OBJECT_0     : begin
        ShowMessage('online');
        fExit := true;
      end;
      WAIT_OBJECT_0 + 1 : begin
        ShowMessage('offline');
        fExit := true;
      end;
    end;
  end;
end;
Da ich das hier direkt reingeschrieben habe könnten noch Fehler enthalten sein.
Als Timeout kannst Du natürlich auch etwas anderes angeben.

mumu 1. Feb 2004 12:41

Re: Internet-Verbindung als Event abfangen und anzeigen
 
also erstmal vielen dank für die antwort, nur es geht immer noch nicht. also ich denke nicht, dass es an der wait-funktion liegt, da ich es auch schon ganz einfach mit waitforsingleobject probiert hab... ich denk irgendwie, dass es entweder am erstellen des events hakt oder das die funktion RasConnectionNotification haut nicht richtig hin, hab schon ganz schön viel probiert... vielleicht hat ja jemand noch nie idee. hier nochmal mein jetziger code:

Delphi-Quellcode:
  pCanRead:=AllocMem(2*sizeof(THandle));
  pCanRead[0]:=CreateEvent(nil,True,False,'RASStatusNotificationObject1');
  RasConnectionNotification(INVALID_HANDLE_VALUE, pCanRead[0], RASCS_Connected);
  if pCanRead[0] = 0 then showmessage('geht net');
  pCanRead[1]:=CreateEvent(nil,True,False,'RASStatusNotificationObject2');
  if pCanRead[1] = 0 then showmessage('geht net');
  RasConnectionNotification(INVALID_HANDLE_VALUE, pCanRead[1], RASCS_Disconnected);

  fExit := false;
  while not fExit do begin
    dwResult := WaitForMultipleObjects(2,@pCanRead[0],False, 20);
    case dwResult of
      WAIT_OBJECT_0     : begin
        ShowMessage('online');
        fExit := true;
      end;
      WAIT_OBJECT_0 + 1 : begin
        ShowMessage('offline');
        fExit := true;
      end;
    end;
  end;

mumu 22. Mär 2004 12:54

Re: Internet-Verbindung als Event abfangen und anzeigen
 
und noch jemand irgend eine idee... bin da immer noch dran.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.

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