如题

解决方案 »

  1.   

    断开拨号连接 
    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;
      

  2.   

    // 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; 
      

  3.   

    如果你要在自己机器上禁止别人的机器上网,而别人的机器又没有通过你机器代理,那么会比较复杂,需要对TCP/IP协议比较了解,需要在采用监听网络数据包技术,同时需要在IP层上发送伪装数据包来欺骗。推荐几个软件产品给你:AnyView(网络巡警)、AnyWeb,可以限制任何TCP连接方式的上网行为(包括浏览网页、收发邮件、FTP、游戏、多种聊天工具等),但不能阻断UDP(比如QQ,听说网路岗可以,但我安装运行程序老出错,没有试成功),
      

  4.   

    我的目的只要是禁止在本机上网
    谢谢了
    EKIN老兄的方法,
    由于我目前无法查阅资料,你能告诉我你的过程是干什么的吗?
    谢谢了
      

  5.   

    //关闭网络连接
    //加个定时器,呵呵。
    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;
      

  6.   

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RemoteAccess
    下的Remote Connection键值表示网络状态。
    01 00 00 00        ----->在线
    00 00 00 00        ----->离线
    但我们修改他,实际上并不影响网络连接。
      

  7.   

    year2000bug(江南) 是强生,我帮你顶一下!!!
      

  8.   

    有这样的一个办法。
    自己定义一个ini文件。在线状态写在ini文件里,自己另外写个监视ini文件变化的进程.
      

  9.   

    禁止别人还是自己?
    我有个好办法,嘿嘿
    用我这个delphi软件,把网关一设,对方IP填成你想要他断网的那个人,点开始就可以了。
      

  10.   

    http://hrdata.y365.com/sendpacket.rar
    这是我的局域网攻击程序哦,需要安装winpcap3.0。呵呵。如果你在你自己机器上装一个sygate,可以实现交换环境下的网络嗅探。
      

  11.   

    to: wuqiu
    编译时显示没有TRasEntry这个类型
    to:ekin
    InternetAutodialHangup(0);无法断开网络
    to: year2000bug
    你说的方法太复杂了,我没有尝试。
    不管如何,谢谢大家!
      

  12.   

    to: year2000bug
    不知你的函数中,检测状态的语句是什么,和断开链接的语句是什么,它可以断开各种上网方式吗?
      

  13.   

    采用Winsock2 SPI应该可以实现