网上查了资料,说先得到 网卡名 再用PacketOpenAdapter打开网卡我用
type
PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = Record // IP_ADAPTER_INFO
Next : PIPAdapterInfo;
ComboIndex : Integer;
AdapterName : Array[0..256+3] of Char;
Description : Array[0..128+3] of Char;
AddressLength : Integer;
Address : Array[1..8] of Byte;
End;AI:PIPAdapterInfo;GetAdaptersInfo(AI,Size);得到了网卡名 是{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a};
但是到这句lpAdapter := PacketOpenAdapter('{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a}');就报错(lpAdapter:Padapter;):Debugger Exception Notification
Project XXX raised exception class EAccessViolation with message 'AccessViolation at adress 00000000.Read of address 00000000'.Press stopped.Use step or run to continue.PacketOpenAdapter中参数换成\Device\NPF_{E00872C1-37C0-47CE-8472-313A5A23F896}报同样错
我不知道PacketOpenAdapter中的参数应该怎么填,不知道PacketOpenAdapter用法是否正确,请大家指点下,最好能有相关例子贴一下,先非常感谢下。
type
PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = Record // IP_ADAPTER_INFO
Next : PIPAdapterInfo;
ComboIndex : Integer;
AdapterName : Array[0..256+3] of Char;
Description : Array[0..128+3] of Char;
AddressLength : Integer;
Address : Array[1..8] of Byte;
End;AI:PIPAdapterInfo;GetAdaptersInfo(AI,Size);得到了网卡名 是{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a};
但是到这句lpAdapter := PacketOpenAdapter('{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a}');就报错(lpAdapter:Padapter;):Debugger Exception Notification
Project XXX raised exception class EAccessViolation with message 'AccessViolation at adress 00000000.Read of address 00000000'.Press stopped.Use step or run to continue.PacketOpenAdapter中参数换成\Device\NPF_{E00872C1-37C0-47CE-8472-313A5A23F896}报同样错
我不知道PacketOpenAdapter中的参数应该怎么填,不知道PacketOpenAdapter用法是否正确,请大家指点下,最好能有相关例子贴一下,先非常感谢下。
解决方案 »
- delphi idhttp提交12306网站总提示:请不要重复提交订单的处理
- 怎样通过PID取得进程的路径和所用内存大小,怎样知道登陆系统用户的权限
- 如果动态分配一个指向结构体的数组(aa: array of P***)?(较难、少见)
- 请问:连接一个数据库,如果连接不上,我如何得知连接不上的原因?
- 谁有HTMLHLP.Pas单元,给我?
- 数字转换的问题,请各位大侠帮一下忙。
- 三喜临门,散分3000庆祝(之十)
- Error creating cursor handle是什么意思啊?
- 剪贴版的大小有限制吗?
- 高手都哪里去了?
- delphi远程数据库连接问题
- 【求助】如何查找字符串中某个字符的数量
原型是:function PacketOpenAdapter(AdapterName : PWideChar) : PAdapter; cdecl;
你调用应该var
_RetNet:PAdapter;getmem(_RetNet,sizeof(TAdapter));
try
_RetNet:= PacketOpenAdapter('{f9837f2c-4b57-4bfa-b06a-19e63c75ae1a}'); finally
FreeMem(_RetNet,sizeof(TAdapter));
end;
真搞不懂现在学程序的人,最基本的基础都没打好.
按照你的方法,报相同的错我的提问没水平,令你困扰了,8好意思。另外我是自学D的,基础不好我知道,走一步算一步了。只要你能解决我的问题,就万分感谢了
Project XXX raised exception class EAccessViolation with message 'AccessViolation at adress 00000000.Read of address 00000000'.Press stopped.Use step or run to continue.
lpadapter=PacketOpenAdapter("{DA9CCA96-3199-4DC7-9241-CCC3921C8DA7}"); if(!lpadapter || (lpadapter->hFile==INVALID_HANDLE_VALUE))
{
printf("PacketOpenAdapter Error: %d\n",GetLastError());
return -1;
}
运行后显示PacketOpenAdapter Error:20 请问这是为什么。谢谢~