![]() |
Wlan connect
Hallo,
ich würde gerne per Delphi Verbindungen zu Wlan-Netze herstellen. Im Netz habe ich einen Wlan-Scanner gefunden:
Delphi-Quellcode:
Das funktioniert soweit, es werden die vorhandenen Netzwerk angezeigt.
procedure TFORM1.Scan();
const WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES =$00000001; var hClient : THandle; dwVersion : DWORD; ResultInt : DWORD; pInterface : Pndu_WLAN_INTERFACE_INFO_LIST; i : Integer; j : Integer; pAvailableNetworkList: Pndu_WLAN_AVAILABLE_NETWORK_LIST; pInterfaceGuid : PGUID; SDummy : string; l:tlistItem; begin ResultInt:=WlanOpenHandle(1, nil, @dwVersion, @hClient); if ResultInt<> ERROR_SUCCESS then begin WriteLn('Error Open CLient'+IntToStr(ResultInt)); Exit; end; ResultInt:=WlanEnumInterfaces(hClient, nil, @pInterface); if ResultInt<> ERROR_SUCCESS then begin WriteLn('Error Enum Interfaces '+IntToStr(ResultInt)); exit; end; for i := 0 to pInterface^.dwNumberOfItems - 1 do begin COMBOBOX1.Items.Add('Interface ' + pInterface^.InterfaceInfo[i].strInterfaceDescription); edit1.Text:=('GUID ' + GUIDToString(pInterface^.InterfaceInfo[i].InterfaceGuid)); pInterfaceGuid:= @pInterface^.InterfaceInfo[pInterface^.dwIndex].InterfaceGuid; ResultInt:=WlanGetAvailableNetworkList(hClient,pInterfaceGuid,WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES,nil,pAvailableNetworkList); if ResultInt<> ERROR_SUCCESS then begin WriteLn('Error WlanGetAvailableNetworkList '+IntToStr(ResultInt)); Exit; end; for j := 0 to pAvailableNetworkList^.dwNumberOfItems - 1 do Begin l:=listview1.Items.Add; SDummy:=PAnsiChar(@pAvailableNetworkList^.Network[j].dot11Ssid.ucSSID); l.Caption:=(SDummy); l.SubItems.Add(Format('%d ',[pAvailableNetworkList^.Network[j].wlanSignalQuality])+'%'); //SDummy := GetEnumName(TypeInfo(Tndu_DOT11_AUTH_ALGORITHM),integer(pAvailableNetworkList^.Network[j].dot11DefaultAuthAlgorithm)) ; SDummy:=DOT11_AUTH_ALGORITHM_To_String(pAvailableNetworkList^.Network[j].dot11DefaultAuthAlgorithm); l.SubItems.Add(SDummy); SDummy:=DOT11_CIPHER_ALGORITHM_To_String(pAvailableNetworkList^.Network[j].dot11DefaultCipherAlgorithm); l.SubItems.Add(SDummy); End; end; WlanCloseHandle(hClient, nil); end; Meine Frage ist, wie kann ich jetzt zu einem ausgewählten Netz eine Verbindung herstellen? In einer Unit befindet sich die Funktion WlanConnect.
Delphi-Quellcode:
Weiß jemand, wie ich die Parameter in diese Funktion einsetzen muss?
function WlanConnect(hClientHandle: Handle; const pInterfaceGuid: PGUID;
const pConnectionParameters: Pndu_WLAN_CONNECTION_PARAMETERS; pReserved: PVOID): DWORD; stdcall; Danke. Gruß Stefan |
AW: Wlan connect
Falls dir das weiterhilft - die Doku zu WlanConnect:
![]() |
AW: Wlan connect
Hallo,
vielen Dank erstmal. Gibt es keine Beispiel als Delphi-Code, wie man welche Parameter übergibt? |
AW: Wlan connect
Zitat:
Alle relevanten Informationen liegen doch vor?!? Du musst nur noch als dritten Parameter pConnectionParameters: Pndu_WLAN_CONNECTION_PARAMETERS erzeugen, ausfüllen und übergeben. |
AW: Wlan connect
Hallo,
den Code habe ich nicht so richtig verstanden?!? Mit Zeigern usw. kenne ich mich nicht so gut aus. Wie bau ich den dritten Parameter zusammen? Ein Beispiel-Code wäre super. Danke. Stefan |
AW: Wlan connect
So hab ich es bis jetzt gemacht:
Delphi-Quellcode:
Funktioniert leider nicht.
var PA : Pndu_WLAN_CONNECTION_PARAMETERS;
... Pa.strProfile := 'Test'; Pa.wlanConnectionMode := Wlan_Connection_Mode_profile; Pa.pDot11Ssid := @pAvailableNetworkList^.Network[0].dot11Ssid; Pa.pDesiredBssidList := @pAvailableNetworkList^.Network[0].dot11BssType; Pa.dwFlags := Null; ResultInt:= WlanConnect(hClient, @pInterface^.InterfaceInfo[0].InterfaceGuid, PA , nil); |
AW: Wlan connect
Zitat:
Was genau funktioniert nicht? |
AW: Wlan connect
Er hat vergessen den Speicher für den Pointer zu reservieren.
Aber das hat ihm auch der Compiler gesagt, denn diese Variable ist nicht initialisiert. PS: Alternativ kann man auch statt des Pointer-Typs + New direkt den Record-Typen verwenden. |
AW: Wlan connect
Ich klinke mich hier mal ein - weil gleiches Prob u. a.
![]() ![]() Problemstellung: Ich habe hier u.a. ein(ige) ESP8266-WiFi-Module, welche als Acecess-Point laufen und nebst Daten-Fütterung auch wieder Daten von sich geben. Tempörär nach Bedarf .... D.h., ich möchte - erkennen, ob jeweile Module "online" sind (wiederholter Scan bei Bedarf - klappt soweit) - mich mit dem Schläppi (vom eingeloggten WLAN) nach Wahl damit verbinden (TO DO !) - Daten "duch die Luft" austauschen (das klappt auch wie die Wutz) und - wenn fettich wieder automatisch mit dem vorherige "Stamm-WLAN" verbinden (TO DO !) ... damit das umständliche aus- und Einloggen (für unbedarfte User meiner APP) entfällt (und nicht nur für mich automatisch schneller geht) Test betreff "Connect" (& logo DisConnect) steht gleich noch aus .... Dazu jedoch noch die Frage vorher: - Wie erkenne ich, mit welchem WiFi ich bereits (aktuell automatisch zum Home-Router) verbunden bin ? (und wie ich mir das merken kann/muss für spateren re-connect) - Ich hab am Schläppi noch einen Fritz!-WLAN-Stick für alternative Verbindung (ist schneller als der eingebaute Ahteros) -> Kann ich die parallel nutzen ohne uzuschalten ? Mega Dank für hilfreiche Tipps/Links. |
AW: Wlan connect
Viel kann ich nich helfen, aber ja, man kann sich über mehrere WLAN-Module gleichzeitig zu mehreren WLAN-Routern/Hotspots verbinden.
Also Windows kann das probemlos. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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 by Thomas Breitkreuz