IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[D2010] Comment détecter si on est connecté à un réseau par wifi ?


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut [D2010] Comment détecter si on est connecté à un réseau par wifi ?
    Comment détecter si on est connecté à un réseau par wifi ?

    Après avoir fouillé la msdn, je suis tombé sur ça : http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Et sur DVP, j'ai trouvé ça : http://ram-0000.developpez.com/tutor...t-native-wifi/
    J'ai cherché à traduire ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DWORD negotiatedVersion = 0;
    HANDLE clientHandle = NULL;
    DWORD lastError;
     
    lastError = WlanOpenHandle(WLAN_API_VERSION, NULL, &negotiatedVersion, &clientHandle); /* open the Wifi box */
       if(lastError != ERROR_SUCCESS)
       {
          DisplayError(..., lastError);
       }
       else
       {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var
       nResultat: DWORD;
       dwNegotiatedVersion: DWORD;
       hClientHandle: THandle;
    begin
       hClientHandle := 0;
       nResultat := WlanOpenHandle(1, nil, @dwNegotiatedVersion, @hClientHandle);
       if nResultat <> ERROR_SUCCESS then
       begin
          ShowMessage(SysErrorMessage(nResultat));
          Exit;
       end;
    Et avec ça, j'obtiens :
    Paramètre incorrect


    Qu'ai-je mal fait ?

    Si quelqu'un a une autre solution (plus simple), je prend aussi.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour
    à part le fait que tu n'as pas initialisé dwNegotiatedVersion , je vois pas
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour
    à part le fait que tu n'as pas initialisé dwNegotiatedVersion , je vois pas
    C'est un paramètre en sortie. C'est indispensable ?
    De toute façon, j'ai testé, ca ne change rien.

    Voici mes prototypes de fonctions (j'avais oublié de le préciser):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       function WlanOpenHandle(dwClientVersion: DWORD; pReserved: Pointer; pdwNegotiatedVersion: PDWORD; phClientHandle: PHandle): DWORD;   external 'Wlanapi.dll';
       function WlanScan(hClientHandle: THANDLE; const pInterfaceGuid: PGUID; const pDot11Ssid: PDOT11_SSID; const pIeData: PWLAN_RAW_DATA; pReserved: Pointer): DWORD;   external 'Wlanapi.dll';
       function WlanCloseHandle(hClientHandle: THANDLE; pReserved: Pointer): DWORD;   external 'Wlanapi.dll';
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    J'ai pas encore fait de test mais , autre chose me titille
    la valeur WLAN_API_VERSION dans ton appel de fonction =1


    cela dépend de l'OS que tu utilises (pas top)
    1 <<

    Client version for Windows XP with SP3 and Wireless LAN API for Windows XP with SP2.

    2 <<

    Client version for Windows Vista and Windows Server 2008

    de plus selon MSDN

    [quote =MSDN ] ERROR_INVALID_PARAMETER <<
    pdwNegotiatedVersion is NULL, phClientHandle is NULL, or pReserved is not NULL.
    [/quote]
    pour pRreserved nil et NULL ce n'est peut être pas la même chose non plus

    As tu songé au WMI plutôt qu'a ces fonctions ? pour l'instant je ne les ai utilisé que pour les support de sauvegardes mais ....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Salut Ludwig,

    En fait il manque juste une petite chose pour que ça fonctionne correctement. Essayes comme ça :

    function WlanOpenHandle(dwClientVersion: DWORD; pReserved: Pointer; pdwNegotiatedVersion: PDWORD; phClientHandle: PHandle): DWORD; stdcall; external 'Wlanapi.dll';
    et ça marchera beaucoup mieux.

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    As tu songé au WMI plutôt qu'a ces fonctions ? pour l'instant je ne les ai utilisé que pour les support de sauvegardes mais ....
    Je n'ai jamais utilisé WMI. Ca a pas l'air d'être plus simple.

    Citation Envoyé par Thierry Laborde Voir le message
    En fait il manque juste une petite chose pour que ça fonctionne correctement. Essayes comme ça :
    et ça marchera beaucoup mieux.
    CA MARCHE !

    Je vais pouvoir passer à la fonction suivante.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. Comment détecter si Javascript est activé ou non
    Par Sub0 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 16/02/2011, 12h19
  2. Comment savoir si on est connecté à une page web dans IE
    Par pierrotm777 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/01/2011, 13h43
  3. Réponses: 1
    Dernier message: 08/03/2009, 13h14
  4. Comment savoir si on est connecté à internet
    Par florentino dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 18/06/2007, 16h18
  5. Réponses: 3
    Dernier message: 06/03/2006, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo