Skip to content
The Road to Delphi — Delphi, VCL, VCL Styles, UxTheme and WinAPI

Detecting Wifi Networks Using Delphi Prism.

, , ,

The next code uses the Managed Wifi API, The library uses the Native Wifi API, available since Windows Vista and Windows XP SP2 (in a limited fashion, and only after applying a hotfix provided in KB article 918997). Older versions of Windows are not supported.

Before to compile the code you need to download the library from this location. Build the project “ManagedWifi.csproj” and then add the reference to the source code listed below.

[sourcecode language=”delphi” wraplines=”false”]
namespace DelphiPrismWifidetection;
//Author : Rodrigo Ruz. 2009-09-29
//Shine Your crazy Diamond.

interface

uses
NativeWifi,//You must add the reference to the library ManagedWifi.dll
System.Text;

type
ConsoleApp = class
private
class method GetStringForSSID(ssid : Wlan.Dot11Ssid ) : string;
class method GetStringFornumberOfBssids (numberOfBssids : Int32 ) : string;
public
class method Main;
end;

implementation

class method ConsoleApp.GetStringForSSID(ssid : Wlan.Dot11Ssid ) : string;
begin
Result:= Encoding.ASCII.GetString( ssid.SSID, 0, Int32( ssid.SSIDLength) );
end;

class method ConsoleApp.GetStringFornumberOfBssids (numberOfBssids : Int32 ) : string;
begin
case numberOfBssids of
1: Result:=’infrastructure’;
2: Result:=’independent’;
3: Result:=’any’;
else
Result:=’Unknow’;
end; // case
end;

class method ConsoleApp.Main;
begin
var client : WlanClient := new WlanClient();
for each wlanIface in client.Interfaces do
begin
var networks : Array of Wlan.WlanAvailableNetwork := wlanIface.GetAvailableNetworkList(NativeWifi.Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles);
for each network in networks do
begin
// for more info goto http://msdn.microsoft.com/en-us/library/ms707403%28VS.85%29.aspx
Console.WriteLine( "┌—————————————————————¬");
Console.WriteLine( "|Network Detected {0,-40} |", GetStringForSSID(network.dot11Ssid));
Console.WriteLine( "├—————————————————————┤");
Console.WriteLine( "| CipherAlgorithm {0,-40} |", network.dot11DefaultCipherAlgorithm.ToString());
Console.WriteLine( "| DefaultAuthAlgorithm {0,-40} |", network.dot11DefaultAuthAlgorithm.ToString());
Console.WriteLine( "| dot11Ssid {0,-40} |", network.dot11Ssid.ToString());
Console.WriteLine( "| networkConnectable {0,-40} |", network.networkConnectable.ToString());
if not network.networkConnectable then
Console.WriteLine( "| NotConnectableReason {0,-40} |", network.wlanNotConnectableReason.ToString());
Console.WriteLine( "| morePhyTypes {0,-40} |", network.morePhyTypes.ToString());
Console.WriteLine( "| (BSS) network type {0,-40} |", GetStringFornumberOfBssids(network.numberOfBssids));
Console.WriteLine( "| profileName {0,-40} |", network.profileName.ToString());
Console.WriteLine( "| securityEnabled {0,-40} |", network.securityEnabled.ToString());
Console.WriteLine( "| wlanSignalQuality {0,-40} |", network.wlanSignalQuality.ToString());
Console.WriteLine( "└—————————————————————┘");
end;

end;
Console.ReadLine();
end;

end.
[/sourcecode]

and the result is

Update

Download the full source code from here

Bye.

13 responses

  1. Danis Colifer Avatar
    Danis Colifer

    I followed the guideline you gave but it dint work.. what could i have done wrong?

  2. Danis Colifer Avatar
    Danis Colifer

    Please could you send me your already made project via email? pls

    1. Danis, check the post update for download the full sourcecode.

  3. Danis Colifer Avatar
    Danis Colifer

    I downloaded the source code but i encountered an error “Cannot open because of its project type(.oxygene) is not supported is this version of Visual Studio”. Please what version of visual studio did you use? or which software did you use if its not visual studio.

    1. Danis, the project was compiled using Visual Studio 2008 (Version 9.0.30729.1 SP) and Delphi Prism 3.0.21.661

  4. Danis Colifer Avatar
    Danis Colifer

    Okay but how do i use is will it run on vista?

    1. Yes , this code was tested in Windows Vista and Windows 7.

  5. Rodrigo, first at all, thanks for posting the wifi code. Can you please update the download link? It seems to be that it is not longer available. Thanks!

    1. The link was updated.

  6. there was a similar version you made that worked in windows xp. i forget the exact link. but after a reinstall of xp home, and reruning this app, (no change in app) i am no longer able to see wife networks. did i install something inititially when i was compiling your other project that i need to reinstall ?

  7. i found the link. this is the project that i compiled under delphi 6. the app does not work on my xp home desk pc, but does work on my laptops.

    http://theroadtodelphi.wordpress.com/2009/10/07/detecting-wifi-networks-using-delphi/

  8. i miss being able to use that app. i made changes to it to run in window instead of dos console. looks better. but i can only use it on laptops and other pc’s. i removed something when i reinstalled windows xp home, but i would not know what it is. anyway. i’m unable to pass the Genuine Windows test, so it won’t let me download the “WindowsXP-KB918997-v6-x86-ENU.exe” file. if that is the file i need (and to install) to get this project working, is there another place i can download it from ?

Leave a Reply