Tester une connexion de modem

Résolu
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 - 23 nov. 2004 à 11:54
yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 - 19 oct. 2005 à 19:26
Bonjour à tous,

J'essai de tester une connexion de modem, mais je n'y arrive pas.
Pour mon application je veux utiliser un modem externe, alors que j'ai un accés direct à internet par le réseau.
j'ai trouvé ce code pour tester la connexion :

Function DetectionConnexion: Boolean;
Var
dwFlags: DWord;
Begin
dwFlags := INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@dwFlags, 0);
End;

Mais ca ne marche pas, il me dit tout le temps que je suis connecté alors que le modem n'arrive pas à se connecter.

Comment dois-je m'y prendre pour tester la connexion du modem???

Merci d'avance
Isa

19 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 nov. 2004 à 13:53
apres moulte rechch sur google, cette fonction est faite pour detecter le type de connexion, et non pas si on est connecté ou pas au net.
en fait pour detecter si une connexion est faite, il faut faire un ping ou choper une url etc mais c pas tres propre. de plus ce n'est pas 100% certain. un sujet sur VBFRANCE est a lire a propos de la detection de connexion (meme si comme moi tu ne connais pas VB :D)
lien : http://www.vbfrance.com/code.aspx?id=27454
ne fais pas attention a la source, elle est 100% inutilisable :) meme transcrite en delphi.
bonne lecture :D

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
3
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
23 nov. 2004 à 15:49
Salut,
J'arrive peut être en retard, mais, j'ai retrouvé quelque chose concernant la connexion modem à Internet qui peut t'intéresser.
J'utilisais RASAPI32.dll et son interface RAS.PAS (que tu peux trouver ici.
On y trouve les fonctions suivantes :
function RasEnumEntries; external rasapi32 name 'RasEnumEntriesA';
function RasGetEntryDialParams; external rasapi32 name 'RasGetEntryDialParamsA';
function RasDial; external rasapi32 name 'RasDialA';
function RasHangUp; external rasapi32 name 'RasHangUpA';
function RasEditPhonebookEntry; external rasapi32 name 'RasEditPhonebookEntryA';
function RasCreatePhonebookEntry; external rasapi32 name 'RasCreatePhonebookEntryA';
function RasGetConnectStatus; external rasapi32 name 'RasGetConnectStatusA';
function RasEnumConnections; external rasapi32 name 'RasEnumConnectionsA';
function RasGetErrorString; external rasapi32 name 'RasGetErrorStringA';
function RasGetProjectionInfo; external rasapi32 name 'RasGetProjectionInfoA';
function RasSetEntryDialParams; external rasapi32 name 'RasSetEntryDialParamsA';

et en particulier RasEnumConnections et RasGetConnectStatus que j'utilisait ainsi :

var
   ...
   RasStatus : RASCONNSTATUS;
   RasBuffer : RASCONN;
   RasNombre : integer;  
begin
RASNombre:=0;
  RasBuffer.dwSize:=sizeof(RASCONN);
  Resu:=RasEnumConnections(@RasBuffer,@RasSize,@RASNombre);
  if (resu=0) and (RASNombre>0) then
    begin
      ....
      RasStatus.dwSize:=sizeof(RASCONNSTATUS);
      resu:= RasGetConnectStatus( RasBuffer.hrasconn, @RasStatus);
      if resu = 0 then
        begin          Device:=#9+RasStatus.szDeviceType+#9+RasStatus.szDeviceName;
          if RasStatus.rasconnstate= RASCS_ConnectDevice then
            begin
              ......
              Caption :='Connexion';
            end;
          if RasStatus.rasconnstate= RASCS_Authenticate then
            begin
              .......
              Caption :='Autentification';
            end;
          if RasStatus.rasconnstate= RASCS_OpenPort then
            begin
              .......
              Caption :='Ouvert';
            end;
        end;
  ..... 


En gros, ça permet de surveiller un modem, et de récupérer les info de connexion comme la fenêtre stadard.

Tu as en plus les fonctions RasDial et RasHangup,pour numéroter et raccrocher (t'as pas cherché quelque chose dans le genre il y a peu ?)

Ken@vo

P.S. RAS ça veut dire Remote Acces
____________________
Code, Code, Codec !
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 nov. 2004 à 12:17
hello,
c'est aussi la seule que je connaisse, si tu veux tester QUE le modem alors deja enleve :
" or INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_PROXY"
comme ça, seulement la conexion modem sera testée.
dis moi si c mieux

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
23 nov. 2004 à 13:08
J'ai déjà essayé mais ça ne change rien. Je ne comprend pas pourquoi ça ne marche pas!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 nov. 2004 à 13:38
moi (avant d'avoir ma freebox/routeur) j'avais une simple connexion LAN (sans le net) et cette fonction me disais ke j'étais connecté... connecté au reseau : oui, mais eu net, non :/
desole je n'ai pas meilleure solution sous la main

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
23 nov. 2004 à 13:42
Même en ayant le modem éteint il me renvoie que le connexion est faite.
Merci quand même.
Isa :kisses)
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
23 nov. 2004 à 13:55
Merci beaucoup d'avoir fait la recherche.
Pour le VB j'ai pas de soucis, j'ai passé près de 2 ans en tant que developpeur VB.
Merci beaucoup!!!
:kisses) :kisses) :kisses) :kisses)
Isa
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 07:08
Merci beaucoup Kenavo, je vais essayer ta méhtode.
Sinon ma connexion je l'ai faite dans le fichier .bat
:kisses)
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 07:37
Excuse moi mais j'ai une question très conne. :shy)
Tu les déclare ou RASCONNSTATUS et RASCONN???
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
24 nov. 2004 à 07:51
RASCONNSTATUS et RASCONN sont des types définis dans Ras.pas

Ken@vo
____________________
Code, Code, Codec !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 07:54
Ok j'ai trouvé, c'est TrasConnStatus.
Mais j'ai la fonction

Result:=RasEnumConnections(@RasBuffer,@RasSize,@RASNombre); 


et

result:= RasGetConnectStatus( RasBuffer.hrasconn, @RasStatus);


qui ne veut pas passer...
Il ne veut pas le 2nd paramètre.
C'est normal?
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 08:48
Je n'arrive toujours pas à déclarer @RasSize???
Il faut faire comment?
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
24 nov. 2004 à 11:03
Salut,

RasSize est une variable de type DWord; @RasSize est son adresse. Il faut donc déclarer
var 
RasSise : DWord;

Cette syntaxe à la c.. est directement issue du C, où la manière de passer les paramètres aux fonctions, par valeur ou par adresse ne s'exprime pas de la même façon.

Ken@vo
____________________
Code, Code, Codec !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 11:06
je l'avais bien déclarée en DWord mais j'ai le message suivant
"[Erreur] uOutil.pas(564): Les types des paramètres VAR originaux et formels doivent être identiques"
Je ne comprends pas ce que je dois modifier.
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
24 nov. 2004 à 11:12
En résumé, ça donne (avec uses et toutes les variables) :
Uses
  Ras;
var
...
  RasStatus : RASCONNSTATUS; 
  RasBuffer : RASCONN;
  RASNombre  : DWord;
  RasSize     : DWord;
begin
RASNombre:=0;
RasBuffer.dwSize:=sizeof(RASCONN);
Resu:=RasEnumConnections(@RasBuffer,@RasSize,@RASNombre);
if (resu=0) and (RASNombre>0) then
begin
....
RasStatus.dwSize:=sizeof(RASCONNSTATUS);
resu:= RasGetConnectStatus( RasBuffer.hrasconn, @RasStatus);
if resu = 0 then
begin Device:=#9+RasStatus.szDeviceType+#9+RasStatus.szDeviceName;
if RasStatus.rasconnstate= RASCS_ConnectDevice then
begin
......
Caption :='Connexion';
end;
if RasStatus.rasconnstate= RASCS_Authenticate then
begin
.......
Caption :='Autentification';
end;
if RasStatus.rasconnstate= RASCS_OpenPort then
begin
.......
Caption :='Ouvert';
end;
end;
..... 



et je sais pas quoi dire d'autre !

Ken@vo
____________________
Code, Code, Codec !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 11:17
Ben quand je fais ça j'ai le message d'erreur que j'ai cité au dessus. je ne comprends plus rien.
Pourquoi il ne veut pas prendre les variables???
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
24 nov. 2004 à 12:30
Oups !!!

La version de Ras.pas que je t'ai indiquée et celle que j'utilise sont très différentes. En fait on en trouve beaucoup de différentes.
Celle que j'ai indiquée est plutôt "Pascalisée". Il n'y a pas de @partout
Et en plus il faut initialiser la DLL !

 
var
    RasStatus : TRASConnStatus;
    RasBuffer : TRASConn;

procedure TForm1.FormCreate(Sender: TObject);
var
  resu : Boolean;
begin
//.......
  resu := InitRasLibrary;
end;

procedure TForm1.MaConnexion;
begin
 RASNombre:=0;
  RasBuffer.dwSize:=sizeof(TRasConn);
  Resu:=RasEnumConnections(@RasBuffer,RasSize,RASNombre);
  if (resu=0) and (RASNombre>0) then
    begin
      Filtre := 0 ;
      Visible := True;
      Application.ShowMainForm:=True;
      RasStatus.dwSize:=sizeof(TRASConnStatus);
      resu:= RasGetConnectStatus( RasBuffer.hrasconn, RasStatus);
      if resu = 0 then
......


enfin, je crois !

Ken@vo
____________________
Code, Code, Codec !
0
cs_Isabelle31 Messages postés 80 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 25 août 2015 1
24 nov. 2004 à 13:23
C'est bon j'ai trouvé une autre version de RAS.pas et je n'ai plus d'erreur de complation. Maitenant faut que je fasse mes tests de connexion.
Merci beaucoup
0
yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 1
19 oct. 2005 à 19:26
Sakut Isabelle,

Si tu as réussi à arriver à tes fins pourrais tu me faire profiter de ton savoir ?
A noter, je suis un autodictate qui ne comprends pas grand chose a ton ce qui est écrit ci-dessus...

Meci, d'avance.
0
Rejoignez-nous