AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WLanManager WLanAPI

WLanManager WLanAPI

Ein Thema von nitschchedu · begonnen am 12. Nov 2007 · letzter Beitrag vom 9. Apr 2010
Antwort Antwort
Seite 3 von 6     123 45     Letzte » 
nitschchedu
Registriert seit: 24. Mär 2006
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)hier

Gestestet auf: Windows XP

Das Hauptthema soll eigentlich auf die WLanAPI gehen aber das mache ich nochmal anders
http://img148.imageshack.us/img148/4...enannt1gz0.jpg
Angehängte Dateien
Dateityp: exe wlanmanager_656.exe (580,5 KB, 789x aufgerufen)
Dateityp: rar source_180.rar (17,8 KB, 767x aufgerufen)
Programmieren ..... .
 
nitschchedu

 
Delphi 7 Professional
 
#21
  Alt 3. Dez 2007, 13:59
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)
  Mit Zitat antworten Zitat
jogging_cat

 
Delphi 5 Enterprise
 
#22
  Alt 3. Dez 2007, 14:28
Hi nitschchedu,

ich schicke meinen Quellcode.
  Mit Zitat antworten Zitat
nitschchedu

 
Delphi 7 Professional
 
#23
  Alt 4. Dez 2007, 08:52
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) !!
Miniaturansicht angehängter Grafiken
unbenannt-2_676.jpg  
  Mit Zitat antworten Zitat
jogging_cat

 
Delphi 5 Enterprise
 
#24
  Alt 6. Dez 2007, 10:41
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
  Mit Zitat antworten Zitat
jogging_cat

 
Delphi 5 Enterprise
 
#25
  Alt 6. Dez 2007, 11:55
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
  Mit Zitat antworten Zitat
nitschchedu

 
Delphi 7 Professional
 
#26
  Alt 6. Dez 2007, 16:50
Interessant was hast du gemacht ? (soweit war ich noch nicht)
Aufjedenenfall nicht schlecht
  Mit Zitat antworten Zitat
BullsEye

 
Delphi 7 Personal
 
#27
  Alt 6. Dez 2007, 17:07
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)
Miniaturansicht angehängter Grafiken
fehler_1_674.jpg  
Marc
  Mit Zitat antworten Zitat
jogging_cat

 
Delphi 5 Enterprise
 
#28
  Alt 6. Dez 2007, 17:19
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
  Mit Zitat antworten Zitat
nitschchedu

 
Delphi 7 Professional
 
#29
  Alt 6. Dez 2007, 17:27
BullsEye:
Auch Interessant mit dem Fehler ich muss ärlich sein hatte es unter Vista noch nicht getestet.
Das mit dem Namen bring ich in der nächsten Version in Ordnung .


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 )
  Mit Zitat antworten Zitat
jogging_cat

 
Delphi 5 Enterprise
 
#30
  Alt 8. Dez 2007, 16:52
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:52 Uhr.
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