AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wlan connect

Ein Thema von stefan684 · begonnen am 20. Jan 2017 · letzter Beitrag vom 22. Mär 2017
 
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Wlan connect

  Alt 29. Jan 2017, 13:36
.... und wieder ein Stückchen glücklicher: Auch das Notifing funzt nun !
Wo fange ch mal an ? Am besten mit der eigendlichen Frage: WLAN_CONNECT

Es ist ganz offensichtlich
A) .... ein Fehler in der WLAN-API für Delphi, die es div. im WEB (mit gleichem Inhalt zu laden gibt.
Ich habe Diese hier verwendet.
Es ist ein Fehler in der LIB "nduWlanAPI.pas" !
Falsche Parameterdefinition .... so isse's richtig und funzt:
Code:
type
  Pndu_WLAN_CONNECTION_PARAMETERS = ^Tndu_WLAN_CONNECTION_PARAMETERS;
  Tndu_WLAN_CONNECTION_PARAMETERS = record
    wlanConnectionMode: Tndu_WLAN_CONNECTION_MODE;
    strProfile: LPCWSTR;     // changed by TERWI - remind missing "W" for pointer !
//    strProfile: LPCTSTR;   // ORIGINAL declared by author
    pDot11Ssid: Pndu_DOT11_SSID;
    pDesiredBssidList: Pndu_DOT11_BSSID_LIST;
    dot11BssType: Tndu_DOT11_BSS_TYPE;
    dwFlags: DWORD;
  end;
.... ein simples "W" fehlte.

B) .... und die Frage der richtigen Initialisierung. Meine Routine sieht so aus:
Code:
function TMain.WLAN_Connect(ConLast : boolean) : HRESULT;
var
  ConPrms : Tndu_WLAN_CONNECTION_PARAMETERS;
  Name    : WideString;
begin
  if NOT Assigned(FpIFDATA) then exit;
  if NOT Assigned(FpNWDATA) then exit;
  if NOT FIsClient then exit;
  if ConLast then
    Name := WideString(FpIFDATA.actProfile)
  else
    Name := WideString(FpNWDATA.actProfile);
  ConPrms.wlanConnectionMode := wlan_connection_mode_profile;
  ConPrms.strProfile        := PWChar(Name);
  ConPrms.pDot11Ssid        := NIL;
  // Windows XP: pDesiredBssidList member must be NULL.
  ConPrms.pDesiredBssidList := NIL;
  ConPrms.dot11BssType      := dot11_BSS_type_any;
  // Windows XP: dwFlags must be set to 0
  ConPrms.dwFlags           := 0;
  result := WlanConnect(FhClient,
                        @FGuid,
                        @ConPrms,
                        nil);
  if result <> ERROR_SUCCESS then
    Memo.Lines.Add('CONNECT - FAILED: ' + IntToStr(result) + ' - ' + GetErrString(result))
  else
    Memo.Lines.Add('CONNECT - OK ... wait for notify !`');
end;
FhClient und FhClient sind globale var. Dito FpIFDATA, worin Daten aus dem aktuell connecteten Interface/Adapter gehalten werden.
Die Connection Params sind für XP-kompatiblen ausgelegt (mode_profile).

Der Parameter "ConLast" besagt hier, das ich entweder die letzte Verbindung des Adapters oder eine neu gewählte nehme. Hie wird nur ein String für den Profilnamen (der gültig sein muss !) passend zugewiesen.
Funzt nun tadellos.

Später mehr.

Geändert von TERWI (29. Jan 2017 um 14:20 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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