Delphi (Windows Xp) programımda mevcut WiFi ağlarını kontrol etmek istiyorum. Nasıl yapılacağı hakkında bir fikrin var mı? En iyisi MS WlanScan API işlevini kullanmaktır ancak bir örnek bulamadım. Birisi bana yardım edebilir mi?Delphi ile Wifi ile çalışmak istiyorum. Nasıl?
cevap
Windows Vista ve Windows XP'den beri kullanılabilen Native Wifi API'u kullanabilirsiniz. Windows'un eski sürümleri desteklenmez.
Bu link içinde başlıkların çok güzel bir çevirisini bulabilirsiniz.
Bu kodları bu üstbilgileri kullanarak yazdım. Delphi 2007 ve Windows Vista'da test edildi.
program DetectWifiUsingDelphi;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
//TypInfo,
nduWlanAPI in 'nduWlanAPI.pas',
nduWlanTypes in 'nduWlanTypes.pas';
function DOT11_AUTH_ALGORITHM_To_String(Dummy :Tndu_DOT11_AUTH_ALGORITHM):String;
begin
Result:='';
case Dummy of
DOT11_AUTH_ALGO_80211_OPEN : Result:= '80211_OPEN';
DOT11_AUTH_ALGO_80211_SHARED_KEY : Result:= '80211_SHARED_KEY';
DOT11_AUTH_ALGO_WPA : Result:= 'WPA';
DOT11_AUTH_ALGO_WPA_PSK : Result:= 'WPA_PSK';
DOT11_AUTH_ALGO_WPA_NONE : Result:= 'WPA_NONE';
DOT11_AUTH_ALGO_RSNA : Result:= 'RSNA';
DOT11_AUTH_ALGO_RSNA_PSK : Result:= 'RSNA_PSK';
DOT11_AUTH_ALGO_IHV_START : Result:= 'IHV_START';
DOT11_AUTH_ALGO_IHV_END : Result:= 'IHV_END';
end;
End;
function DOT11_CIPHER_ALGORITHM_To_String(Dummy :Tndu_DOT11_CIPHER_ALGORITHM):String;
Begin
Result:='';
case Dummy of
DOT11_CIPHER_ALGO_NONE : Result:= 'NONE';
DOT11_CIPHER_ALGO_WEP40 : Result:= 'WEP40';
DOT11_CIPHER_ALGO_TKIP : Result:= 'TKIP';
DOT11_CIPHER_ALGO_CCMP : Result:= 'CCMP';
DOT11_CIPHER_ALGO_WEP104 : Result:= 'WEP104';
DOT11_CIPHER_ALGO_WPA_USE_GROUP : Result:= 'WPA_USE_GROUP OR RSN_USE_GROUP';
//DOT11_CIPHER_ALGO_RSN_USE_GROUP : Result:= 'RSN_USE_GROUP';
DOT11_CIPHER_ALGO_WEP : Result:= 'WEP';
DOT11_CIPHER_ALGO_IHV_START : Result:= 'IHV_START';
DOT11_CIPHER_ALGO_IHV_END : Result:= 'IHV_END';
end;
End;
procedure Scan();
const
WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES =$00000001;
var
hClient : THandle;
dwVersion : DWORD;
ResultInt : DWORD;
pInterface : Pndu_WLAN_INTERFACE_INFO_LIST;
i : Integer;
j : Integer;
pAvailableNetworkList: Pndu_WLAN_AVAILABLE_NETWORK_LIST;
pInterfaceGuid : PGUID;
SDummy : string;
begin
ResultInt:=WlanOpenHandle(1, nil, @dwVersion, @hClient);
if ResultInt<> ERROR_SUCCESS then
begin
WriteLn('Error Open CLient'+IntToStr(ResultInt));
Exit;
end;
ResultInt:=WlanEnumInterfaces(hClient, nil, @pInterface);
if ResultInt<> ERROR_SUCCESS then
begin
WriteLn('Error Enum Interfaces '+IntToStr(ResultInt));
exit;
end;
for i := 0 to pInterface^.dwNumberOfItems - 1 do
begin
Writeln('Interface ' + pInterface^.InterfaceInfo[i].strInterfaceDescription);
WriteLn('GUID ' + GUIDToString(pInterface^.InterfaceInfo[i].InterfaceGuid));
Writeln('');
pInterfaceGuid:= @pInterface^.InterfaceInfo[pInterface^.dwIndex].InterfaceGuid;
ResultInt:=WlanGetAvailableNetworkList(hClient,pInterfaceGuid,WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES,nil,pAvailableNetworkList);
if ResultInt<> ERROR_SUCCESS then
begin
WriteLn('Error WlanGetAvailableNetworkList '+IntToStr(ResultInt));
Exit;
end;
for j := 0 to pAvailableNetworkList^.dwNumberOfItems - 1 do
Begin
WriteLn(Format('Profile %s',[WideCharToString(pAvailableNetworkList^.Network[j].strProfileName)]));
SDummy:=PChar(@pAvailableNetworkList^.Network[j].dot11Ssid.ucSSID);
WriteLn(Format('NetworkName %s',[SDummy]));
WriteLn(Format('Signal Quality %d ',[pAvailableNetworkList^.Network[j].wlanSignalQuality])+'%');
//SDummy := GetEnumName(TypeInfo(Tndu_DOT11_AUTH_ALGORITHM),integer(pAvailableNetworkList^.Network[j].dot11DefaultAuthAlgorithm)) ;
SDummy:=DOT11_AUTH_ALGORITHM_To_String(pAvailableNetworkList^.Network[j].dot11DefaultAuthAlgorithm);
WriteLn(Format('Auth Algorithm %s ',[SDummy]));
SDummy:=DOT11_CIPHER_ALGORITHM_To_String(pAvailableNetworkList^.Network[j].dot11DefaultCipherAlgorithm);
WriteLn(Format('Auth Algorithm %s ',[SDummy]));
Writeln('');
End;
end;
WlanCloseHandle(hClient, nil);
end;
begin
try
Scan();
Readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
alt text http://i33.tinypic.com/2z83ubt.jpg
güle.
WlanAPI.zip indirme bağlantısı bozuk. İşte bir çalışma linki: http://www.delphibasics.info/home/delphibasicsprojects/wifiscanner – kobik
Ayrıca WMI sorgusu gerçekleştirerek bu alabilirsiniz: Özellikle bir Delphi uygulaması arıyorsanız
SELECT * FROM MSNdis_80211_ServiceSetIdentifier
, tam bir kaynak içerir ve serbestçe kullanılabilir Magenta Systems edinilebilir bir WMI kütüphane bulunmaktadır . Mevcut yükleme, aradığınız tüm verileri içerip içermediğini görmek için bu sorguyu deneyebileceğiniz derlenmiş bir yürütülebilir dosya içerir. Bu yaklaşımın tek dezavantajı, WMI servisinin çalışması gerektiğidir (normalde öyle ki bu büyük bir problem değildir).
- 1. Wifi, Lock ile kilitleniyor
- 2. Ben Delphi yazmak istiyorum Delphi
- 3. Nasıl pygtk ile çalışmak için
- 4. Raylarda datetime ile çalışmak
- 5. Android'de WiFi ile çalışmaya başlama
- 6. HTTPserver.ino ile Adafruit CC3000 wifi
- 7. Web kamerası çalışmak için OpenCV 2.3 ile çalışmak Cygwin ile
- 8. Delphi ile mp3 çalma
- 9. Delphi ile programlama JNI
- 10. Inno Kurulumu: JSON ile Çalışmak
- 11. DIV'ler ve CSS ile Çalışmak
- 12. LZO bir dosya akışı ile çalışmak nasıl?
- 13. XDebug ile çalışmak için __debugInfo nasıl edinilir?
- 14. ListAdapter ile çalışmak içinDatasetChanged() öğesini nasıl bildiririm?
- 15. Delphi - Ben openpicturedialog yürütmek zaman Delphi ile çalışıyorum dizine
- 16. ANTLR ile Delphi çıktısı nasıl üretilir?
- 17. Belirtilen SSID ile bir WiFi otomatik olarak nasıl bağlanır?
- 18. GUID ve Varlık Çerçevesi ile Çalışmak
- 19. ggvis ile çalışmak için etkileşimli yakınlaştırma alamıyorum
- 20. ColdFusion'da işaretleme ile çalışmak için seçeneklerim nelerdir?
- 21. Arduino ile çalışmak için Xcode'u ayarlama
- 22. Eclipse'de sadece klavye ile çalışmak mümkün müdür?
- 23. 2B nesneyi ivmeölçer ile hareket ettirmeye çalışmak
- 24. Sorun Giderme Raylar 3 MySQL ile çalışmak
- 25. ArrayList yöntemini kullanıcı girdisi ile doldurmaya çalışmak
- 26. Django GenericRelation ile çalışmak gerekiyordu prefetch_related mi
- 27. Delphi XE2 Filename ile Tstringlist'i sırala
- 28. Delphi 2010 sanal klavye, CapsLock ile başlıyor?
- 29. Delphi Chromium Embedded - Sayfayı F5 ile yenileyin
- 30. C# kullanarak OrientDB ile çalışmak mümkün mü?
Kullandığınız Delphi sürümünü yüklemek isteyebilirsiniz. – TrueWill