Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WLan API Übersetztung ? (https://www.delphipraxis.net/79162-wlan-api-uebersetztung.html)

nitschchedu 17. Okt 2006 13:55


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

chaosben 17. Okt 2006 14:13

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;

nitschchedu 17. Okt 2006 14:17

Re: WLan API Übersetztung ?
 
könnte klaben danke :-D

nitschchedu 18. Okt 2006 07:20

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;
???????

ste_ett 18. Okt 2006 07:45

Re: WLan API Übersetztung ?
 
Zitat:

Zitat von nitschchedu
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
);


PVOID ist ein einfacher Pointer.
PDWORD kannst du so übernehmen.

chaosben 18. Okt 2006 07:51

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.

Luckie 18. Okt 2006 08:16

Re: WLan API Übersetztung ?
 
PDWORD würde ich als var Parameter übersetzen.

nitschchedu 18. Okt 2006 08:26

Re: WLan API Übersetztung ?
 
Danke Leute es geht jetzt !!! :thumb: Juhhuu :spin2:

nitschchedu 18. Okt 2006 11:01

Re: WLan API Übersetztung ?
 
Ich muss euch norchmal Nerven !
Wie Muss ich den das übersetzten?
Code:
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
weil ich habe das hier gefunden .

Code:

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.
da ist das dann aufeinmal ein Array
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:
PnduWLanInterFaceList = ^TnduWLanInterFaceList;
  TnduWLanInterFaceList = record
    dwNumberOfItems: DWORD;
    dwIndex: DWORD;
    InterfaceInfo: TnduWLanInterFaceInfo;
  end;
[edit=Luckie]Delphi-Tags durch c-Tags ersetzt. Mfg, Luckie[/edit]

Flocke 18. Okt 2006 11:19

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.
Seite 1 von 8  1 23     Letzte »    

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