delphi2010调用wlan api的问题
在delphi2010里调用wlan的api函数,网上没找到现成的声明,自己翻译了一部分,调用函数不报错,函数返回结果也对。但传入的参数返回结果不对。
各位帮忙看看。
以下是部分声明
以下是调用
WlanEnumInterfaces的参数pList.InterfaceInfo.InterfaceGuid不对,我用网上下的一个c#的代码调试了,得到的是正确的。
各位帮忙看看。
以下是部分声明
_WLAN_INTERFACE_STATE = (
wlan_interface_state_not_ready = 0,
wlan_interface_state_connected = 1,
wlan_interface_state_ad_hoc_network_formed = 2,
wlan_interface_state_disconnecting = 3,
wlan_interface_state_disconnected = 4,
wlan_interface_state_associating = 5,
wlan_interface_state_discovering = 6,
wlan_interface_state_authenticating = 7
);
//} WLAN_INTERFACE_STATE, *PWLAN_INTERFACE_STATE;
WLAN_INTERFACE_STATE = _WLAN_INTERFACE_STATE;
PWLAN_INTERFACE_STATE = ^_WLAN_INTERFACE_STATE;
_WLAN_INTERFACE_INFO = packed record
InterfaceGuid: TGUID;
strInterfaceDescription: array[0..255] of WideChar;
isState: WLAN_INTERFACE_STATE;
end;
//} WLAN_INTERFACE_INFO, *PWLAN_INTERFACE_INFO;
WLAN_INTERFACE_INFO = _WLAN_INTERFACE_INFO;
PWLAN_INTERFACE_INFO = ^_WLAN_INTERFACE_INFO;
_WLAN_INTERFACE_INFO_LIST = packed record
dwNumberOfItems: DWORD;
dwIndex: DWORD;
InterfaceInfo: PWLAN_INTERFACE_INFO;
end;
//} WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
WLAN_INTERFACE_INFO_LIST = _WLAN_INTERFACE_INFO_LIST;
PWLAN_INTERFACE_INFO_LIST = ^_WLAN_INTERFACE_INFO_LIST;
PPWLAN_INTERFACE_INFO_LIST = ^PWLAN_INTERFACE_INFO_LIST;
function WlanOpenHandle(dwClientVersion: DWORD; pReserved: Pointer;
pdwNegotiatedVersion: PDWORD; phClientHandle: PHandle
): DWORD; stdcall;
function WlanCloseHandle(hClientHandle: THandle;
pReserved: Pointer): DWORD; stdcall;
function WlanSetProfile(hClientHandle: THandle; const pInterfaceGuid: PGUID;
dwFlags: DWORD; strProfileXml: LPCWSTR; strAllUserProfileSecurity: LPCWSTR;
bOverwrite: BOOL; pReserved: Pointer; var pdwReasonCode: DWORD
): DWORD; stdcall;
function WlanEnumInterfaces(hClientHandle: THandle; pReserved: Pointer;
ppInterfaceList: PPWLAN_INTERFACE_INFO_LIST): DWORD; stdcall;
function WlanGetProfile(hClientHandle: THandle;
const pInterfaceGuid: PGUID; strProfileName: LPCWSTR;
pReserved: Pointer; var pstrProfileXml: PWideChar;
var pdwFlags: DWORD; var pdwGrantedAccess: DWORD): DWORD; stdcall;
以下是调用
WlanEnumInterfaces的参数pList.InterfaceInfo.InterfaceGuid不对,我用网上下的一个c#的代码调试了,得到的是正确的。
var
dwVer, dwRet, dwFlag, dwAccess: DWORD;
phClient: THandle;
pList: PWLAN_INTERFACE_INFO_LIST;
pInfo: WLAN_INTERFACE_INFO;
i: Integer;
profile: PWideChar;
begin
dwRet := WlanOpenHandle(1, nil, @dwVer, @phClient);
if dwRet <> ERROR_SUCCESS then
Exit;
pList := nil;
dwRet := WlanEnumInterfaces(phClient, nil, @pList);
if dwRet <> ERROR_SUCCESS then
begin
OutputDebugString(PChar(IntToStr(dwRet)));
Exit;
end;
for i := 0 to pList.dwNumberOfItems - 1 do
begin
pInfo := pList.InterfaceInfo^;
lst1.Items.Add(GUIDToString(pInfo.InterfaceGuid));
dwFlag := 0;
dwAccess := 0;
profile := nil;
dwRet := WlanGetProfile(phClient, @pInfo.InterfaceGuid, 'vlan', nil,
profile, dwFlag, dwAccess);
if dwRet = ERROR_SUCCESS then
begin
lst1.Items.Add(profile);
end;
Inc(pList.InterfaceInfo);
end;
WlanCloseHandle(phClient, nil);
...全文
相关推荐
WlanAPI_wlanapi_wifi_delphiwifescaner_
要使用WLAN API,开发者需要在Delphi项目中引入相应的类型定义和函数调用。
Delphi 12.3控件之WlanAPI-master.zip
对于需要开发相关功能的Delphi开发者而言,这些API的重要性不言而喻。然而,直接使用Windows的原生API可能会涉及到较为复杂的底层调用和数据结构处理,这对于某些开发人员来说可能会是一个挑战。
xe10-fmx获取wifi信息
总结,获取WiFi信息在XE10和FMX环境中涉及对不同操作系统API的调用。通过正确地封装和适配,我们可以创建跨平台的应用程序,方便地获取和展示WiFi状态。
fengmian123
fengmian123
QYR-18900-2026-2032全球与中国智能旋转导向钻井系统市场现状及未来发展趋势 Sample-shijunzhong.docx
QYR-18900-2026-2032全球与中国智能旋转导向钻井系统市场现状及未来发展趋势 Sample-shijunzhong.docx


Windows SDK/API
