Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment utiliser l'API wlanapi.dll ???

10 réponses
Avatar
LE TROLL
Bonjour,

Suite à quelques infos, j'ai pu récupérer du code pour la dll wlanapi,
mais c'est une véritable usine à gaz, je n'y comprends rien (enfin,
presque), si quelqu'un sait faire marcher ça (il faut la dll évidemment),
c'est la carte réseau, elle est ici :

http://www.dll-files.com/dllindex/pop.php?wlanapi

Les objets = 2 = form1 + text1 (multiline)

Les 9 fonction que je cherche (repère ###) :
- Etat (connecté ou pas)
- Nom du PC
- Nom du pseudo wisi (ssid)
- adresse ip PC
- Etat du trafic montant
- Etat du trafic descendant
- Vitesse d'échange
- Durée de connexion
- Qualité de la connexion


Et voici le code (tant est qu'il soit bon ?), en tout cas l'interprétateur
l'accepte.


' carteReseau : OBJETS = 2 : FORM1 + TEXT1(multilignes)
Option Explicit

Const ERROR_INVALID_PARAMETER = 87 ' dderror
Const ERROR_NOT_ENOUGH_MEMORY = 8 ' dderror
Const ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220&

Private Declare Function WlanOpenHandle Lib "Wlanapi.dll" _
(ByVal dwClientVersion As Long, ByVal pReserved As Any, _
pdwNegotiatedVersion As Long, phClientHandle As Long) As Long

Private Declare Function WlanCloseHandle Lib "Wlanapi.dll" _
(ByVal hClientHandle As Long, ByVal pReserved As Any) As Long

Private Declare Function WlanEnumInterfaces Lib "Wlanapi.dll" _
(ByVal hClientHandle As Long, ByVal pReserved As Any, _
ppInterfaceList As WLAN_INTERFACE_INFO_LIST) As Long

Private Enum WLAN_INTERFACE_STATE
wlan_interface_state_not_ready = 0
wlan_interface_state_connected = 1
wlan_interface_state_ad_hoc_network_formed = 2
wlan_interface_state_disconnecting = 3
wlan_interface_state_disconnected = 4
wlan_interface_state_associating = 5
wlan_interface_state_discovering = 6
wlan_interface_state_authenticating = 7
End Enum

Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Private Type WLAN_INTERFACE_INFO
InterfaceGuid As GUID
strInterfaceDescription As String * 256
isState As WLAN_INTERFACE_STATE
End Type

Private Type WLAN_INTERFACE_INFO_LIST
dwNumberOfItems As Long
dwIndex As Long
InterfaceInfo() As WLAN_INTERFACE_INFO
End Type


Sub Form_Load()
Dim version As Long, handl As Long
Dim iflist As WLAN_INTERFACE_INFO_LIST
Text1 = ""
Text1 = Text1 & "un : " & WlanOpenHandle(ByVal 1, ByVal 0&, version,
handl) & vbCrLf
Text1 = Text1 & "deux : " & WlanEnumInterfaces(handl, ByVal 0&, iflist) &
vbCrLf
Text1 = Text1 & "trois : " & iflist.dwNumberOfItems & vbCrLf ' there it is
resolving a value near 2 milions
Text1 = Text1 & "quatre : " & WlanCloseHandle(handl, ByVal 0&) & vbCrLf
'résultat
' 0
' 0
' 3921960
' 0
Exit Sub
'
'
' COMMENT AFFICHER ### OBJETS = 2 : FORM1 + TEXT1(multilignes)
' LA DLL WLANAPI EST DANS FIC SRCE (PUIS SERA AVEC L'EXE)
Text1 = ""
Text1 = Text1 & "Etat (connecté ou pas) : " & "?" & vbCrLf
Text1 = Text1 & "Nom du PC : " & "?" & vbCrLf
Text1 = Text1 & "Nom du pseudo wisi (ssid)" & "?" & vbCrLf
Text1 = Text1 & "adresse ip PC" & "?" & vbCrLf
Text1 = Text1 & "Etat du trafic montant" & "?" & vbCrLf
Text1 = Text1 & "Etat du trafic descendant" & "?" & vbCrLf
Text1 = Text1 & "Vitesse d'échange" & "?" & vbCrLf
Text1 = Text1 & "Durée de connexion" & "?" & vbCrLf
Text1 = Text1 & "Qualité de la connexion" & "?" & vbCrLf
'
'
' WLAN_NOTIFICATION_CALLBACK
' WlanAllocateMemory
' WlanCloseHandle
' WlanConnect
' WlanDeleteProfile
' WlanDisconnect
' WlanEnumInterfaces
' WlanExtractPsdIEDataList
' WlanFreeMemory
' WlanGetAvailableNetworkList
' WlanGetFilterList
' WlanGetInterfaceCapability
' WlanGetNetworkBssList
' WlanGetProfile
' WlanGetProfileCustomUserData
' WlanGetProfileList
' WlanGetSecuritySettings
' WlanHostedNetworkForceStart
' WlanHostedNetworkForceStop
' WlanHostedNetworkInitSettings
' WlanHostedNetworkQueryProperty
' WlanHostedNetworkQuerySecondaryKey
' WlanHostedNetworkQueryStatus
' WlanHostedNetworkRefreshSecuritySettings
' WlanHostedNetworkSetProperty
' WlanHostedNetworkSetSecondaryKey
' WlanHostedNetworkStartUsing
' WlanHostedNetworkStopUsing
' WlanIhvControl
' WlanOpenHandle
' WlanQueryAutoConfigParameter
' WlanQueryInterface
' WlanReasonCodeToString
' WlanRegisterNotification
' WlanRegisterVirtualStationNotification
' WlanSaveTemporaryProfile
' WlanScan
' WlanSetAutoConfigParameter
' WlanSetFilterList
' WlanSetInterface
' WlanSetProfile
' WlanSetProfileCustomUserData
' WlanSetProfileEapUserData
' WlanSetProfileEapXmlUserData
' WlanSetProfileList
' WlanSetProfilePosition
' WlanSetPsdIeDataList
' WlanSetSecuritySettings
' WlanUIEditProfile
End Sub


Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.

10 réponses

Avatar
jean-marc
"LE TROLL" <le wrote in message
news:
Bonjour,



Hello,

Suite à quelques infos, j'ai pu récupérer du code pour la dll wlanapi,
mais c'est une véritable usine à gaz, je n'y comprends rien (enfin,
presque), si quelqu'un sait faire marcher ça (il faut la dll évidemment),
c'est la carte réseau, elle est ici :

http://www.dll-files.com/dllindex/pop.php?wlanapi



Pour quelqu'un qui n'a jamais utilisé cette DLL, il va falloir:
- Lire la doc en ligne
- Faire quelques tests de base
- Ecrire les quelques fonctions pour avoir les infos
qui t'intérèssent
- tester le tout

A vue de nez et pour prendre une (petite) marge,
c'est 4 ou 5 heures de boulot.

Donc, un consultant coutant environ 1200 Euros jour
pour ce genre de boulot, ça te fait quand même un budget
de 600 Euros, environ. C'est cher.

[Mais en vrai, à ce prix la, je te le fais.]

Sinon, il te faut donc trouver quelqu'un qui a déjà fait ça,
ce sera moins long.

Ou meilleure solution, aller faire un tour sur le site de
VBFrance ou je suis à peu près certain que tu trouveras
pas mal de code déjà écrit - Et comme en plus c'est francophone,
c'est un peu la cerise sur le gateau :-)

Bonne suite !

--
Jean-Marc
Avatar
at
Après mûre réflexion, jean-marc a écrit :

Pour quelqu'un qui n'a jamais utilisé cette DLL, il va falloir:
- Lire la doc en ligne
- Faire quelques tests de base
- Ecrire les quelques fonctions pour avoir les infos
qui t'intérèssent
- tester le tout

A vue de nez et pour prendre une (petite) marge,
c'est 4 ou 5 heures de boulot.

Donc, un consultant coutant environ 1200 Euros jour
pour ce genre de boulot, ça te fait quand même un budget
de 600 Euros, environ. C'est cher.

[Mais en vrai, à ce prix la, je te le fais.]

Sinon, il te faut donc trouver quelqu'un qui a déjà fait ça,
ce sera moins long.

Ou meilleure solution, aller faire un tour sur le site de
VBFrance ou je suis à peu près certain que tu trouveras
pas mal de code déjà écrit - Et comme en plus c'est francophone,
c'est un peu la cerise sur le gateau :-)

Bonne suite !



Pour 250$ il y a

http://www.nicomsoft.com/wifiman/order.htm


J'ai déjà testé et c'est vraiment très bien, il y a des exemples en vb6
et la version d'essai est gratos.

J'aimerai savoir si LETROLL veut faite une appli commerciale ou
destinée à un usage perso.
Avatar
jean-marc
"at" wrote in message
news:4b165567$0$937$
Après mûre réflexion, jean-marc a écrit :


Pour 250$ il y a

http://www.nicomsoft.com/wifiman/order.htm


J'ai déjà testé et c'est vraiment très bien, il y a des exemples en vb6 et
la version d'essai est gratos.



Le vrai souci dans le cas présent, c'est que l'appli/api en question
va surement être en anglais, ce qui ramène notre ami LETROLL au
problème d'origine :-)

--
Jean-Marc
Avatar
at
jean-marc a formulé ce mercredi :

Le vrai souci dans le cas présent, c'est que l'appli/api en question
va surement être en anglais, ce qui ramène notre ami LETROLL au
problème d'origine :-)



D'accord mais si vais sur le site ouaib du site qui est en signature
dans les messages de LETROLL j'arrive à la conclusion que jusqu'à
présent il s'est bien débrouillé en vb6. Il y a même une description en
anglais d'un programme...
Avatar
LE TROLL
Ah, At, commercial ou pas...

Déjà, commercial est un peu fort, c'est associatif, et ça tourne à
environ 100 ¤ par mois (après la TVA et la commission de banque 15% =
AlloPass), alors tu t'imagineras que ça paye jute Internet et le matos avec
les fournitures, on ne peut pas en vivre comme tu vois, c'est associatif...
et l'association est déficitaire en fait... Ceci n'est pas à confondre avec
mes "romans", les deux sont parfois sur le même site, bien qu'ils me
rapportent encore moins...

Mon but est dans un premier temps de faire un truc qui puisse épauler
une "3g", donc en partant des résultats de l'API, si jamais je l'ai un jour,
de faire un journal des connexions, des alertes paramétrables, voire des
graphiques et des procédures de reprise, puis il faut faire les différentes
versions, les documenter, farte le site internet, tout référencer, déclarer;
il y a du boulot derrière (tout ça je sais le faire comme un grand).
Donc, pour être franc, en fonction des résultats ce sera peut être mis en
vente, ce n'est pas certain, et mis en vente ne veut pas dire vendu, une
moitié est régulièrement à retirer car personne n'achète. Et vendu, ce
serait 15¤, 10¤ en final X 4 ventes l'an, tu vois, ça fait 40¤, ça ne va
guère plus loin, et je pense que tu comprends que tout ce qu'il faut mette
autour et maintenir avale ces malheureux Euros (bugs, évolution, tentatives
d'adaptation du prix, réponses courriers)...

Souvent on croit des choses fausses, un logiciel actuellement est très
difficile à vendre car il y a une concurrence monstrueuse, et ceci relève
davantage du hasard combiné à la qualité, à l'utilité et au prix, que
d'autre chose, et pour le reste c'est un quasi-monopole (tableurs, OS, TT,
BDD, et gros utilitaires)... Bref, le logiciel ou le roman ne payent pas,
enfin, on ne peut absolument pas en vivre, à part une très petite quantité
de personnes, qui souvent à l'origine (pour les romans notamment),
bénéficient d'introductions ( c'est parfois mon cas), car même bon, un
produit de ce type est plus répandu qu'il n'y a d'acheteurs (et lecteurs)
potentiels, tout est là !

Toutefois, je n'hésite jamais dans ce forum, quand je vois que quelqu'un
n'y arrive pas et que je sais le faire, de proposer tout simplement d'écrire
le code, je pense que personne ne dira le contraire depuis toutes ces
années. Je ne demande pas à la personne si elle va le vendre ou pas; je
viens ici et je programme par plaisir, si je peux aider (si je sais), je le
fais, point, sinon, ben je n'ai rien à faire dans le forum. C'est mon
principe, et je ne pense pas qu'il soit mauvais.

J'espère avoir répondu et t'avoir convaincu, cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"at" a écrit dans le message de
news:4b165567$0$937$
Après mûre réflexion, jean-marc a écrit :

Pour quelqu'un qui n'a jamais utilisé cette DLL, il va falloir:
- Lire la doc en ligne
- Faire quelques tests de base
- Ecrire les quelques fonctions pour avoir les infos
qui t'intérèssent
- tester le tout

A vue de nez et pour prendre une (petite) marge,
c'est 4 ou 5 heures de boulot.

Donc, un consultant coutant environ 1200 Euros jour
pour ce genre de boulot, ça te fait quand même un budget
de 600 Euros, environ. C'est cher.

[Mais en vrai, à ce prix la, je te le fais.]

Sinon, il te faut donc trouver quelqu'un qui a déjà fait ça,
ce sera moins long.

Ou meilleure solution, aller faire un tour sur le site de
VBFrance ou je suis à peu près certain que tu trouveras
pas mal de code déjà écrit - Et comme en plus c'est francophone,
c'est un peu la cerise sur le gateau :-)

Bonne suite !



Pour 250$ il y a

http://www.nicomsoft.com/wifiman/order.htm


J'ai déjà testé et c'est vraiment très bien, il y a des exemples en vb6 et
la version d'essai est gratos.

J'aimerai savoir si LETROLL veut faite une appli commerciale ou destinée à
un usage perso.




Avatar
LE TROLL
Bonjour Jean-Marc,

Ben oui, pour bien programmer de nos jour, faut l'anglais, un bac S et
un DUT derrière, et je n'ai rien de tout ça, alors évidemment ça me donne un
handicap certain. Néanmoins j'ai quand même fait tout seul de très beaux
trucs, comme un jeu de tarot dont je suis fier (six mois de programmation),
mais dès que ça touche trop les math ou un spécificité (comme une carte
réseau), j'ai besoin d'aide, plus même, qu'on me le fasse.

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"jean-marc" a écrit dans le message de
news:4b16576f$0$2856$

"at" wrote in message
news:4b165567$0$937$
Après mûre réflexion, jean-marc a écrit :


Pour 250$ il y a

http://www.nicomsoft.com/wifiman/order.htm


J'ai déjà testé et c'est vraiment très bien, il y a des exemples en vb6
et la version d'essai est gratos.



Le vrai souci dans le cas présent, c'est que l'appli/api en question
va surement être en anglais, ce qui ramène notre ami LETROLL au
problème d'origine :-)

--
Jean-Marc






Avatar
LE TROLL
Bonjour Jean-Marc,

Ce qui me rassure, c'est que même des professionnels avec les bonnes
formations ne savent pas trop, voir pas du tout, ça me rassure, car ça
devient normal que je ne comprenne pas grand chose.

Je vais aller voir sur les sources VB, j'en ai trouvé une qui faisait
ça, je vais y retourner, peut être la retrouverais-je, mais si mes souvenirs
sont bons, c'était plein de modules, de forms, d'API, en gros c'était a peu
près aussi difficile à comprendre que l'API wlanapi.

Néanmoins ce n'est pas certain que ce soit aussi long que tu le dis, si
ça se trouve tout y est, il suffit si je puis dire, juste de trouver comment
lui poser une question, disons trente minutes ?

Il y a peut être une autre solution avec un objet spécialisé réseau de
vb6pro, je ne sais pas, à condition que ce soit plus simple d'utilisation.

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"jean-marc" a écrit dans le message de
news:4b164cae$0$2856$
"LE TROLL" <le wrote in message
news:
Bonjour,



Hello,

Suite à quelques infos, j'ai pu récupérer du code pour la dll wlanapi,
mais c'est une véritable usine à gaz, je n'y comprends rien (enfin,
presque), si quelqu'un sait faire marcher ça (il faut la dll évidemment),
c'est la carte réseau, elle est ici :

http://www.dll-files.com/dllindex/pop.php?wlanapi



Pour quelqu'un qui n'a jamais utilisé cette DLL, il va falloir:
- Lire la doc en ligne
- Faire quelques tests de base
- Ecrire les quelques fonctions pour avoir les infos
qui t'intérèssent
- tester le tout

A vue de nez et pour prendre une (petite) marge,
c'est 4 ou 5 heures de boulot.

Donc, un consultant coutant environ 1200 Euros jour
pour ce genre de boulot, ça te fait quand même un budget
de 600 Euros, environ. C'est cher.

[Mais en vrai, à ce prix la, je te le fais.]

Sinon, il te faut donc trouver quelqu'un qui a déjà fait ça,
ce sera moins long.

Ou meilleure solution, aller faire un tour sur le site de
VBFrance ou je suis à peu près certain que tu trouveras
pas mal de code déjà écrit - Et comme en plus c'est francophone,
c'est un peu la cerise sur le gateau :-)

Bonne suite !

--
Jean-Marc



Avatar
LE TROLL
At,

Oui, en anglais, c'est le programme de Tarot, (que j'ai fais tout seul
en 6 mois, mon second plus beau logiciel "et j'en suis très fier"), mais
j'ai tout simplement passé le français au traducteur pour avoir l'anglais,
qu'éventuellement j'ai rectifié si je savais parfois, en plus c'est assez
sommaire.

