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

  1. #1
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut Exemple de code source utilisant Native WiFi API

    Bonjour tout le monde.

    Et vive les purs et durs qui continuent à programmer en VB6 !

    Dans une application de dialogue entre un PC et un Raspberry, je voudrais afficher (sur le PC) un indicateur de la puissance du signal WiFi. Je ne désire pas télécharger une application déjà toute faite (voire payante) ayant une multitude de fonctions qui ne m'intéressent pas, mais programmer moi-même juste ce qui m'intéresse.

    Mon ami Google m'a mis en contact avec Native WiFi API, que je n'ai pas encore beaucoup exploré. Ça ne va pas tarder, mais si certains d'entre vous peuvent me montrer ou m'indiquer des bouts de code, ça me fera gagner du temps.

    Merci d'avance.

    AMIcalement.

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 728
    Points : 10 528
    Points
    10 528

    Par défaut

    Salut

    Il n'y a pas grand chose en VB6 sur DVP , regardes les quelles-que discussions existantes en faisant une recherche avec les mots API Wifi cela pourrait être une première approche.
    Jolie petit interface le Raspberry, moi j’apprends le Python pour programmer son port GPIO.
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 132
    Points : 4 925
    Points
    4 925

    Par défaut

    Il y a quelque chose qui peut t'intéresser sur DVP Découverte de l'API Microsoft Native wifi et également sur le site MSDN Wlanapi.h header

    Le deux liens te listent toutes(ou presque) les fonctions en relation avec ta demande MAIS que ce soit pour l'un ou l'autre lien, les exemples sont en langage C++.
    Alors si tu connais ce langage, tu peux t'en sortir par simple traduction en VB6 puis en faisant les modifications nécessaires.
    Ce qui sera un peu dur, c'est la déclaration des fonctions à partir de Wlanapi.dll.
    Bon courage !
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut

    Merci de vos deux réponses.

    Si je ne me trompe pas, je vous ai déjà "rencontré" il n'y a pas si longtemps sur des forums, plus spécialement à propos de Python, au sujet de mon projet de télécommande par WiFi; Je dois dire que j'ai été malmené dans mon enthousiasme par l'écosystème de python, avec ses multitudes de packages différents, pas toujours (ou pas souvent !) compatibles entre eux, et la grande difficulté, pour un newbie, de trouver son chemin dans cette jungle.

    Pour avancer quand même, j'ai finalement repris le projet sous VB6, et j'ai fait à peu près ce que je voulais en deux jours.

    Les liens donnés par ProgElecT ne sont pas très encourageants : les braves gars qui se sont lancés là-dedans semblent rencontrer beaucoup de difficultés avec la doc µ$ : soit elle est fausse, soit elle est difficile à comprendre (ou bien ils l'ont mal lue ?), mais le sentiment que j'en ai retiré, c'est que c'est vraiment la bouteille à l'encre : si je veux poursuivre, il me semble que je vais devoir enchainer de multiples appels à l'API, avec des structures de données absconses, et qui me retourneront des pointeurs vers d'autres structures du même tabac... si j'ai bien rempli les premières et bien su décoder les réponses précédentes.

    Mais bon, je m'en doutais un petit peu. Maintenant, je vais aller voir la réponse de l'autodidacte, et voir si j'arrive à comprendre le C++, que non, je ne parle pas...

    AMIcalement.

  5. #5
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut

    Bonsoir de nouveau.

    J'avance dans l'analyse des liens que vous m'avez donné. Je pense que je n'aurai pas (trop ?) de problème avec les sources C++ : c'est beaucoup plus facile de comprendre ce que fait un code qui marche que de l'écrire.

    Par contre, pour ré-écrire ça en VB6, il va falloir que je transpose en partie le fichier wlanapi.h en diverses instructions "type" en VB6, et pour cela, j'aurais besoin de quelques éclaircissements sur la façon de coder les "typedef" en C/C++.

    Voici un fichier wlanapi.h que j'ai trouvé grâce à mon ami Google :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    wlanapi.h File Reference
    #include <l2cmn.h>
    #include <windot11.h>
    #include <eaptypes.h>
     
    Go to the source code of this file.
    Classes
    struct  	_DOT11_NETWORK
     
    struct  	_DOT11_NETWORK_LIST
     
    struct  	_WLAN_INTERFACE_INFO
     
    struct  	_WLAN_INTERFACE_INFO_LIST
     
    struct  	_WLAN_INTERFACE_CAPABILITY
     
    struct  	_WLAN_RAW_DATA
     
    struct  	_WLAN_PROFILE_INFO
     
    struct  	_WLAN_PROFILE_INFO_LIST
     
    struct  	_WLAN_AVAILABLE_NETWORK
     
    struct  	_WLAN_AVAILABLE_NETWORK_LIST
     
    struct  	_WLAN_CONNECTION_PARAMETERS
     
    Macros
    #define 	WLAN_API_VERSION_1_0   0x00000001
     
    #define 	WLAN_API_VERSION_2_0   0x00000002
     
    #define 	WLAN_MAX_PHY_INDEX   64
     
    #define 	WLAN_MAX_NAME_LENGTH   256
     
    Typedefs
    typedef enum _WLAN_OPCODE_VALUE_TYPE 	WLAN_OPCODE_VALUE_TYPE
     
    typedef enum _WLAN_SECURABLE_OBJECT 	WLAN_SECURABLE_OBJECT
     
    typedef enum _WLAN_SECURABLE_OBJECT * 	PWLAN_SECURABLE_OBJECT
     
    typedef enum _WLAN_CONNECTION_MODE 	WLAN_CONNECTION_MODE
     
    typedef enum _WLAN_CONNECTION_MODE * 	PWLAN_CONNECTION_MODE
     
    typedef enum _WLAN_IHV_CONTROL_TYPE 	WLAN_IHV_CONTROL_TYPE
     
    typedef enum _WLAN_INTF_OPCODE 	WLAN_INTF_OPCODE
     
    typedef enum _WLAN_INTERFACE_STATE 	WLAN_INTERFACE_STATE
     
    typedef enum _WLAN_INTERFACE_TYPE 	WLAN_INTERFACE_TYPE
     
    typedef enum _WLAN_INTERFACE_TYPE * 	PWLAN_INTERFACE_TYPE
     
    typedef DWORD 	WLAN_REASON_CODE
     
    typedef DWORD * 	PWLAN_REASON_CODE
     
    typedef ULONG 	WLAN_SIGNAL_QUALITY
     
    typedef ULONG * 	PWLAN_SIGNAL_QUALITY
     
    typedef struct _DOT11_NETWORK 	DOT11_NETWORK
     
    typedef struct _DOT11_NETWORK * 	PDOT11_NETWORK
     
    typedef struct _DOT11_NETWORK_LIST 	DOT11_NETWORK_LIST
     
    typedef struct _DOT11_NETWORK_LIST * 	PDOT11_NETWORK_LIST
     
    typedef struct _WLAN_INTERFACE_INFO 	WLAN_INTERFACE_INFO
     
    typedef struct _WLAN_INTERFACE_INFO * 	PWLAN_INTERFACE_INFO
     
    typedef struct _WLAN_INTERFACE_INFO_LIST 	WLAN_INTERFACE_INFO_LIST
     
    typedef struct _WLAN_INTERFACE_INFO_LIST * 	PWLAN_INTERFACE_INFO_LIST
     
    typedef struct _WLAN_INTERFACE_CAPABILITY 	WLAN_INTERFACE_CAPABILITY
     
    typedef struct _WLAN_INTERFACE_CAPABILITY * 	PWLAN_INTERFACE_CAPABILITY
     
    typedef struct _WLAN_RAW_DATA 	WLAN_RAW_DATA
     
    typedef struct _WLAN_RAW_DATA * 	PWLAN_RAW_DATA
     
    typedef struct _WLAN_PROFILE_INFO 	WLAN_PROFILE_INFO
     
    typedef struct _WLAN_PROFILE_INFO * 	PWLAN_PROFILE_INFO
     
    typedef struct _WLAN_PROFILE_INFO_LIST 	WLAN_PROFILE_INFO_LIST
     
    typedef struct _WLAN_PROFILE_INFO_LIST * 	PWLAN_PROFILE_INFO_LIST
     
    typedef struct _WLAN_AVAILABLE_NETWORK 	WLAN_AVAILABLE_NETWORK
     
    typedef struct _WLAN_AVAILABLE_NETWORK * 	PWLAN_AVAILABLE_NETWORK
     
    typedef struct _WLAN_AVAILABLE_NETWORK_LIST 	WLAN_AVAILABLE_NETWORK_LIST
     
    typedef struct _WLAN_AVAILABLE_NETWORK_LIST * 	PWLAN_AVAILABLE_NETWORK_LIST
     
    typedef struct _WLAN_CONNECTION_PARAMETERS 	WLAN_CONNECTION_PARAMETERS
     
    typedef struct _WLAN_CONNECTION_PARAMETERS * 	PWLAN_CONNECTION_PARAMETERS
     
    typedef L2_NOTIFICATION_DATA 	WLAN_NOTIFICATION_DATA
     
    typedef L2_NOTIFICATION_DATA * 	PWLAN_NOTIFICATION_DATA
     
    typedef void(__stdcall * 	WLAN_NOTIFICATION_CALLBACK) (PWLAN_NOTIFICATION_DATA, PVOID)
     
    Enumerations
    enum  	_WLAN_OPCODE_VALUE_TYPE { 
        wlan_opcode_value_type_query_only = 0, 
        wlan_opcode_value_type_set_by_group_policy, 
        wlan_opcode_value_type_set_by_user, 
        wlan_opcode_value_type_invalid }
     
    enum  	_WLAN_SECURABLE_OBJECT {
      wlan_secure_permit_list = 0, 
      wlan_secure_deny_list, 
      wlan_secure_ac_enabled, 
      wlan_secure_bc_scan_enabled,
      wlan_secure_bss_type, 
      wlan_secure_show_denied, 
      wlan_secure_interface_properties, 
      wlan_secure_ihv_control,
      wlan_secure_all_user_profiles_order, 
      wlan_secure_add_new_all_user_profiles, 
      wlan_secure_add_new_per_user_profiles, 
      wlan_secure_media_streaming_mode_enabled,
      wlan_secure_current_operation_mode, 
      WLAN_SECURABLE_OBJECT_COUNT
    }
     
    enum  	_WLAN_CONNECTION_MODE {
      wlan_connection_mode_profile = 0, 
      wlan_connection_mode_temporary_profile, 
      wlan_connection_mode_discovery_secure, 
      wlan_connection_mode_discovery_unsecure,
      wlan_connection_mode_auto, 
      wlan_connection_mode_invalid
    }
     
    enum  	_WLAN_IHV_CONTROL_TYPE { 
        wlan_ihv_control_type_service, 
        wlan_ihv_control_type_driver }
     
    enum  	_WLAN_INTF_OPCODE {
      wlan_intf_opcode_autoconf_start = 0x000000000, 
      wlan_intf_opcode_autoconf_enabled, 
      wlan_intf_opcode_background_scan_enabled, 
      wlan_intf_opcode_media_streaming_mode,
      wlan_intf_opcode_radio_state, 
      wlan_intf_opcode_bss_type, 
      wlan_intf_opcode_interface_state, 
      wlan_intf_opcode_current_connection,
      wlan_intf_opcode_channel_number, 
      wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs, 
      wlan_intf_opcode_supported_adhoc_auth_cipher_pairs, 
      wlan_intf_opcode_supported_country_or_region_string_list,
      wlan_intf_opcode_current_operation_mode,
      wlan_intf_opcode_supported_safe_mode, 
      wlan_intf_opcode_certified_safe_mode, 
      wlan_intf_opcode_hosted_network_capable,
      wlan_intf_opcode_management_frame_protection_capable, 
      wlan_intf_opcode_autoconf_end = 0x0fffffff, 
      wlan_intf_opcode_msm_start = 0x10000100, 
      wlan_intf_opcode_statistics,
      wlan_intf_opcode_rssi, 
      wlan_intf_opcode_msm_end = 0x1fffffff, 
      wlan_intf_opcode_security_start = 0x20010000, 
      wlan_intf_opcode_security_end = 0x2fffffff,
      wlan_intf_opcode_ihv_start = 0x30000000, 
      wlan_intf_opcode_ihv_end = 0x3fffffff
    }
     
    enum  	_WLAN_INTERFACE_STATE {
      wlan_interface_state_not_ready = 0, 
      wlan_interface_state_connected, 
      wlan_interface_state_ad_hoc_network_formed, 
      wlan_interface_state_disconnecting,
      wlan_interface_state_disconnected, 
      wlan_interface_state_associating, 
      wlan_interface_state_discovering, 
      wlan_interface_state_authenticating
    }
     
    enum  	_WLAN_INTERFACE_TYPE { 
       wlan_interface_type_emulated_802_11 = 0, 
       wlan_interface_type_native_802_11, 
       wlan_interface_type_invalid }
     
    Functions
    PVOID WINAPI 	WlanAllocateMemory (DWORD dwSize)
     
    VOID WINAPI 	WlanFreeMemory (PVOID pMemory)
     
    DWORD WINAPI 	WlanOpenHandle (IN DWORD dwClientVersion, PVOID pReserved, OUT DWORD *pdwNegotiatedVersion, OUT HANDLE *phClientHandle)
     
    DWORD WINAPI 	WlanCloseHandle (IN HANDLE hClientHandle, PVOID pReserved)
     
    DWORD WINAPI 	WlanConnect (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, 
                                 IN const PWLAN_CONNECTION_PARAMETERS pConnectionParameters, 
                                 PVOID pReserved)
     
    DWORD WINAPI 	WlanDisconnect (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved)
     
    DWORD WINAPI 	WlanEnumInterfaces (IN HANDLE hClientHandle, PVOID pReserved, OUT PWLAN_INTERFACE_INFO_LIST *ppInterfaceList)
     
    DWORD WINAPI 	WlanGetAvailableNetworkList (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN DWORD dwFlags, 
                                                    PVOID pReserved, OUT PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList)
     
    DWORD WINAPI 	WlanGetInterfaceCapability (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved, 
                                                OUT PWLAN_INTERFACE_CAPABILITY *ppCapability)
     
    DWORD WINAPI 	WlanDeleteProfile (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, PVOID pReserved)
     
    DWORD WINAPI 	WlanGetProfile (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, PVOID pReserved, 
                                    OUT LPWSTR *pstrProfileXml, DWORD *pdwFlags, PDWORD pdwGrantedAccess)
     
    DWORD WINAPI 	WlanGetProfileCustomUserData (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, 
                                                    PVOID pReserved, OUT DWORD *pdwDataSize, OUT PBYTE *ppData)
     
    DWORD WINAPI 	WlanGetProfileList (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, PVOID pReserved, 
                                        OUT PWLAN_PROFILE_INFO_LIST *ppProfileList)
     
    DWORD WINAPI 	WlanIhvControl (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN WLAN_IHV_CONTROL_TYPE Type, 
                                    IN DWORD dwInBufferSize, IN PVOID pInBuffer, IN DWORD dwOutBufferSize, PVOID pOutBuffer, OUT PDWORD pdwBytesReturned)
     
    DWORD WINAPI 	WlanQueryInterface (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN WLAN_INTF_OPCODE OpCode, 
                                        PVOID pReserved, OUT PDWORD pdwDataSize, OUT PVOID *ppData, WLAN_OPCODE_VALUE_TYPE *pWlanOpcodeValueType)
     
    DWORD WINAPI 	WlanReasonCodeToString (IN DWORD dwReasonCode, IN DWORD dwBufferSize, IN PWCHAR pStringBuffer, PVOID pReserved)
     
    DWORD WINAPI 	WlanRegisterNotification (IN HANDLE hClientHandle, IN DWORD dwNotifSource, IN BOOL bIgnoreDuplicate, 
                                                WLAN_NOTIFICATION_CALLBACK funcCallback, PVOID pCallbackContext, PVOID pReserved, PDWORD pdwPrevNotifSource)
     
    DWORD WINAPI 	WlanRenameProfile (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strOldProfileName, 
                                        IN LPCWSTR strNewProfileName, PVOID pReserved)
     
    DWORD WINAPI 	WlanSetProfile (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN DWORD dwFlags, IN LPCWSTR strProfileXml, 
                                    LPCWSTR strAllUserProfileSecurity, IN BOOL bOverwrite, PVOID pReserved, OUT DWORD *pdwReasonCode)
     
    DWORD WINAPI 	WlanSetProfileCustomUserData (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, 
                                                    IN DWORD dwDataSize, IN const PBYTE pData, PVOID pReserved)
     
    DWORD WINAPI 	WlanSetProfileEapUserData (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN LPCWSTR strProfileName, 
                                                IN EAP_METHOD_TYPE eapType, IN DWORD dwFlags, IN DWORD dwEapUserDataSize, IN const LPBYTE pbEapUserData, PVOID pReserved)
     
    DWORD WINAPI 	WlanSetProfileList (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, DWORD dwItems, 
                                        IN LPCWSTR *strProfileNames, PVOID pReserved)
     
    DWORD WINAPI 	WlanSetSecuritySettings (IN HANDLE hClientHandle, IN WLAN_SECURABLE_OBJECT SecurableObject, IN LPCWSTR strModifiedSDDL)
     
    DWORD WINAPI 	WlanScan (IN HANDLE hClientHandle, IN const GUID *pInterfaceGuid, IN PDOT11_SSID pDot11Ssid, 
                                IN PWLAN_RAW_DATA pIeData, PVOID pReserved)

    Le point qui me parait le plus incertain, c'est les éléments des "typedef" qui sont déclarés sans typage. J'ai supposé que c'étaient des DWORD, mais j'aimerais confirmation.

    Ensuite, quand une valeur est donnée à un élément d'un "typedef" en C/C++, je ne peux pas faire pareil en VB6, il va falloir que je force la valeur dans le code, n'est-ce pas ?

    D'autre part, j'ai été surpris de voir que DWORD et ULONG, ben finalement, c'est la même chose. Dois-je conclure que c'est la même chose sous Windows, mais pas forcément ailleurs ?

    Enfin, s'il y a d'autres trucs que mon ignorance de C/C++ ne me permet pas de détecter tout de suite, merci de me l'indiquer.

    AMIcalement.

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 132
    Points : 4 925
    Points
    4 925

    Par défaut

    Bonjour;

    A vrai dire, je ne connais pas le langage C/C++, mais à regarder le terme typedef, il vient à l'esprit que ce n'est qu'une concaténation-abréviation des termes anglais "Type definition" , utilisé pour définir un type utilisateur. En voici 2 exemples : 1 et 2

    Pour le fichier Wlanapi.h: il n'est pas utilisable en VB6 qui n'utilise que les fichiers compilés(exe, dll, ocx ....).
    Pourtant ma remarque était claire :
    Ce qui sera un peu dur, c'est la déclaration des fonctions à partir de Wlanapi.dll
    Ce fichier existe dans le dossier système à partir de Windows XP(et si je ne me trompe pas, existe aussi depuis Win2000 !?).

    En conséquence, il faut trouver un moyen pour extraire les différentes déclarations à partir de Wlanapi.dll.
    Par exemple Dependency Walker permet de voir les fonctions contenues dans le fichier en question avec en plus d'autres informations qui peuvent être utiles.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut

    Merci, L_autodidacte. Et merci de répondre si tu n'en sais pas plus que moi en C++.

    Le fichier que j'ai joint à mon précédent post n'était pas le bon, mais j'en ai trouvé un qui va bien.

    Pour le typedef, j'avais trouvé la réponse (merci notre ami commun) : ça se résoudra en VB6 avec un "type/end type" et une série de "const", mais l'information qui n'est pas dans les sources C++, c'est le type de variable par défaut. Mais étant donné que certaines valeurs du typedef sont données en "ox01234567" je déduis que ce sont des "long", mais j'aurais voulu confirmation. De toute façon, quand ce sera fini, je verrai bien si ça marche et comment corriger (du moins, j'espère).

    Joyeuses fêtes.

    AMIcalement.

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 132
    Points : 4 925
    Points
    4 925

    Par défaut

    Pour les variables de la forme 0xnnnn, ce sont -comme tu l'as prévu- du type LONG.
    Par exemple, si on a : #define LVS_EDITLABELS 0x0200, cela se traduit en VB par Const LVS_EDITLABELS = &H200
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut

    Au secours, au secours !!!!

    Merci, L_autodidacte, pour confirmer ce que j'avais compris.

    Il va me falloir d'autres explications (et elles viendront peut-être plutôt de spécialistes de C/C++...)

    Voici ce que Google me trouve chez µ$ :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct _WLAN_INTERFACE_INFO_LIST {
      DWORD               dwNumberOfItems;
      DWORD               dwIndex;
    #if ...
      WLAN_INTERFACE_INFO *InterfaceInfo[];
    #else
      WLAN_INTERFACE_INFO InterfaceInfo[1];
    #endif
    } WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
    pour décrire la structure "WLAN_INTERFACE_INFO_LIST", qui donne la liste des structures "WLAN_INTERFACE_INFO" actuellement disponibles sur le système.

    Mais comment interpréter le "#if ... " si on ne sait pas ce que cachent les "..." ?

    D'autre part, je crois comprendre que, suivant les cas (mais quels cas ?) on peut avoir, soit un tableau de structures "WLAN_INTERFACE_INFO", soit un tableau de pointeurs vers ces structures. Mais comment doit-on interpréter le fait que, pour les pointeurs, on ait "*interfaceinfo[]" (le "*" signifiant "pointeur, je suppose), alors que l'on a "interface[1]" dans l'autre cas

    Vous aviez raison, réécrire ce programme pour VB6 (même en le simplifiant), c'est pas de la tarte !

    AMIcalement.

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 132
    Points : 4 925
    Points
    4 925

    Par défaut

    InterfaceInfo[1] correspond à un élément bien précis(celui d'index 1, donc le 2ème dans le tableau).
    #if... cela suppose qu'il y a au moins 2 possibilités de conditions à poser tel que
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct _WLAN_INTERFACE_INFO_LIST {
        DWORDdwNumberOfItems;
        DWORDdwIndex;
    #if defined(__midl) || defined(__WIDL__)
        [unique, size_is(dwNumberOfItems)] WLAN_INTERFACE_INFO InterfaceInfo[*];
    #else
         WLAN_INTERFACE_INFO InterfaceInfo[1];
    #endif
    } WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
    décrit ICI où tu peux trouver de plus amples informations
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Membre du Club
    Inscrit en
    mai 2009
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 111
    Points : 47
    Points
    47

    Par défaut

    Merci, L_autodidacte, décidément, c'est comme s'il n'y avait (presque) qu'une personne sur ce forum. Mais le problème est sûrement très pointu.

    Ton lien est le véritable fichier avec lequel je travaille. Mais ta réponse ne m'avance guère : c'est quoi, ces "__midl" et "__WIDL__)" qui apparaissent à plusieurs endroit. En d'autres termes, je dois choisir quelle alternative de ces "ifdefined" ?

    AMIcalement.

Discussions similaires

  1. SDK wireless - native WIFI API
    Par sawbo1 dans le forum Windows
    Réponses: 1
    Dernier message: 26/12/2009, 18h24
  2. Cherche exemple de code source de carnet d'adresses
    Par Doudy dans le forum Débutant
    Réponses: 2
    Dernier message: 01/10/2009, 17h33
  3. exemple de code source
    Par yanis97 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/10/2006, 19h22
  4. Exemple de code source "htmlviewer"
    Par kisitomomotene dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 30/08/2006, 07h05

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