![]() |
WLanManager WLanAPI
Liste der Anhänge anzeigen (Anzahl: 2)
Ok um mal zusehen wie es ankommt möchte ich hier meinen WLan Manager vorstellen ^^.
Das Teil basiert auf der WLanAPI und ist noch nicht mal im Alpha status. Aber es kan schon die Wlan Geräte auslesen und das Netzwerk Scannen ... Benötig wird noch das Update von Microsoft (WlanAPI.dll) ![]() Gestestet auf: Windows XP Das Hauptthema soll eigentlich auf die WLanAPI gehen aber das mache ich nochmal anders ;-) ![]() ![]() |
Re: WLanManager WLanAPI
Warum packst du net die WlanAPI.dll dazu?
man spart sich dann den umständlichen download etc. |
Re: WLanManager WLanAPI
Weil ich mir nicht sicher bin ob da nur die DLL drin ist!? Vieleicht noch Registrie Einträge oder noch irgent was anderes !
Also ich würde lieber das Update nehmen ;-) |
Re: WLanManager WLanAPI
Hätte gerne einen Screen, will erst ma was sehen, dann downloade ich.
|
Re: WLanManager WLanAPI
Wenn alles in einem Ordner ist sollte das doch gehen aber naja ok
|
Re: WLanManager WLanAPI
Den wunsch mit dem Bild konnte ich erfüllen ;-) Und morgen PAck ich nochmal ein Archiv mit DLL ... dann sag mir aber auch bescheid ob es dann geht :-D .
|
Re: WLanManager WLanAPI
Grundsätzlich habe ich genau danach gesucht, um quasi einen kleinen WLAN-Test durchzuführen - also ob die integrierte WLAN-Karte mit einem Funknetz verbunden ist.
Die DLL ist aber leider etwas störend, da ich sie nicht einfach bedenkenlos meinen Applikationen mitgeben kann - von Vista ganz zu schweigen. Es müsste eine API geben, die ohne eine eigene DLL auskommt. Zumal es sich hierbei eigentlich um ein Hotfix handelt, welches höchstwahrscheinlich mit diversen Registry-Einträgen, einem Neustart sowie mehr als einer Datei auskommt. Zum Probieren im privaten Umfeld sicher nicht schlecht, kommerziell aber weitestgehend unbrauchbar... Man müsste mehr Zeit mit diesem Thema verbringe, um genaueres zu sagen. |
Re: WLanManager WLanAPI
Sorry aber jede API basiert auf einer DLL oder Lib blos sind die meinsten schon bei Windows Standart mässig dabei.
Die WLanAPI ist seit XP mit Hotfix (später mit Service Pack 3) und Vista nun da. Sonst müsst man einen eigenen Treiber schreiben um auf die Schnittstelle zu kommen. Zum Beispiel von Asus liefert den Treiber + eigenes Programm ... dieses hat nun seine eigenen DLLs ... da dir sicherlich vorstellen kannst ist das nicht so toll da es noch mehr anbieter gibt. Daher finde ich die WLanAPI ganz toll :thumb: |
Re: WLanManager WLanAPI
Die UNI Regensburg hat ein (FREEWARE ??)-Tool (für XP): WlanInfo.
![]() Das ist schon ganz ordentlich und kommt meines Erachtens ohne die WlanApi aus. Tschüß jogging_cat |
Re: WLanManager WLanAPI
He .. hehehe hmm
Zitat:
Was meinst du wohl wird die "Windows XP enthaltenen 802.11-Schnittstellen" sein !? Wink Außerdem sehe ich da keinen Code! Aber ein Teil der Referenzen die noch nicht hatte sind Stark Wink Danke ! |
Re: WLanManager WLanAPI
Ich muss das WLANTool der Uni Regensburg mal auf meinem Notebook testen, weil dort nicht die API-DLL installiert ist. Ich denke, Windows ist von Haus aus mit bestimmten Standard-API Funktionen ausgestattet, über die bspw. die Netzwerkumgebung WLAN-Infos abfragen kann. Und diese API's scheint das Tool wohl zu nutzen. Auf der Homepage steht nichts von der speziellen API DLL.
Leider gibts das Programm nicht als Source. Hier herrscht also noch Nachholbedarf. |
Re: WLanManager WLanAPI
Toll das basiert auf NDIS Objekt .... und dieses geht dann auch auf den Schnittstelle wie die WLAnAPI ... das macht für mich keinen unterschied :gruebel: dasmit dem NDIS sieht ehr schwieriger aus :angel2:
|
Re: WLanManager WLanAPI
Der Unterschied ist erstens, dass kein separates MS Update installiert werden muss und zweitens, dass diese Schnittstelle auch unter Vista funktioniert. Die bisherige WLAN API-DLL existiert nur für XP.
Das sind in meinen Augen 2 Vorteile, die sicherlich mit etwas mehr Arbeit daherkommen. Aber dafür erreicht man mehr Zielsysteme und eine MS Update-unabhängige API-Ansteuerung... :zwinker: |
Re: WLanManager WLanAPI
Also die WlanAPI ist bei Vista standart (steht so im MSDN) und ab SP3 für XP wirst du so oder so die WLanAPI haben :lol:
Aber ich spiele mit den Gedanken beides in Kombination zubenutzen .... beides hat vor und nachteile ;-) |
Re: WLanManager WLanAPI
Ich denke, sobald die 2. Variante steht, hat man einen technischen Überblick und kann die Vor- sowie Nachteile miteinander abwägen.
|
Re: WLanManager WLanAPI
Zitat:
Ich werde auch 2 möglichkeit mit aufnehmen ! (NDIS) |
Re: WLanManager WLanAPI
Also ich weiss zwar net, von welchem Post Du das Zitat gtenommen hast, aber ich bin dabei.
Mein Ziel wäre zwar vorrangig die Ansteuerung ohne API-DLL, man könnte aber beide Varianten aufnehmen. Wichtig ist auch Vista und eine Art WLAN-Verbindungstest. |
Re: WLanManager WLanAPI
Oh hab dich verwechselt :oops: aber trotzdem cool das du mit machst ^^. Ich schau dann mal die NDIS zuübersetzen :coder: .
|
Re: WLanManager WLanAPI
Hi nitschchedu,
ich würde da auch gerne mitmachen. Bei mir hängt es aber derzeit. Jetzt habe ich erst mal mitbekommen, dass WlanGetNetworkBssList unter XP SP2 nicht funktioniert. OK. Dann hapert es noch bei WlanScan. Das klappt bei mir überhaupt nicht. Weder mit noch ohne gestartetes Wlan. Klappt bei deiner Project1.exe aber auch nicht so 100%ig. Gerade einmal habe ich im unteren Teil Einträge gesehen. Ich benötige erst mal Hilfe für WlanScan. Als erstes wird diese registrierte CallBack-Prozedur nie aufgerufen. Der Aufruf passierte nur manchmal in einer Umgebung mit schwachem Funk, da sah ich aber nur so was wie wlan_notification_acm_disconnected Ich hänge mal etwas Code von mir an. Wäre dankbar über eine Antwort.
Delphi-Quellcode:
Die CallBack-Prozedur:
//=========== Prozedur NotifiCallback ========================================== procedure NotifiCallback(pNotifData:PWLAN_NOTIFICATION_DATA; pContext:PVOID); stdcall; var Source:DWord; begin if pNotifData<>nil then begin Source:=pNotifData.NotificationSource; if (Source and WLAN_NOTIFICATION_SOURCE_ALL) > 0 then begin case pNotifData^.NotificationCode of wlan_notification_acm_scan_complete: begin SetEvent(THandle(pContext^)); end; end; // case pNotifData^.NotificationCode of end; // if pNotifData^.NotificationSource of end // if pNotifData<>nil end; // function NotifiCallback Die Funktion WlanScan: //=========== Funktion WlanScan ================================================ function TWlanClass.WlanScan(InterfaceIndex:integer): DWORD; var mGUID:TGUID; ergebnis:DWORD; hScanCompleteEvent: THandle; hClientHandle:THandle; dwNegotiatedVersion: WORD; begin ergebnis:=WlanOpenHandle(WLAN_API_VERSION,nil,@dwNegotiatedVersion,@hClientHandle); mGUID:=InterfaceInfoArr[InterfaceIndex].InterfaceGuid; hScanCompleteEvent:=CreateEvent(nil, False, False, nil); result:=WlanRegisterNotification(hClientHandle,WLAN_NOTIFICATION_SOURCE_ALL ,true,@NotifiCallback,@hScanCompleteEvent,nil,@dwPrevNotifSource); ergebnis:=nduWlanAPI.WlanScan(hClientHandle,@mGUID,nil,nil,nil); result:=ergebnis; if ergebnis=ERROR_SUCCESS then begin WaitForSingleObject(hScanCompleteEvent, 20*1000); //ShowMessage('Scan complete.'); end; // UnregisterNotification WlanRegisterNotification(hClientHandle,WLAN_NOTIFICATION_SOURCE_NONE ,true,nil,nil,nil,@dwPrevNotifSource); WlanCloseHandle(hClientHandle,nil); end; // function WlanScan(InterfaceIndex:integer): boolean; Ich bin dabei eine ActiveX-DLL für Wlan zu erstellen zur Nutzung in weiteren Programmiersprachen (z. B. Visual Basic, Delphi). Daher habe ich das bisher in einer Klasse. Grüße jogging_cat |
Re: WLanManager WLanAPI
Hi,
ich habe gerade einen kleinen Fehler entdeckt:
Delphi-Quellcode:
Die CallBack-Prozedur ist zwischendurch mal aufgerufen worden,
dwNegotiatedVersion: DWORD;
aber nicht für wlan_notification_acm_scan_complete, sondern für wlan_notification_acm_disconnected und wlan_notification_acm_connection_complete. Also ist an der Prozedur bzw. am Registrieren kein Fehler (oder?) Wie kann ich denn an dem Projekt mitmachen? Bisher hat doch fast die ganze Arbeit nitschchedu gemacht. Grüße jogging_cat |
Re: WLanManager WLanAPI
Hast du das Bsp. mit meinen Code gemacht ? So auf den Erstblick sieht alles gut aus.
Und zu der CallBack-Prozedur muss ich sagen habe ich auch ganz schön zutun gehabt das dasding mal richtig geht. Bei mir ist es nun so das es jedesmal wenn ein Ereigniss eintrit ich da rein komme (mehr als nur einmal). Auswerten tu ich natülich das noch nicht ... ich komme dazu letzter zeit nicht oft. Toll find ich es das du mitmachen willst ^^. Wir sollten mal eine WlanAPI Comunity Gründen oder sowas in der Art. Kannst mir mal dein Bsp. geben will mal sehen wie es im Ganzen aussieht ... und will mal bissel Debuggen (vieleicht find ich ja nochwas) :-D |
Re: WLanManager WLanAPI
Hi nitschchedu,
ich schicke meinen Quellcode. |
Re: WLanManager WLanAPI
Liste der Anhänge anzeigen (Anzahl: 1)
So jetzt gehts ^^
Delphi-Quellcode:
Deine Zahlen durch INFINITE getauscht, wie lange woltest du da eigentlich warten ?
if ergebnis=ERROR_SUCCESS then
begin WaitForSingleObject(hScanCompleteEvent, INFINITE); //ShowMessage('Scan complete.'); end;
Delphi-Quellcode:
Oben im if musste prüfen ob es sich wirklich im ein Notification handelt.
//=========== Prozedur NotifiCallback ==========================================
procedure NotifiCallback(pNotifData:PWLAN_NOTIFICATION_DATA; pContext:PVOID); stdcall; var Source:DWord; begin if pNotifData^.NotificationSource = WLAN_NOTIFICATION_SOURCE_ACM then begin Source:=pNotifData.NotificationSource; if (Source and WLAN_NOTIFICATION_SOURCE_ALL) > 0 then begin case pNotifData^.NotificationCode of wlan_notification_acm_scan_complete: begin SetEvent(THandle(pContext^)); // hier Pointer !!! end; end; // case pNotifData^.NotificationCode of end; // if pNotifData^.NotificationSource of SetEvent(THandle(pContext^)); // hier Pointer !!! end // if pNotifData<>nil end; // function NotifiCallback Und musste mit SetEvent auf jeden fall raus gehen .... sonst Hängt die Anwendung .... für immer (naja gut wenn du wirklich da mit deiner Zeit gewartet hätte stimmt das hier nicht) !! :mrgreen: |
Re: WLanManager WLanAPI
Hi nitschchedu ,
danke für die Antwort. Ich habe meinen Source geändert. Es ging ja um die Funktion WlanScan. Hier die zugehörige Callback-Prozedur:
Delphi-Quellcode:
procedure NotifiCallback(pNotifData:PWLAN_NOTIFICATION_DATA; pContext:PVOID); stdcall;
var Source:DWord; begin if pNotifData<>nil then begin Source:=pNotifData.NotificationSource; if (Source and WLAN_NOTIFICATION_SOURCE_ALL) > 0 then begin case pNotifData^.NotificationCode of wlan_notification_acm_scan_complete: begin SetEvent(THandle(pContext^)); // hier Pointer !!! end; end; // case pNotifData^.NotificationCode of end; // if pNotifData^.NotificationSource of SetEvent(THandle(pContext^)); // <-- diese Änderung <-- !!! end; // if pNotifData<>nil end; // function NotifiCallback Bei mir zeigt sich die Sache aber nicht so richtig zufriedenstellend: 1. Wird ohne verbundenes Wlan gescannt, so wird die Callback-Prozedur aufgerufen. Ich erwarte aber für pNotifData^.NotificationCode: wlan_notification_acm_scan_complete Nur leider sehe ich beim Debug den Code 21, das ist wlan_notification_acm_disconnected. Disconnected ist ja auch richtig, aber darauf habe ich nicht gewartet und Scancomplete sehe ich nicht. 2. Wird mit verbundenem Wlan gescannt, so wird die Callback-Prozedur bei mir nicht aufgerufen. Das ist meines Erachtens nicht ok. Im Microsoft-Forum habe ich darüber gefunden, das häufiges Scannen die Netzwerkübertragungsleistung mindert. Wenn das so ist, ist der Client ja mit dem Wlan verbunden. Nur ich sehe das Ereignis wlan_notification_acm_scan_complete nicht, da die Callback-Prozedur gar nicht aufgerufen wird. Was meinst Du dazu? Grüße jogging_cat |
Re: WLanManager WLanAPI
Hi nitschchedu ,
jetzt habe ich ein Ereignis beim WlanScan, auch wenn ich mit dem Wlan verbunden bin. Daher kehrt die Funktion recht schnell zurück. Ich sehe auch, dass die Verbindung kurz getrennt wird. Und wie bisher ist es das Ereignis wlan_notification_acm_disconnected. Nach (oder während) des Aufrufs von WlanScan wird das Wlan wieder connected. Hattest Du das auch? Grüße jogging_cat |
Re: WLanManager WLanAPI
Interessant was hast du gemacht ? :-D (soweit war ich noch nicht)
Aufjedenenfall nicht schlecht :thumb: |
Re: WLanManager WLanAPI
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo. Ich habe gerade mal dein Tool getestet. Net schlecht
Unter Vista Business läuft es einwandfrei. Hier braucht man nicht einmal die WlanApi.dll runterzuladen!! Allerdings hab ich ein paar dinge zu bemängeln: -Button1: keine caption -Form: keine Caption -Name wird net ganz angezeigt (s.anhang) |
Re: WLanManager WLanAPI
Hi nitschchedu,
das mit dem WlanScan wenn das Wlan verbunden ist, ist auch so eine eigenartige Sache. So richtig verbunden ist es dann wohl doch nicht. In den Netzwerkverbindungen sehe ich ein verbundenes Wlan mit zugewiesener IP-Adresse. Im Bildschrim "Nach drahtlosen Netzwerken suchen" ist dieses Netzwerk (Wlan) auch vebunden. Aber ein Ping auf ein anderes Gerät im Netzwerk misslingt. Evtl. spielt es auch eine Rolle, dass ich vorher mal WlanDisconnect aufgerufen habe. Da wird das Wlan getrennt und gleich wieder verbunden, evtl. aber doch nicht so ganz. Zu WlanDisConnect steht ein Hinweis in der MSDN: Zitat:
Wie sieht das denn mit dem NDIS2 aus? Das Programm der Uni Regensburg funktioniert jedenfalls sehr gut, und das ohne irgendwelche Installationen. Wir sollten mal abstimmen, wie wir an der Sache weiter machen. So eine Klasse für das Wlan halte ich für eine gute Sache. Ich will das bisherige mal unter Vista testen und sehen wie es da läuft. Da soll ja die Funktion WlanGetNetworkBssList verfügbar sein und die liefert die MAC der Acces-Points, wie dieses Proggi. Grüße jogging_cat |
Re: WLanManager WLanAPI
BullsEye:
Auch Interessant mit dem Fehler :gruebel: ich muss ärlich sein hatte es unter Vista noch nicht getestet. Das mit dem Namen bring ich in der nächsten Version in Ordnung :xmas: . jogging_cat: Bei den NDIS bin ich drann, habe 600 Zeilen schon übersetzt und bin gerade mal fast beim 1/4 der Übersetztung der Header. (ganz schöne Arbeit :roteyes: ) |
Re: WLanManager WLanAPI
Hi nitschchedu,
wegen dem NDIS. Da habe ich die Funktionsreferenz in der MSDN oder sonst wo noch gar nicht so richtig gefunden. Oder ist es diese: ![]() Wenn es das ist, so ist es um einiges umfangreicher als Native WIFI. Ach übrigens: Wegen dem Übersetzen der Headerdateien aus C. Wenn Du das öfter machst, so könnte man ja mal über ein Tool nachdenken, welches solche Dateien aus C nach Delphi übersetzt. Grüße jogging_cat |
Re: WLanManager WLanAPI
Jo das NDIS ist nicht nur fürs WLan ;-) damit kann man jedes Netzwerk Gerät ansprechen. (
![]() Mittler weile sind es jetzt 1490 Zeilen (über die Häflte). Ein Programm für das übersetzten zuschreiben gestaltet sich schwierig da man je nach situation das vom C ins Delphi übersetzt :-( . Ich Glaube wir sollten mit dem Thema NDIS mal die sektion wegseln :angel: :mrgreen: |
Re: WLanManager WLanAPI
Liste der Anhänge anzeigen (Anzahl: 1)
So leute ndis geht jetzt :hello: aber ich bekomme jetzt einen Adressfehler :cry:
Delphi-Quellcode:
Wenn jemand ne Idee hat :gruebel:
procedure TForm1.Button4Click(Sender: TObject);
var select: Integer; i: Integer; element: Tndu_NDIS_WLAN_BSSID; wstring: TnduWString; Item: TListItem; begin try if listviewWLanDevice.Selected.Selected then begin select := listviewWLanDevice.Selected.Index; end; except memInfo.Lines.Add('Kein Geräte ausgwählt!'); Exit; end; WlanNDIS.SelectDevice(select); WlanNDIS.Scan; wstring := TnduWString.Create; for i := 0 to WlanNDIS.ScanListCount - 1 do begin Item := listviewndis.Items.Add; <-- Fehler element := WlanNDIS.GetScanListItem(i); Item.Caption := ' '; Item.ImageIndex := 0; Item.SubItems.Add(wstring.HexStringToStr( wstring.ByteArrayToHexStr(element.Ssid.Ssid, element.Ssid.SsidLength))); end; wstring.Free; end; |
Re: WLanManager WLanAPI
Zitat:
kannst du nduWstring.pas ins rar reinpacken, ohne die läuft es nicht. Gruß vepman |
Re: WLanManager WLanAPI
Liste der Anhänge anzeigen (Anzahl: 1)
Ganz schön viel verlang hier, meine gute Wstring Unit ^^ ... ich will mal nicht so sein :-D .
Seit aber nett zu meiner Unit ... schreibe schon sehr lange drann ;-) Verbesserungsvorschläge sind auch erwünscht ^^! |
Re: WLanManager WLanAPI
Zitat:
Gruß vepman |
Re: WLanManager WLanAPI
how to connect?
|
Re: WLanManager WLanAPI
Hallo nitschchedu,
arbeitest Du noch an dem Projekt? Was ist der aktuelle Stand? Meines Wissens nach gibt es keine vergleichbare Übersetzung der WLAN-Schnittstellen, oder doch? |
Re: WLanManager WLanAPI
Hallo Leute,
gibt es etwas Neues? |
Re: WLanManager WLanAPI
Hallo Leute ... leider mache ich kein Delphi mehr daher gebe ich die Source voll kommend frei =) .
|
Re: WLanManager WLanAPI
und wo :)?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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