关于网卡的一些信息 请问 delphi下 如何获取 网卡的持续连接时间 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查到要用 RasGetConnectionStatistics api函数,具体的你再找找吧 Use Nb30//TADAPTERSTATUS 里的duration应该就是连续连接时间,参考获取MAC地址(就是TADAPTERSTATUS 的adapter_address)的方法,来获取duration,没成功我获得的都是0,不知道怎么回事function TForm1.NBGetAdapterAddress(a: integer): string; //a指定多个网卡适配器中的哪一个0,1,2... var NCB: TNCB; // Netbios control block file://NetBios控制块 ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取网卡状态 LANAENUM: TLANAENUM; // Netbios lana i: Integer; // Temporary work value//临时变量 cRC: Char; // Netbios return code//NetBios返回值 strTemp: string; // Temporary string//临时变量 begin // Initialize Result := ''; try // Zero control blocl ZeroMemory(@NCB, SizeOf(NCB)); // Issue enum command NCB.ncb_command := Chr(NCBENUM); cRC := NetBios(@NCB); // Reissue enum command NCB.ncb_buffer := @LANAENUM; NCB.ncb_length := SizeOf(LANAENUM); cRC := NetBios(@NCB); if Ord(cRC) <> 0 then exit; // Reset adapter ZeroMemory(@NCB, SizeOf(NCB)); NCB.ncb_command := Chr(NCBRESET); NCB.ncb_lana_num := LANAENUM.lana[a]; cRC := NetBios(@NCB); if Ord(cRC) <> 0 then exit; // Get adapter address ZeroMemory(@NCB, SizeOf(NCB)); NCB.ncb_command := Chr(NCBASTAT); NCB.ncb_lana_num := LANAENUM.lana[a]; StrPCopy(NCB.ncb_callname, '*'); NCB.ncb_buffer := @ADAPTER; NCB.ncb_length := SizeOf(ADAPTER); cRC := NetBios(@NCB); // Convert it to string strTemp := ''; for i := 0 to 5 do strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[i]), 2); //ADAPTER.duration;我得到的总是0,不知何故 Result := strTemp; finally end; end; 自己動手試試看:///取MAC(非集成網卡):function NBGetAdapterAddress(a: Integer): string;varNCB: TNCB; // Netbios control block //NetBios控制塊ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網卡狀態LANAENUM: TLANAENUM; // Netbios lanaintIdx: Integer; // Temporary work value//臨時變數cRC: Char; // Netbios return code//NetBios返回值strTemp: string; // Temporary string//臨時變數begin// InitializeResult := '';try // Zero control blocl ZeroMemory(@NCB, SizeOf(NCB)); // Issue enum command NCB.ncb_command := Chr(NCBENUM); cRC := NetBios(@NCB); // Reissue enum command NCB.ncb_buffer := @LANAENUM; NCB.ncb_length := SizeOf(LANAENUM); cRC := NetBios(@NCB); if ord(cRC) <> 0 then exit; // Reset adapter ZeroMemory(@NCB, SizeOf(NCB)); NCB.ncb_command := Chr(NCBRESET); NCB.ncb_lana_num := LANAENUM.lana[a]; cRC := NetBios(@NCB); if ord(cRC) <> 0 then exit; // Get adapter address ZeroMemory(@NCB, SizeOf(NCB)); NCB.ncb_command := Chr(NCBASTAT); NCB.ncb_lana_num := LANAENUM.lana[a]; StrPCopy(NCB.ncb_callname, '*'); NCB.ncb_buffer := @ADAPTER; NCB.ncb_length := SizeOf(ADAPTER); cRC := NetBios(@NCB); // Convert it to string strTemp := ''; for intIdx := 0 to 5 do strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2); Result := strTemp;finallyend;end;//==========================================================================//取MAC位址(集成網卡和非集成網卡):function Getmac:string;varncb : TNCB;s:string;adapt : TASTAT;lanaEnum : TLanaEnum;i, j, m : integer;strPart, strMac : string;beginFillChar(ncb, SizeOf(TNCB), 0);ncb.ncb_command := Char(NCBEnum);ncb.ncb_buffer := PChar(@lanaEnum);ncb.ncb_length := SizeOf(TLanaEnum);s:=Netbios(@ncb);for i := 0 to integer(lanaEnum.length)-1 dobegin FillChar(ncb, SizeOf(TNCB), 0); ncb.ncb_command := Char(NCBReset); ncb.ncb_lana_num := lanaEnum.lana[i]; Netbios(@ncb); Netbios(@ncb); FillChar(ncb, SizeOf(TNCB), 0); ncb.ncb_command := Chr(NCBAstat); ncb.ncb_lana_num := lanaEnum.lana[i]; ncb.ncb_callname := '* '; ncb.ncb_buffer := PChar(@adapt); ncb.ncb_length := SizeOf(TASTAT); m:=0; if (Win32Platform = VER_PLATFORM_WIN32_NT) then m:=1; if m=1 then begin if Netbios(@ncb) = Chr(0) then strMac := ''; for j := 0 to 5 do begin strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2); strMac := strMac + strPart + '-'; end; SetLength(strMac, Length(strMac)-1); end;if m=0 then if Netbios(@ncb) <> Chr(0) then begin strMac := ''; for j := 0 to 5 do begin strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2); strMac := strMac + strPart + '-'; end; SetLength(strMac, Length(strMac)-1); end;end;result:=strmac;end;function PartitionString(StrV,PrtSymbol: string): TStringList;variTemp: integer;beginresult := TStringList.Create;iTemp := pos(PrtSymbol,StrV);while iTemp>0 do begin if iTemp>1 then result.Append(copy(StrV,1,iTemp-1)); delete(StrV,1,iTemp+length(PrtSymbol)-1); iTemp := pos(PrtSymbol,StrV);end;if Strv<>'' then result.Append(StrV);end;function MacStr():String;varStr:TStrings;i:Integer;MacStr:String;beginMacStr:='';Str:=TStringList.Create;Str:=PartitionString(Getmac,'-');for i:=0 to Str.Count-1 do MacStr:=MacStr+Str[i];Result:=MacStr;end;//==============================================//調用示例procedure TForm1.Button1Click(Sender: TObject);beginEdit3.Text:=strpas(GetIdeSerialNumber);//取硬碟號Edit2.text:=GetCPUIDStr;//CPU系列號edit4.Text:=NBGetAdapterAddress(12);//非集成網卡Edit1.text:=MacStr;//集成和非集成網卡end;通過ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網卡狀態取得網卡的狀態(可知網卡的連接狀態)可做一個標識status,然後根據status得到持續連接時間... DELPHI控件PDF文件问题 DELPHI界面嵌入其他软件用什么控件? delphi调用VC的动态库的问题啊!!!!! 差点忘了今天是自己的生日了,散分庆祝下 如何把剪贴板里的BMP图片转换成JPG图片并压缩 RZRichEdit中为什么有时候会出现乱码? 小问题,100分,再线等待,谢谢. 关于TBlobField字段的存取?请教高手!!1 十万火急,通过DBGRID对ClientDataSet进行数据更新时的问题!!!!! 哪位有关于把图标等文件转换为RCDATA的编译器? iw控件如何弹出模式对话框? icmp 发包的时间 和 接收包的时间
//TADAPTERSTATUS 里的duration应该就是连续连接时间,参考获取MAC地址(就是TADAPTERSTATUS 的adapter_address)的方法,来获取duration,没成功我获得的都是0,不知道怎么回事function TForm1.NBGetAdapterAddress(a: integer): string;
//a指定多个网卡适配器中的哪一个0,1,2...
var
NCB: TNCB; // Netbios control block file://NetBios控制块
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取网卡状态
LANAENUM: TLANAENUM; // Netbios lana
i: Integer; // Temporary work value//临时变量
cRC: Char; // Netbios return code//NetBios返回值
strTemp: string; // Temporary string//临时变量 begin
// Initialize
Result := ''; try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB)); // Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB); // Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
if Ord(cRC) <> 0 then
exit; // Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
if Ord(cRC) <> 0 then
exit; // Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB); // Convert it to string
strTemp := '';
for i := 0 to 5 do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[i]), 2);
//ADAPTER.duration;我得到的总是0,不知何故
Result := strTemp;
finally
end; end;
///取MAC(非集成網卡):function NBGetAdapterAddress(a: Integer): string;
var
NCB: TNCB; // Netbios control block //NetBios控制塊
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網卡狀態
LANAENUM: TLANAENUM; // Netbios lana
intIdx: Integer; // Temporary work value//臨時變數
cRC: Char; // Netbios return code//NetBios返回值
strTemp: string; // Temporary string//臨時變數
begin
// Initialize
Result := '';
try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB));
// Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB);
// Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
if ord(cRC) <> 0 then
exit;
// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
if ord(cRC) <> 0 then
exit;
// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
// Convert it to string
strTemp := '';
for intIdx := 0 to 5 do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2);
Result := strTemp;
finally
end;
end;
//==========================================================================
//取MAC位址(集成網卡和非集成網卡):function Getmac:string;
var
ncb : TNCB;
s:string;
adapt : TASTAT;
lanaEnum : TLanaEnum;
i, j, m : integer;
strPart, strMac : string;
begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBEnum);
ncb.ncb_buffer := PChar(@lanaEnum);
ncb.ncb_length := SizeOf(TLanaEnum);
s:=Netbios(@ncb);
for i := 0 to integer(lanaEnum.length)-1 do
begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBReset);
ncb.ncb_lana_num := lanaEnum.lana[i];
Netbios(@ncb);
Netbios(@ncb);
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Chr(NCBAstat);
ncb.ncb_lana_num := lanaEnum.lana[i];
ncb.ncb_callname := '* ';
ncb.ncb_buffer := PChar(@adapt);
ncb.ncb_length := SizeOf(TASTAT);
m:=0;
if (Win32Platform = VER_PLATFORM_WIN32_NT) then
m:=1;
if m=1 then
begin
if Netbios(@ncb) = Chr(0) then
strMac := '';
for j := 0 to 5 do
begin
strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
if m=0 then
if Netbios(@ncb) <> Chr(0) then
begin
strMac := '';
for j := 0 to 5 do
begin
strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
end;
result:=strmac;
end;function PartitionString(StrV,PrtSymbol: string): TStringList;
var
iTemp: integer;
begin
result := TStringList.Create;
iTemp := pos(PrtSymbol,StrV);
while iTemp>0 do begin
if iTemp>1 then result.Append(copy(StrV,1,iTemp-1));
delete(StrV,1,iTemp+length(PrtSymbol)-1);
iTemp := pos(PrtSymbol,StrV);
end;
if Strv<>'' then result.Append(StrV);
end;function MacStr():String;
var
Str:TStrings;
i:Integer;
MacStr:String;
begin
MacStr:='';
Str:=TStringList.Create;
Str:=PartitionString(Getmac,'-');
for i:=0 to Str.Count-1 do
MacStr:=MacStr+Str[i];
Result:=MacStr;
end;//==============================================
//調用示例
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=strpas(GetIdeSerialNumber);//取硬碟號
Edit2.text:=GetCPUIDStr;//CPU系列號
edit4.Text:=NBGetAdapterAddress(12);//非集成網卡
Edit1.text:=MacStr;//集成和非集成網卡end;
通過ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網卡狀態
取得網卡的狀態(可知網卡的連接狀態)可做一個標識status,然後根據status得到持續連接時間...