Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   WLanManager WLanAPI (https://www.delphipraxis.net/103216-wlanmanager-wlanapi.html)

nitschchedu 3. Dez 2007 12:59

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

jogging_cat 3. Dez 2007 13:28

Re: WLanManager WLanAPI
 
Hi nitschchedu,

ich schicke meinen Quellcode.

nitschchedu 4. Dez 2007 07:52

Re: WLanManager WLanAPI
 
Liste der Anhänge anzeigen (Anzahl: 1)
So jetzt gehts ^^

Delphi-Quellcode:
if ergebnis=ERROR_SUCCESS then
    begin
       WaitForSingleObject(hScanCompleteEvent, INFINITE);
       //ShowMessage('Scan complete.');
    end;
Deine Zahlen durch INFINITE getauscht, wie lange woltest du da eigentlich warten ?

Delphi-Quellcode:
//=========== 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
Oben im if musste prüfen ob es sich wirklich im ein Notification handelt.
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:

jogging_cat 6. Dez 2007 09:41

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

jogging_cat 6. Dez 2007 10:55

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

nitschchedu 6. Dez 2007 15:50

Re: WLanManager WLanAPI
 
Interessant was hast du gemacht ? :-D (soweit war ich noch nicht)
Aufjedenenfall nicht schlecht :thumb:

BullsEye 6. Dez 2007 16:07

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)

jogging_cat 6. Dez 2007 16:19

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:

Wireless LAN API for Windows XP SP2: WlanDisconnect has the side effect of modifying the profile associated with the disconnected network. A network profile becomes an on-demand profile after a WlanDisconnect call. The Wireless Zero Configuration service will not connect automatically to a network with an on-demand profile when the network is in range.
Do not call WlanDisconnect before calling WlanConnect unless you want to change a profile to an on-demand profile. When you call WlanConnect to establish a network connection, any existing network connection is dropped automatically.
Na ja, so richtig definiert erscheint mir das mit Native WIFI nicht.
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

nitschchedu 6. Dez 2007 16:27

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

jogging_cat 8. Dez 2007 15:52

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:

http://msdn2.microsoft.com/en-us/library/ms805193.aspx

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 06:27 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz