Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 09-12-2008 17:51:53

Migrate  
Membre
Date d'inscription: 22-08-2008
Messages: 18
Pépites: 103
Banque: 0

Tester si la connexion à internet est valide

J'ai besoin de savoir si le poste est connecté à internet.
Je ne peux envisager de faire un test sur le ping (non valide si connexion derrière un proxy)
Après quelques recherches, je pense qu'il me faudrait appeler la
fonction InternetGetConnectedState de la librairy wininet.dll,
dont voici sa structure :

function long InternetGetConnectedState(ref long dwFlags,long dwReserved) library "wininet.dll"

Quelqu'un aurait des indications à me donner pour pouvoir l'implémenter.
Je précise que mon niveau en PB est proche de celui de la mer...
merci

Dernière modification par Migrate (10-12-2008 11:57:34)

Hors ligne

 

#2 09-12-2008 18:42:16

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Tester si la connexion à internet est valide

Tu as fait 90% du boulot.
Je ne sais pas ce qui te manque.

Après il faut  traduire les constantes
Par exemple, pour INTERNET_CONNECTION_CONFIGURED, MSDN indique 0x40
Utilise la calculette de windows en mode scientifique ça te donne 64


never let people work on more than one thing at once.

Hors ligne

 

#3 10-12-2008 09:54:51

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Tester si la connexion à internet est valide

Bonjour,

Pour faire au plus simple, Il suffit simplement de déclarer le prototype de ta fonction dans la section Global External Functions de la rubrique "Declare" de ton object application.

Hors ligne

 

#4 10-12-2008 10:45:06

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: Tester si la connexion à internet est valide


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 10-12-2008 10:45:12

Migrate  
Membre
Date d'inscription: 22-08-2008
Messages: 18
Pépites: 103
Banque: 0

Re: Tester si la connexion à internet est valide

Merci pour vos réponsee,
Effectivement mes constantes sont traduites :

Code: pb

//Local system uses a modem to connect to the Internet.
CONSTANT Long INTERNET_CONNECTION_MODEM  = 1
//Local system uses a LAN to connect to the Internet.
CONSTANT Long INTERNET_CONNECTION_LAN  = 2
//Local system uses a proxy server to connect to the Internet.
CONSTANT Long INTERNET_CONNECTION_PROXY  = 4
//No longer used.
CONSTANT Long INTERNET_CONNECTION_MODEM_BUSY = 8
CONSTANT Long INTERNET_RAS_INSTALLED = 16
CONSTANT Long INTERNET_CONNECTION_OFFLINE = 32
CONSTANT Long INTERNET_CONNECTION_CONFIGURED  = 64

//ma local external function dans mon nvo objet est declarée comme suit:

Code: pb

function long InternetGetConnectedState(ref long dwFlags,long dwReserved) library "wininet.dll" alias for "InternetGetConnectedState;Ansi"

et j'ai bidouillé qqchose comme :

Code: pb

//of_connexionInternetState

boolean lb_return = false
long ldwFlags
long ldwReserved

choose case  InternetGetConnectedState(ldwFlags,0)
  case INTERNET_CONNECTION_MODEM
       lb_return = true
  case INTERNET_CONNECTION_LAN
      lb_return = true
  case INTERNET_CONNECTION_PROXY
      lb_return = true
  case INTERNET_CONNECTION_OFFLINE
      MessageBox("","Internet is OFF")
end  choose

return lb_return

en test, ldwflags prend la valeur 18 et il passe par le premier CASE...
la fonction me retourne true donc...
Là je commence à atteindre mes limites...
Des indications bienvenues....

Hors ligne

 

#6 10-12-2008 11:01:34

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Tester si la connexion à internet est valide

Bonjour,

La valeur est retournée par référence par la variable ldwFlags :

Code: PB

InternetGetConnectedState(ldwFlags,0)
CHOOSE CASE ldwFlags

Hors ligne

 

#7 10-12-2008 11:07:52

Migrate  
Membre
Date d'inscription: 22-08-2008
Messages: 18
Pépites: 103
Banque: 0

Re: Tester si la connexion à internet est valide

Merci Buck.

J'ai modifié comme suggéré.
En test ldwFlags prend la valeur 18, par contre ne passe plus par les différents case, et là
la fonction me retourne false alors que mon poste est connecté à internet.
Est ce que dois convertir la valeur de retour de la fonction...ou s'agit il d'un masque ou autre...?
Merci pour votre aide

Hors ligne

 

#8 10-12-2008 11:32:39

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Tester si la connexion à internet est valide

Bonjour,

En fait, j'ai regardé la documentation de la fonction. Pour tester si la connection est valide il faut tester la valeur retour de la fonction (le flag retourne simplement le moyen par lequel tu es connecté (LAN, MODEM) ou susceptible d'être connecté, Il peut te renvoyer un Flag LAN alors que tu n'est pas connecté).

Code: PB

long ll_ret , ldwFlags

ll_ret = InternetGetConnectedState(ldwFlags,0)

IF ll_ret = 0 THEN
     RETURN FALSE
ELSE
     RETURN TRUE
END IF


(Note : effectivement la valeur 18 (12 Hex) ne fait pas partie des valeurs documentés sur MSDN ?)

Hors ligne

 

#9 10-12-2008 11:54:17

Migrate  
Membre
Date d'inscription: 22-08-2008
Messages: 18
Pépites: 103
Banque: 0

Re: Tester si la connexion à internet est valide

Merci Buck.
Je ferai des test avec des environnements type connexion derrière proxy, j'implémente comme sugéré...

Hors ligne

 

#10 10-12-2008 12:00:04

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 30-05-2006
Messages: 4685
Pépites: 1,025
Banque: 2,147,483,647
Site web

Re: Tester si la connexion à internet est valide

au pire des cas, tu passes par le geturl... posturl...
le principe, tu mets le lien vers un site internet tout petit, tout rapide...
si tu as une reponse en retour, tu as donc une connection internet...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#11 14-10-2010 12:09:16

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: Tester si la connexion à internet est valide

pick ouic a écrit:

au pire des cas, tu passes par le geturl... posturl...
le principe, tu mets le lien vers un site internet tout petit, tout rapide...
si tu as une reponse en retour, tu as donc une connection internet...

Bonjour,

Je souhaite rebondir sur ce sujet.

Effectivement la méthode de Pick fonctionne très bien, par contre je n'arrive pas à faire fonctionner la méthode InternetGetConnectedState qui me renvoie la valeur 86 que je sois ou pas connecte à Internet derrière un proxy.

Avez vous déjà fait fonctionner la méthode InternetGetConnectedState  avec un proxy ?

Merci

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22