如何禁止上网和断开网络? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 断开拨号连接 function DisconnectActiveConnection: Boolean;varRasEntry: TRasEntry;EntryInfoSize: Cardinal;DeviceInfoSize: Cardinal;RasGetEntryPropertiesResult: Integer;beginZeroMemory(@RasEntry, SizeOf(TRasEntry));RasEntry.dwSize := SizeOf(TRasEntry);EntryInfoSize := SizeOf(TRasEntry);RasGetEntryPropertiesResult := RasGetEntryProperties(nil,MyActiveEntryName), @RasEntry, EntryInfoSize, nil, DeviceInfoSize);if (RasGetEntryPropertiesResult = 0) thenResult := DisconnectDevice(StrPas(RasEntry.szDeviceName));end; // hangup the default Internet connection.procedure TForm1.Button2Click(Sender: TObject);vardwConnectionTypes: DWORD;begindwConnectionTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN +INTERNET_CONNECTION_PROXY;if InternetGetConnectedState(@dwConnectionTypes, 0) then// connectedInternetAutodialHangup(0);end; 如果你要在自己机器上禁止别人的机器上网,而别人的机器又没有通过你机器代理,那么会比较复杂,需要对TCP/IP协议比较了解,需要在采用监听网络数据包技术,同时需要在IP层上发送伪装数据包来欺骗。推荐几个软件产品给你:AnyView(网络巡警)、AnyWeb,可以限制任何TCP连接方式的上网行为(包括浏览网页、收发邮件、FTP、游戏、多种聊天工具等),但不能阻断UDP(比如QQ,听说网路岗可以,但我安装运行程序老出错,没有试成功), 我的目的只要是禁止在本机上网谢谢了EKIN老兄的方法,由于我目前无法查阅资料,你能告诉我你的过程是干什么的吗?谢谢了 //关闭网络连接//加个定时器,呵呵。function NetCloseAll:boolean;stdcall;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; HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RemoteAccess下的Remote Connection键值表示网络状态。01 00 00 00 ----->在线00 00 00 00 ----->离线但我们修改他,实际上并不影响网络连接。 year2000bug(江南) 是强生,我帮你顶一下!!! 有这样的一个办法。自己定义一个ini文件。在线状态写在ini文件里,自己另外写个监视ini文件变化的进程. 禁止别人还是自己?我有个好办法,嘿嘿用我这个delphi软件,把网关一设,对方IP填成你想要他断网的那个人,点开始就可以了。 http://hrdata.y365.com/sendpacket.rar这是我的局域网攻击程序哦,需要安装winpcap3.0。呵呵。如果你在你自己机器上装一个sygate,可以实现交换环境下的网络嗅探。 to: wuqiu编译时显示没有TRasEntry这个类型to:ekinInternetAutodialHangup(0);无法断开网络to: year2000bug你说的方法太复杂了,我没有尝试。不管如何,谢谢大家! to: year2000bug不知你的函数中,检测状态的语句是什么,和断开链接的语句是什么,它可以断开各种上网方式吗? 采用Winsock2 SPI应该可以实现 北京 长城宽带用户 注意!!!!长城宽带用户 注意!!!!长城宽带用户 注意!!!! ★☆★☆★保证让您的编程周期至少缩短三分之一! 冰天雪地赤身裸体求一SQL语句的写法,应该是属于多表查询吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 怎么实现串口数据的收发(在线等) 关于ADO控件? 老大们,有谁能提供 delphi开发的 防火墙 例子吗?谢谢了 关于TreeView的 日期问题 报表打印出现1899-12-30!!!!请帮我一把。 应该学习什么书籍? 为什么会出现'Control has not parent window'错误 要SOCKET点对点传送的原文件吗?
function DisconnectActiveConnection: Boolean;varRasEntry: TRasEntry;EntryInfoSize: Cardinal;DeviceInfoSize: Cardinal;RasGetEntryPropertiesResult: Integer;beginZeroMemory(@RasEntry, SizeOf(TRasEntry));RasEntry.dwSize := SizeOf(TRasEntry);EntryInfoSize := SizeOf(TRasEntry);RasGetEntryPropertiesResult := RasGetEntryProperties(nil,MyActiveEntryName), @RasEntry, EntryInfoSize, nil, DeviceInfoSize);if (RasGetEntryPropertiesResult = 0) thenResult := DisconnectDevice(StrPas(RasEntry.szDeviceName));end;
谢谢了
EKIN老兄的方法,
由于我目前无法查阅资料,你能告诉我你的过程是干什么的吗?
谢谢了
//加个定时器,呵呵。
function NetCloseAll:boolean;stdcall;
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;
下的Remote Connection键值表示网络状态。
01 00 00 00 ----->在线
00 00 00 00 ----->离线
但我们修改他,实际上并不影响网络连接。
自己定义一个ini文件。在线状态写在ini文件里,自己另外写个监视ini文件变化的进程.
我有个好办法,嘿嘿
用我这个delphi软件,把网关一设,对方IP填成你想要他断网的那个人,点开始就可以了。
这是我的局域网攻击程序哦,需要安装winpcap3.0。呵呵。如果你在你自己机器上装一个sygate,可以实现交换环境下的网络嗅探。
编译时显示没有TRasEntry这个类型
to:ekin
InternetAutodialHangup(0);无法断开网络
to: year2000bug
你说的方法太复杂了,我没有尝试。
不管如何,谢谢大家!
不知你的函数中,检测状态的语句是什么,和断开链接的语句是什么,它可以断开各种上网方式吗?