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


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








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
Hors ligne






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














Par ici pour les infos : http://pbadonf.fr/forum/viewtopic.php?id=54
Hors ligne


Merci pour vos réponsee,
Effectivement mes constantes sont traduites :
//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:
function long InternetGetConnectedState(ref long dwFlags,long dwReserved) library "wininet.dll" alias for "InternetGetConnectedState;Ansi"
et j'ai bidouillé qqchose comme :
//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






Bonjour,
La valeur est retournée par référence par la variable ldwFlags :
InternetGetConnectedState(ldwFlags,0) CHOOSE CASE ldwFlags
Hors ligne


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






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é).
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


Merci Buck.
Je ferai des test avec des environnements type connexion derrière proxy, j'implémente comme sugéré...
Hors ligne
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...

Hors ligne







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