![]() |
WLan API Übersetztung ?
Wie Übersetzte ich den das ins Delphi ? Will nehmlich eine Unit schreiben.
:roll:
Delphi-Quellcode:
#define WLAN_API_VERSION_MAJOR(_v) ((_v) & 0xffff)
#define WLAN_API_VERSION_MINOR(_v) (((DWORD)(_v)) >> 16) #define WLAN_API_MAKE_VERSION(_major, _minor) (((DWORD)(_minor)) << 16 | (_major)) |
Re: WLan API Übersetztung ?
Ich vermute mal, so:
Delphi-Quellcode:
function WLAN_API_VERSION_MAJOR(AVersion : LongWord) : Word;
begin Result:=AVersion and $FFFF; end; function WLAN_API_VERSION_MINOR(AVersion : LongWord) : Word; begin Result:=AVersion shr 16; end; function WLAN_API_MAKE_VERSION(AMajor, AMinor : Word) : LongWord; begin Result:=(LongWord(AMinor) shl 16) or AMajor; end; |
Re: WLan API Übersetztung ?
könnte klaben danke :-D
|
Re: WLan API Übersetztung ?
Habe da mal noch ne Frage , Habe ich das richtig übersetzt ?
Delphi-Quellcode:
|
function WlanOpenHandle(dwClientVersion: DWORD;
pReserved: PBOOL; pdwNegotiatedVersion: DWORD; phClientHandle: PHandle): DWORD; stdcall; external 'wlanapi.dll'; | | v
Delphi-Quellcode:
// public APIs DWORD WINAPI WlanOpenHandle( __in DWORD dwClientVersion, __reserved PVOID pReserved, __out PDWORD pdwNegotiatedVersion, __out PHANDLE phClientHandle ); Und das habe ich mal so übersetzt ich hoffe das stimmt.
Delphi-Quellcode:
|
TnduWLanInterFaceState = (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); | | v
Delphi-Quellcode:
???????// the states of the network (interface) #ifdef __midl // use the 4-byte enum typedef [v1_enum] enum _WLAN_INTERFACE_STATE { #else typedef enum _WLAN_INTERFACE_STATE { #endif 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 } WLAN_INTERFACE_STATE, *PWLAN_INTERFACE_STATE; |
Re: WLan API Übersetztung ?
Zitat:
PVOID ist ein einfacher Pointer. PDWORD kannst du so übernehmen. |
Re: WLan API Übersetztung ?
Was "__reserved" bedeutet weiß ich leider nicht.
Aber "__out" sieht nach einem Out-Parameter aus. Das entsprechende Schlüsselwort gibts auch in Delphi. |
Re: WLan API Übersetztung ?
PDWORD würde ich als var Parameter übersetzen.
|
Re: WLan API Übersetztung ?
Danke Leute es geht jetzt !!! :thumb: Juhhuu :spin2:
|
Re: WLan API Übersetztung ?
Ich muss euch norchmal Nerven !
Wie Muss ich den das übersetzten?
Code:
weil ich habe das hier gefunden .
typedef struct _WLAN_INTERFACE_INFO_LIST {
DWORD dwNumberOfItems; DWORD dwIndex; #ifdef __midl [unique, size_is(dwNumberOfItems)] WLAN_INTERFACE_INFO InterfaceInfo[*]; #else WLAN_INTERFACE_INFO InterfaceInfo[1]; #endif
Code:
da ist das dann aufeinmal ein Array 1. #include <windows.h> 2. #include <Wlanapi.h> 3. #pragma comment(lib,"Wlanapi.lib") 4. int _tmain(int argc, _TCHAR* argv[]) 5. { 6. HANDLE hClient; 7. DWORD dwVersion; 8. WLAN_INTERFACE_INFO_LIST *pInterfaces = NULL; 9. WLAN_BSS_LIST *bssList; 10. switch (WlanOpenHandle(1,NULL, &dwVersion, &hClient)) 11. { 12. case ERROR_SUCCESS: 13. if(WlanEnumInterfaces(hClient, NULL,&pInterfaces)==ERROR_SUCCESS) 14. { 15. for(DWORD i=0;i<pInterfaces->dwNumberOfItems;i++) 16. { 17. wprintf(L"Interface -- %s\n", pInterfaces[i].InterfaceInfo->strInterfaceDescription ); 18. if(WlanGetNetworkBssList(hClient,&pInterfaces[i].InterfaceInfo->InterfaceGuid ,NULL,dot11_BSS_type_any,FALSE,NULL,&bssList)==ERROR_SUCCESS) 19. { 20. for(DWORD j=0;j<bssList->dwNumberOfItems;j++) 21. { 22. wprintf(L"\t%S\n",bssList->wlanBssEntries[j].dot11Ssid.ucSSID); 23. } 24. WlanFreeMemory(bssList); 25. } 26. 27. } 28. WlanFreeMemory(pInterfaces); 29. } 30. WlanCloseHandle(hClient,NULL); 31. break; 32. case ERROR_NOT_ENOUGH_MEMORY: 33. wprintf(L"No hay suficiente memoria\n"); 34. break; 35. case ERROR_OLD_WIN_VERSION: 36. wprintf(L"Version incompatible\n"); 37. break; 38. } 39. return 0; 40. } 41.
Code:
???for(DWORD i=0;i<pInterfaces->dwNumberOfItems;i++) .. wprintf(L"Interface -- %s\n", pInterfaces[i].InterfaceInfo->strInterfaceDescription ); meine Übersetztung sieht so aus
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags durch c-Tags ersetzt. Mfg, Luckie[/edit]
PnduWLanInterFaceList = ^TnduWLanInterFaceList;
TnduWLanInterFaceList = record dwNumberOfItems: DWORD; dwIndex: DWORD; InterfaceInfo: TnduWLanInterFaceInfo; end; |
Re: WLan API Übersetztung ?
Pointer kann man in C automatisch wie Arrays benutzen, sie werden als Zeiger auf das erste Array-Element interpretiert. Die korrekte Übersetzung der Struktur wäre also:
Delphi-Quellcode:
PnduWLanInterFaceList = ^TnduWLanInterFaceList;
TnduWLanInterFaceList = record dwNumberOfItems: DWORD; dwIndex: DWORD; InterfaceInfo: array [0 .. 0] of TnduWLanInterFaceInfo; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz