![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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-2025 by Thomas Breitkreuz