Eh oui, depuis le temps, plus d'un lustre, en dehors des objets
additifs, des API et des calculs monstrueux, le reste je le maîtrise de
façon très satisfaisante en VB6 (FR), je crois que j'ai fait à peu près une
très grande partie de ce qui peut se faire en VB, si on regarde les
fonctionnalités des logiciels. D'ailleurs je ne viens plus ici que pour le
sport pratiquement, il est rare que j'aie besoin d'infos, ma foi c'est
normal, au bout d'un moment on devient quasi-indépendant, question de
pratique.

Mais là, les API de ce genre je nage totalement, c'est pourquoi j'ai
sollicité ton aide, et tout le temps que tu passes à écrire, si tu le
consacrais à l'API, peut être aurais-tu trouvé comment lui faire vider son
sac, ah ah :o)

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"at" a écrit dans le message de
news:4b1659c7$0$966$
jean-marc a formulé ce mercredi :

Le vrai souci dans le cas présent, c'est que l'appli/api en question
va surement être en anglais, ce qui ramène notre ami LETROLL au
problème d'origine :-)



D'accord mais si vais sur le site ouaib du site qui est en signature dans
les messages de LETROLL j'arrive à la conclusion que jusqu'à présent il
s'est bien débrouillé en vb6. Il y a même une description en anglais d'un
programme...




