如何自己做一个禁用网卡启用网卡的程序? 如何自己做一个禁用网卡启用网卡的程序? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //关闭网络连接function NetCloseAll:boolean;const NETBUFF_SIZE=$208;type NET_API_STATUS=DWORD; LPByte=PByte;var dwNetRet :DWORD; i :integer; dwEntries :DWORD; dwTotalEntries :DWORD; szClient :LPWSTR; dwUserName :DWORD; Buff :array[0..NETBUFF_SIZE-1]of byte; Adword :array[0..NETBUFF_SIZE div 4-1] of dword; NetSessionEnum:function ( ServerName:LPSTR; Reserved:DWORD; Buf:LPByte; BufLen:DWORD; ConnectionCount:LPDWORD; ConnectionToltalCount:LPDWORD ):NET_API_STATUS; stdcall; NetSessionDel:function ( ServerName:LPWSTR; UncClientName: LPWSTR ; UserName: dword):NET_API_STATUS; stdcall; LibHandle : THandle;begin Result:=false; try { 加载 DLL } LibHandle := LoadLibrary('svrapi.dll'); try { 如果加载失败,LibHandle = 0.} if LibHandle = 0 then raise Exception.Create('不能加载SVRAPI.DLL'); { DLL 加载成功,取得到 DLL 输出函数的连接然后调用 } @NetSessionEnum := GetProcAddress(LibHandle, 'NetSessionEnum'); @NetSessionDel := GetProcAddress(LibHandle, 'NetSessionDel'); if (@NetSessionEnum = nil)or(@NetSessionDel=nil) then RaiseLastWin32Error { 连接函数失败 } else begin dwNetRet := NetSessionEnum( nil,$32, @Buff, NETBUFF_SIZE, @dwEntries, @dwTotalEntries ); if dwNetRet = 0 then begin Result := true; for i:=0 to dwTotalEntries-1 do begin Move(Buff,Adword,NETBUFF_SIZE); szClient:=LPWSTR(Adword[0]); dwUserName := Adword[2]; dwNetRet := NetSessionDel( nil,szClient,dwUserName); if( dwNetRet <> 0 ) then begin Result := false; break; end; Move(Buff[26],Buff[0],NETBUFF_SIZE-(i+1)*26); end end else Result := false; end; finally FreeLibrary(LibHandle); // Unload the DLL. end; except end;end; 楼上的老兄的方法只能在win95与98能用。win2000及以上的可以直接用NetSessionEnum等API。 请问关于数组类型中调用标识符,请大家看下! 排序问题? 近期急招募短期项目成员(delphi) 高分求救不使用form1,form2。该如何实现form间的数据交换?? 如何取出一个页面中的所胡连接 请大侠们指点迷津,请教编写防火墙的实现思路和相关知识 工作调动问题,心中极其不快!!!送分!! 在DELPHI中调用存储过程 请问PaintBox如何能够自动重绘? 大概介绍的问题 哪有好的压缩及解压缩的控件? 关于adoquery和缓存的问题!在线等!
function NetCloseAll:boolean;
const
NETBUFF_SIZE=$208;
type
NET_API_STATUS=DWORD;
LPByte=PByte;
var
dwNetRet :DWORD;
i :integer;
dwEntries :DWORD;
dwTotalEntries :DWORD;
szClient :LPWSTR;
dwUserName :DWORD;
Buff :array[0..NETBUFF_SIZE-1]of byte;
Adword :array[0..NETBUFF_SIZE div 4-1] of dword;
NetSessionEnum:function ( ServerName:LPSTR;
Reserved:DWORD;
Buf:LPByte;
BufLen:DWORD;
ConnectionCount:LPDWORD;
ConnectionToltalCount:LPDWORD ):NET_API_STATUS;
stdcall; NetSessionDel:function ( ServerName:LPWSTR;
UncClientName: LPWSTR ;
UserName: dword):NET_API_STATUS;
stdcall;
LibHandle : THandle;
begin
Result:=false;
try
{ 加载 DLL }
LibHandle := LoadLibrary('svrapi.dll');
try
{ 如果加载失败,LibHandle = 0.}
if LibHandle = 0 then
raise Exception.Create('不能加载SVRAPI.DLL');
{ DLL 加载成功,取得到 DLL 输出函数的连接然后调用 }
@NetSessionEnum := GetProcAddress(LibHandle, 'NetSessionEnum');
@NetSessionDel := GetProcAddress(LibHandle, 'NetSessionDel'); if (@NetSessionEnum = nil)or(@NetSessionDel=nil) then
RaiseLastWin32Error { 连接函数失败 }
else
begin
dwNetRet := NetSessionEnum( nil,$32, @Buff,
NETBUFF_SIZE, @dwEntries,
@dwTotalEntries );
if dwNetRet = 0 then
begin
Result := true;
for i:=0 to dwTotalEntries-1 do
begin
Move(Buff,Adword,NETBUFF_SIZE);
szClient:=LPWSTR(Adword[0]);
dwUserName := Adword[2];
dwNetRet := NetSessionDel( nil,szClient,dwUserName);
if( dwNetRet <> 0 ) then
begin
Result := false;
break;
end;
Move(Buff[26],Buff[0],NETBUFF_SIZE-(i+1)*26);
end
end
else
Result := false;
end;
finally
FreeLibrary(LibHandle); // Unload the DLL.
end;
except
end;
end;