【发布时间】:2012-02-18 23:00:27
【问题描述】:
我正在尝试在 delphi 上使用来自 Windows API 的函数,用于 Windows Wlanapi.dll(本机 WIFI API)的函数
DWORD WINAPI WlanOpenHandle(
__in DWORD dwClientVersion,
__reserved PVOID pReserved,
__out PDWORD pdwNegotiatedVersion,
__out PHANDLE phClientHandle
);
WlanHostedNetworkQueryProperty
DWORD WINAPI WlanHostedNetworkQueryProperty(
__in HANDLE hClientHandle,
__in WLAN_HOSTED_NETWORK_OPCODE OpCode,
__out PDWORD pdwDataSize,
__out PVOID *ppvData,
__out PWLAN_OPCODE_VALUE_TYPE *pWlanOpcodeValueType,
__reserved PVOID pvReserved
);
我尝试使用这个功能和其他几个小时,阅读 MSDN 参考资料和其他网站,但我就是无法正常工作。
我的尝试
type
TWlanOpenHandle = function( dwClientVersion:DWORD;
pReserved:Pointer;
pdwNegotiatedVersion:PDWORD;
phClientHandle:PHANDLE
):DWORD; stdcall;
function apiWlanOpenHandle( dwClientVersion:DWORD;
pReserved:Pointer;
pdwNegotiatedVersion:PDWORD;
phClientHandle:PHANDLE
):DWORD;
implementation
function apiWlanOpenHandle ( dwClientVersion:DWORD; pReserved:Pointer; pdwNegotiatedVersion:PDWORD; phClientHandle:PHANDLE ):DWORD;
var
WlanOpenHandle: TWlanOpenHandle;
DLL: Cardinal;
begin
DLL:=LoadLibrary('Wlanapi.dll');
WlanOpenHandle := GetProcAddress(DLL, 'WlanOpenHandle');
if Assigned(WlanOpenHandle) then
begin
WlanOpenHandle(dwClientVersion, pReserved, pdwNegotiatedVersion, phClientHandle);
end
else begin
ShowMessage('Function not found');
end;
end;
我正在尝试翻译这个API,看起来工作量很大,而且我只是delphi的初学者,我在网上阅读了很多东西,我该如何处理这个OpCode参数,似乎带有常量和 PWLAN_OPCODE_VALUE_TYPE 的 C 结构?
http://msdn.microsoft.com/en-us/library/windows/desktop/dd439502(v=vs.85).aspx
【问题讨论】:
-
您到底遇到了什么问题?您展示了加载 DLL 函数的代码,而不是尝试实际使用它的代码。
-
为什么要重新发明轮子。已经完成:theroadtodelphi.wordpress.com/2009/10/07/…
-
@WarrenP 工作会少很多,但这是过时的,我需要的功能丢失了,WlanHostedNetwork ...如果你知道 Windows 7 或 2008 的这个库,请告诉我,谢谢还是你。
-
特别是:你的 OpCode 参数是枚举类型的,但是不要忘记设置 $MIN_ENUM_SIZE 让它占据一个完整的 DWORD