Avatar
at
LE TROLL a émis l'idée suivante :

J'espère avoir répondu et t'avoir convaincu, cordialement ;o)



Oui mais le fond de ma pensée n'était pas de savoir si une aide
désintéressée avait lieu d'être pour un projet mercantile.

En fait, je pense au retour sur investissement par rapport à l'API/DLL
proposée ici http://www.nicomsoft.com/wifiman/order.htm


Déjà, si j'étais toi, j'essaierai ce produit (c'est gratuit!) pour voir
si il peut répondre à ce que tu recherches. Après tu "dégrossis".

Car ce que tu veux faire c'est du *lourd*. En plus tu parles de 3G,
es-tu sur qu'une API pour le WIFI servira ? D'ou l'intérêt de tester la
version de nicomsoft.
Avatar
LE TROLL
At, tiens, j'ai trouvé une soruce en VBnet qui fonctionne, sauf
qu'il n'y a pas tout, juste pour le plaisir des yeux, voici une form entre
autre :


Imports System

Imports System.Runtime.InteropServices

Imports System.Net.NetworkInformation

Imports System.Text

Imports System.Diagnostics

Imports System.ComponentModel

Public Class Wlan

' Methods

<DebuggerStepThrough()> _

Friend Shared Sub ThrowIfError(ByVal win32ErrorCode As Integer)

If (win32ErrorCode <> 0) Then

Throw New Win32Exception(win32ErrorCode)

'MsgBox(ErrorToString(win32ErrorCode), MsgBoxStyle.Critical +
MsgBoxStyle.OkOnly, "Erreur")

End If

End Sub

<DllImport("wlanapi.dll")> _

Public Shared Function WlanCloseHandle(<[In]()> ByVal clientHandle As
IntPtr, <[In](), Out()> ByVal pReserved As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanConnect(<[In]()> ByVal clientHandle As IntPtr,
<[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid,
<[In]()> ByRef connectionParameters As WlanConnectionParameters, ByVal
pReserved As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanDeleteProfile(<[In]()> ByVal clientHandle As
IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As
Guid, <[In](), MarshalAs(UnmanagedType.LPWStr)> ByVal profileName As String,
ByVal reservedPtr As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanEnumInterfaces(<[In]()> ByVal clientHandle As
IntPtr, <[In](), Out()> ByVal pReserved As IntPtr, <Out()> ByRef
ppInterfaceList As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Sub WlanFreeMemory(ByVal pMemory As IntPtr)

End Sub

<DllImport("wlanapi.dll")> _

Public Shared Function WlanGetAvailableNetworkList(<[In]()> ByVal
clientHandle As IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal
interfaceGuid As Guid, <[In]()> ByVal flags As WlanGetAvailableNetworkFlags,
<[In](), Out()> ByVal reservedPtr As IntPtr, <Out()> ByRef
availableNetworkListPtr As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanGetNetworkBssList(<[In]()> ByVal clientHandle As
IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As
Guid, <[In]()> ByVal dot11SsidInt As IntPtr, <[In]()> ByVal dot11BssType As
Dot11BssType, <[In]()> ByVal securityEnabled As Boolean, ByVal reservedPtr
As IntPtr, <Out()> ByRef wlanBssList As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanGetProfile(<[In]()> ByVal clientHandle As IntPtr,
<[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid,
<[In](), MarshalAs(UnmanagedType.LPWStr)> ByVal profileName As String,
<[In]()> ByVal pReserved As IntPtr, <Out()> ByRef profileXml As IntPtr,
<Out()> Optional ByRef flags As WlanProfileFlags = WlanProfileFlags.AllUser,
<Out()> Optional ByRef grantedAccess As WlanAccess =
WlanAccess.ExecuteAccess) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanGetProfileList(<[In]()> ByVal clientHandle As
IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As
Guid, <[In]()> ByVal pReserved As IntPtr, <Out()> ByRef profileList As
IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanOpenHandle(<[In]()> ByVal clientVersion As
UInt32, <[In](), Out()> ByVal pReserved As IntPtr, <Out()> ByRef
negotiatedVersion As UInt32, <Out()> ByRef clientHandle As IntPtr) As
Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanQueryInterface(<[In]()> ByVal clientHandle As
IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As
Guid, <[In]()> ByVal opCode As WlanIntfOpcode, <[In](), Out()> ByVal
pReserved As IntPtr, <Out()> ByRef dataSize As Integer, <Out()> ByRef ppData
As IntPtr, <Out()> ByRef wlanOpcodeValueType As WlanOpcodeValueType) As
Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanReasonCodeToString(<[In]()> ByVal reasonCode As
WlanReasonCode, <[In]()> ByVal bufferSize As Integer, <[In](), Out()> ByVal
stringBuffer As StringBuilder, ByVal pReserved As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanRegisterNotification(<[In]()> ByVal clientHandle
As IntPtr, <[In]()> ByVal notifSource As WlanNotificationSource, <[In]()>
ByVal ignoreDuplicate As Boolean, <[In]()> ByVal funcCallback As
WlanNotificationCallbackDelegate, <[In]()> ByVal callbackContext As IntPtr,
<[In]()> ByVal reserved As IntPtr, <Out()> ByRef prevNotifSource As
WlanNotificationSource) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanScan(<[In]()> ByVal clientHandle As IntPtr,
<[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid,
<[In]()> ByVal pDot11Ssid As IntPtr, <[In]()> ByVal pIeData As IntPtr,
<[In](), Out()> ByVal pReserved As IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanSetInterface(<[In]()> ByVal clientHandle As
IntPtr, <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As
Guid, <[In]()> ByVal opCode As WlanIntfOpcode, <[In]()> ByVal dataSize As
UInt32, <[In]()> ByVal pData As IntPtr, <[In](), Out()> ByVal pReserved As
IntPtr) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanSetProfile(<[In]()> ByVal clientHandle As IntPtr,
<[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid,
<[In]()> ByVal flags As WlanProfileFlags, <[In](),
MarshalAs(UnmanagedType.LPWStr)> ByVal profileXml As String, <[In](),
MarshalAs(UnmanagedType.LPWStr)> ByVal allUserProfileSecurity As String,
<[In]()> ByVal overwrite As Boolean, <[In]()> ByVal pReserved As IntPtr,
<Out()> ByRef reasonCode As WlanReasonCode) As Integer

End Function

<DllImport("wlanapi.dll")> _

Public Shared Function WlanDisconnect(<[In]()> ByVal clientHandle As IntPtr,
<[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid,
<Out()> ByVal pReserved As IntPtr) As Integer

End Function



' Fields

Public Const WLAN_CLIENT_VERSION_LONGHORN As UInt32 = 2

Public Const WLAN_CLIENT_VERSION_XP_SP2 As UInt32 = 1

' Nested Types

Public Enum Dot11AuthAlgorithm As Int32

' Fields

IEEE80211_Open = 1

IEEE80211_SharedKey = 2

IHV_End = &HFFFFFFFF

IHV_Start = &H80000000

RSNA = 6

RSNA_PSK = 7

WPA = 3

WPA_None = 5

WPA_PSK = 4

End Enum

Public Enum Dot11BssType

' Fields

Any = 3

Independent = 2

Infrastructure = 1

End Enum

Public Enum Dot11CipherAlgorithm As Int32

' Fields

CCMP = 4

IHV_End = &HFFFFFFFF

IHV_Start = &H80000000

None = 0

RSN_UseGroup = &H100

TKIP = 2

WEP = &H101

WEP104 = 5

WEP40 = 1

WPA_UseGroup = &H100

End Enum

<Flags()> _

Public Enum Dot11OperationMode As Int32

' Fields

AP = 2

ExtensibleStation = 4

NetworkMonitor = &H80000000

Station = 1

Unknown = 0

End Enum

Public Enum Dot11PhyType As Int32

' Fields

Any = 0

DSSS = 2

ERP = 6

FHSS = 1

HRDSSS = 5

IHV_End = &HFFFFFFFF

IHV_Start = &H80000000

IrBaseband = 3

OFDM = 4

Unknown = 0

End Enum

<StructLayout(LayoutKind.Sequential)> _

Public Structure Dot11Ssid

Public SSIDLength As UInt32

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=&H20)> _

Public SSID As Byte()

End Structure

<Flags()> _

Public Enum WlanAccess

' Fields

ExecuteAccess = &H20021

ReadAccess = &H20001

WriteAccess = &H70023

End Enum

Public Enum WlanAdhocNetworkState

' Fields

Connected = 1

Formed = 0

End Enum

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanAssociationAttributes

Public dot11Ssid As Dot11Ssid

Public dot11BssType As Dot11BssType

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> _

Public dot11Bssid As Byte()

Public dot11PhyType As Dot11PhyType

Public dot11PhyIndex As UInt32

Public wlanSignalQuality As UInt32

Public rxRate As UInt32

Public txRate As UInt32

Public ReadOnly Property Dot11Bssid2() As PhysicalAddress

Get

Return New PhysicalAddress(Me.dot11Bssid)

End Get

End Property

End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

Public Structure WlanAvailableNetwork

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=&H100)> _

Public profileName As String

Public dot11Ssid As Dot11Ssid

Public dot11BssType As Dot11BssType

Public numberOfBssids As UInt32

Public networkConnectable As Boolean

Public wlanNotConnectableReason As WlanReasonCode

Private numberOfPhyTypes As UInt32

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> _

Private dot11PhyTypes As Dot11PhyType()

Public morePhyTypes As Boolean

Public wlanSignalQuality As UInt32

Public securityEnabled As Boolean

Public dot11DefaultAuthAlgorithm As Dot11AuthAlgorithm

Public dot11DefaultCipherAlgorithm As Dot11CipherAlgorithm

Public flags As WlanAvailableNetworkFlags

Private reserved As UInt32

Public ReadOnly Property Dot11PhyTypes2() As Dot11PhyType()

Get

Dim ret As Dot11PhyType() = New Dot11PhyType(Me.numberOfPhyTypes - 1) {}

Array.Copy(Me.dot11PhyTypes, ret, CLng(Me.numberOfPhyTypes))

Return ret

End Get

End Property

End Structure

<Flags()> _

Public Enum WlanAvailableNetworkFlags

' Fields

Connected = 1

HasProfile = 2

End Enum

<StructLayout(LayoutKind.Sequential)> _

Friend Structure WlanAvailableNetworkListHeader

Public numberOfItems As UInt32

Public index As UInt32

End Structure

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanBssEntry

Public dot11Ssid As Dot11Ssid

Public phyId As UInt32

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> _

Public dot11Bssid As Byte()

Public dot11BssType As Dot11BssType

Public dot11BssPhyType As Dot11PhyType

Public rssi As Integer

Public linkQuality As UInt32

Public inRegDomain As Boolean

Public beaconPeriod As UInt16

Public timestamp As UInt64

Public hostTimestamp As UInt64

Public capabilityInformation As UInt16

Public chCenterFrequency As UInt32

Public wlanRateSet As WlanRateSet

Public ieOffset As UInt32

Public ieSize As UInt32

End Structure

<StructLayout(LayoutKind.Sequential)> _

Friend Structure WlanBssListHeader

Friend totalSize As UInt32

Friend numberOfItems As UInt32

End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

Public Structure WlanConnectionAttributes

Public isState As WlanInterfaceState

Public wlanConnectionMode As WlanConnectionMode

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=&H100)> _

Public profileName As String

Public wlanAssociationAttributes As WlanAssociationAttributes

Public wlanSecurityAttributes As WlanSecurityAttributes

End Structure

<Flags()> _

Public Enum WlanConnectionFlags

' Fields

AdhocJoinOnly = 2

EapolPassthrough = 8

HiddenNetwork = 1

IgnorePrivacyBit = 4

End Enum

Public Enum WlanConnectionMode

' Fields

[Auto] = 4

DiscoverySecure = 2

DiscoveryUnsecure = 3

Invalid = 5

Profile = 0

TemporaryProfile = 1

End Enum

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

Public Structure WlanConnectionNotificationData

Public wlanConnectionMode As WlanConnectionMode

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=&H20)> _

Public profileName As String

Public dot11Ssid As Dot11Ssid

Public dot11BssType As Dot11BssType

Public securityEnabled As Boolean

Public wlanReasonCode As WlanReasonCode

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1)> _

Public profileXml As String

End Structure

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanConnectionParameters

Public wlanConnectionMode As WlanConnectionMode

<MarshalAs(UnmanagedType.LPWStr)> _

Public profile As String

Public dot11SsidPtr As IntPtr

Public desiredBssidListPtr As IntPtr

Public dot11BssType As Dot11BssType

Public flags As WlanConnectionFlags

End Structure

Public Class WlanException

Inherits Exception

' Methods

'Private Sub New(ByVal reasonCode As WlanReasonCode)

'Me.ReasonCode = reasonCode

'End Sub



' Properties

Public Overrides ReadOnly Property Message() As String

Get

Dim sb As New StringBuilder(&H400)

Dim err As WlanReasonCode

If (Wlan.WlanReasonCodeToString(err, sb.Capacity, sb, IntPtr.Zero) = 0) Then

Return sb.ToString

End If

Return String.Empty

End Get

End Property

' Public ReadOnly Property ReasonCode() As WlanReasonCode

' Get

' Return Me.ReasonCode.ToString

' End Get

' End Property



' Fields

'Private reasonCode As WlanReasonCode

End Class

<Flags()> _

Public Enum WlanGetAvailableNetworkFlags

' Fields

IncludeAllAdhocProfiles = 1

IncludeAllManualHiddenProfiles = 2

End Enum

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

Public Structure WlanInterfaceInfo

Public interfaceGuid As Guid

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=&H100)> _

Public interfaceDescription As String

Public isState As WlanInterfaceState

End Structure

<StructLayout(LayoutKind.Sequential)> _

Friend Structure WlanInterfaceInfoListHeader

Public numberOfItems As UInt32

Public index As UInt32

End Structure

Public Enum WlanInterfaceState

' Fields

AdHocNetworkFormed = 2

Associating = 5

Authenticating = 7

Connected = 1

Disconnected = 4

Disconnecting = 3

Discovering = 6

NotReady = 0

End Enum

Public Enum WlanIntfOpcode

' Fields

AutoconfEnabled = 1

BackgroundScanEnabled = 2

BssType = 5

ChannelNumber = 8

CurrentConnection = 7

CurrentOperationMode = 12

IhvEnd = &H3FFFFFFF

IhvStart = &H30000000

InterfaceState = 6

MediaStreamingMode = 3

RadioState = 4

RSSI = &H10000102

SecurityEnd = &H2FFFFFFF

SecurityStart = &H20010000

Statistics = &H10000101

SupportedAdhocAuthCipherPairs = 10

SupportedCountryOrRegionStringList = 11

SupportedInfrastructureAuthCipherPairs = 9

End Enum

Public Delegate Sub WlanNotificationCallbackDelegate(ByRef notificationData
As WlanNotificationData, ByVal context As IntPtr)

Public Enum WlanNotificationCodeAcm

' Fields

AdhocNetworkStateChange = &H16

AutoconfDisabled = 2

AutoconfEnabled = 1

BackgroundScanDisabled = 4

BackgroundScanEnabled = 3

BssTypeChange = 5

ConnectionAttemptFail = 11

ConnectionComplete = 10

ConnectionStart = 9

Disconnected = &H15

Disconnecting = 20

FilterListChange = 12

InterfaceArrival = 13

InterfaceRemoval = 14

NetworkAvailable = &H13

NetworkNotAvailable = &H12

PowerSettingChange = 6

ProfileChange = 15

ProfileNameChange = &H10

ProfilesExhausted = &H11

ScanComplete = 7

ScanFail = 8

End Enum

Public Enum WlanNotificationCodeMsm

' Fields

AdapterOperationModeChange = 14

AdapterRemoval = 13

Associated = 2

Associating = 1

Authenticating = 3

Connected = 4

Disassociating = 9

Disconnected = 10

PeerJoin = 11

PeerLeave = 12

RadioStateChange = 7

RoamingEnd = 6

RoamingStart = 5

SignalQualityChange = 8

End Enum

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanNotificationData

Public notificationSource As WlanNotificationSource

Public notificationCode As Integer

Public interfaceGuid As Guid

Public dataSize As Integer

Public dataPtr As IntPtr

Public ReadOnly Property NotificationCode2() As Object

Get

If (Me.notificationSource = WlanNotificationSource.MSM) Then

Return DirectCast(Me.notificationCode, WlanNotificationCodeMsm)

End If

If (Me.notificationSource = WlanNotificationSource.ACM) Then

Return DirectCast(Me.notificationCode, WlanNotificationCodeAcm)

End If

Return Me.notificationCode

End Get

End Property

End Structure

<Flags()> _

Public Enum WlanNotificationSource

' Fields

ACM = 8

All = &HFFFF

IHV = &H40

MSM = &H10

None = 0

Security = &H20

End Enum

Public Enum WlanOpcodeValueType

' Fields

Invalid = 3

QueryOnly = 0

SetByGroupPolicy = 1

SetByUser = 2

End Enum

<Flags()> _

Public Enum WlanProfileFlags

' Fields

AllUser = 0

GroupPolicy = 1

User = 2

End Enum

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

Public Structure WlanProfileInfo

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=&H100)> _

Public profileName As String

Public profileFlags As WlanProfileFlags

End Structure

<StructLayout(LayoutKind.Sequential)> _

Friend Structure WlanProfileInfoListHeader

Public numberOfItems As UInt32

Public index As UInt32

End Structure

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanRateSet

Private rateSetLength As UInt32

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=&H7E)> _

Private rateSet As UInt16()

Public ReadOnly Property Rates() As UInt16()

Get

Rates = New UInt16((Me.rateSetLength / 2) - 1) {}

Array.Copy(Me.rateSet, Rates, Rates.Length)

Return Rates

End Get

End Property

Public Function GetRateInMbps(ByVal rate As Integer) As Double

Return ((Me.rateSet(rate) And &H7FFF) * 0.5)

End Function

End Structure

Public Enum WlanReasonCode

' Fields

AC_BASE = &H20000

AC_CONNECT_BASE = &H28000

AC_END = &H2FFFF

ADHOC_SECURITY_FAILURE = &H3800A

ASSOCIATION_FAILURE = &H38002

ASSOCIATION_TIMEOUT = &H38003

AUTO_SWITCH_SET_FOR_ADHOC = &H80010

AUTO_SWITCH_SET_FOR_MANUAL_CONNECTION = &H80011

BASE = &H20000

BSS_TYPE_NOT_ALLOWED = &H28005

BSS_TYPE_UNMATCH = &H30003

CONFLICT_SECURITY = &H8000B

CONNECT_CALL_FAIL = &H28009

DATARATE_UNMATCH = &H30005

DISCONNECT_TIMEOUT = &H3800F

DRIVER_DISCONNECTED = &H3800B

DRIVER_OPERATION_FAILURE = &H3800C

GP_DENIED = &H28003

IHV_NOT_AVAILABLE = &H3800D

IHV_NOT_RESPONDING = &H3800E

IHV_OUI_MISMATCH = &H80008

IHV_OUI_MISSING = &H80009

IHV_SECURITY_NOT_SUPPORTED = &H80007

IHV_SECURITY_ONEX_MISSING = &H80012

IHV_SETTINGS_MISSING = &H8000A

IN_BLOCKED_LIST = &H28007

IN_FAILED_LIST = &H28006

INTERNAL_FAILURE = &H38010

INVALID_ADHOC_CONNECTION_MODE = &H8000E

INVALID_BSS_TYPE = &H8000D

INVALID_PHY_TYPE = &H80005

INVALID_PROFILE_NAME = &H80003

INVALID_PROFILE_SCHEMA = &H80001

INVALID_PROFILE_TYPE = &H80004

KEY_MISMATCH = &H2800D

MSM_BASE = &H30000

MSM_CONNECT_BASE = &H38000

MSM_END = &H3FFFF

MSM_SECURITY_MISSING = &H80006

MSMSEC_AUTH_START_TIMEOUT = &H48002

MSMSEC_AUTH_SUCCESS_TIMEOUT = &H48003

MSMSEC_BASE = &H40000

MSMSEC_CANCELLED = &H48011

MSMSEC_CAPABILITY_DISCOVERY = &H40015

MSMSEC_CAPABILITY_NETWORK = &H40012

MSMSEC_CAPABILITY_NIC = &H40013

MSMSEC_CAPABILITY_PROFILE = &H40014

MSMSEC_CAPABILITY_PROFILE_AUTH = &H4001E

MSMSEC_CAPABILITY_PROFILE_CIPHER = &H4001F

MSMSEC_CONNECT_BASE = &H48000

MSMSEC_DOWNGRADE_DETECTED = &H48013

MSMSEC_END = &H4FFFF

MSMSEC_FORCED_FAILURE = &H48015

MSMSEC_G1_MISSING_GRP_KEY = &H4800D

MSMSEC_G1_MISSING_KEY_DATA = &H4800C

MSMSEC_KEY_FORMAT = &H48012

MSMSEC_KEY_START_TIMEOUT = &H48004

MSMSEC_KEY_SUCCESS_TIMEOUT = &H48005

MSMSEC_M3_MISSING_GRP_KEY = &H48008

MSMSEC_M3_MISSING_IE = &H48007

MSMSEC_M3_MISSING_KEY_DATA = &H48006

MSMSEC_MAX = &H4FFFF

MSMSEC_MIN = &H40000

MSMSEC_MIXED_CELL = &H40019

MSMSEC_NIC_FAILURE = &H48010

MSMSEC_NO_AUTHENTICATOR = &H4800F

MSMSEC_NO_PAIRWISE_KEY = &H4800B

MSMSEC_PEER_INDICATED_INSECURE = &H4800E

MSMSEC_PR_IE_MATCHING = &H48009

MSMSEC_PROFILE_AUTH_TIMERS_INVALID = &H4001A

MSMSEC_PROFILE_DUPLICATE_AUTH_CIPHER = &H40007

MSMSEC_PROFILE_INVALID_AUTH_CIPHER = &H40009

MSMSEC_PROFILE_INVALID_GKEY_INTV = &H4001B

MSMSEC_PROFILE_INVALID_KEY_INDEX = &H40001

MSMSEC_PROFILE_INVALID_PMKCACHE_MODE = &H4000C

MSMSEC_PROFILE_INVALID_PMKCACHE_SIZE = &H4000D

MSMSEC_PROFILE_INVALID_PMKCACHE_TTL = &H4000E

MSMSEC_PROFILE_INVALID_PREAUTH_MODE = &H4000F

MSMSEC_PROFILE_INVALID_PREAUTH_THROTTLE = &H40010

MSMSEC_PROFILE_KEY_LENGTH = &H40003

MSMSEC_PROFILE_KEY_UNMAPPED_CHAR = &H4001D

MSMSEC_PROFILE_KEYMATERIAL_CHAR = &H40017

MSMSEC_PROFILE_NO_AUTH_CIPHER_SPECIFIED = &H40005

MSMSEC_PROFILE_ONEX_DISABLED = &H4000A

MSMSEC_PROFILE_ONEX_ENABLED = &H4000B

MSMSEC_PROFILE_PASSPHRASE_CHAR = &H40016

MSMSEC_PROFILE_PREAUTH_ONLY_ENABLED = &H40011

MSMSEC_PROFILE_PSK_LENGTH = &H40004

MSMSEC_PROFILE_PSK_PRESENT = &H40002

MSMSEC_PROFILE_RAWDATA_INVALID = &H40008

MSMSEC_PROFILE_TOO_MANY_AUTH_CIPHER_SPECIFIED = &H40006

MSMSEC_PROFILE_WRONG_KEYTYPE = &H40018

MSMSEC_PSK_MISMATCH_SUSPECTED = &H48014

MSMSEC_SEC_IE_MATCHING = &H4800A

MSMSEC_SECURITY_UI_FAILURE = &H48016

MSMSEC_TRANSITION_NETWORK = &H4001C

MSMSEC_UI_REQUEST_FAILURE = &H48001

NETWORK_NOT_AVAILABLE = &H2800B

NETWORK_NOT_COMPATIBLE = &H20001

NO_AUTO_CONNECTION = &H28001

NON_BROADCAST_SET_FOR_ADHOC = &H8000F

NOT_VISIBLE = &H28002

PHY_TYPE_UNMATCH = &H30004

PRE_SECURITY_FAILURE = &H38004

PROFILE_BASE = &H80000

PROFILE_CHANGED_OR_DELETED = &H2800C

PROFILE_CONNECT_BASE = &H88000

PROFILE_END = &H8FFFF

PROFILE_MISSING = &H80002

PROFILE_NOT_COMPATIBLE = &H20002

PROFILE_SSID_INVALID = &H80013

RANGE_SIZE = &H10000

ROAMING_FAILURE = &H38008

ROAMING_SECURITY_FAILURE = &H38009

SCAN_CALL_FAIL = &H2800A

SECURITY_FAILURE = &H38006

SECURITY_MISSING = &H8000C

SECURITY_TIMEOUT = &H38007

SSID_LIST_TOO_LONG = &H28008

START_SECURITY_FAILURE = &H38005

Success = 0

TOO_MANY_SECURITY_ATTEMPTS = &H38012

TOO_MANY_SSID = &H80014

UI_REQUEST_TIMEOUT = &H38011

UNKNOWN = &H10001

UNSUPPORTED_SECURITY_SET = &H30002

UNSUPPORTED_SECURITY_SET_BY_OS = &H30001

USER_CANCELLED = &H38001

USER_DENIED = &H28004

USER_NOT_RESPOND = &H2800E

End Enum

<StructLayout(LayoutKind.Sequential)> _

Public Structure WlanSecurityAttributes

<MarshalAs(UnmanagedType.Bool)> _

Public securityEnabled As Boolean

<MarshalAs(UnmanagedType.Bool)> _

Public oneXEnabled As Boolean

Public dot11AuthAlgorithm As Dot11AuthAlgorithm

Public dot11CipherAlgorithm As Dot11CipherAlgorithm

End Structure

End Class


--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"at" a écrit dans le message de
news:4b166706$0$979$
LE TROLL a émis l'idée suivante :

J'espère avoir répondu et t'avoir convaincu, cordialement ;o)



Oui mais le fond de ma pensée n'était pas de savoir si une aide
désintéressée avait lieu d'être pour un projet mercantile.

En fait, je pense au retour sur investissement par rapport à l'API/DLL
proposée ici http://www.nicomsoft.com/wifiman/order.htm


Déjà, si j'étais toi, j'essaierai ce produit (c'est gratuit!) pour voir si
il peut répondre à ce que tu recherches. Après tu "dégrossis".

Car ce que tu veux faire c'est du *lourd*. En plus tu parles de 3G,
es-tu sur qu'une API pour le WIFI servira ? D'ou l'intérêt de tester la
version de nicomsoft.