首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> VB.NET >> 正文

TZoCInetChecker:检测网络连接的类

    下面就是那时写的一个类TZoCInetChecker,提供了一个Method,几个Properties,还有几个Events,用起来和上面那个阻塞调用的函数一样方便,当然,它也包含了阻塞方式的检测

方法

    Execute:      调用我就好了,其它的交给我去办

属性
    Busy:         我正忙着呢,还没检测完,一会儿再来
    AccessType:   你希望我怎么连接网络,直接连还是用代理?
    AsynRequest:  同步检测的话我们要有一会儿看不到对方了,呜呜
    UserAgent:    想告诉Web服务器是阿猫还是阿狗在连接?在这里设置就好了
    Proxy:        让我用代理连网络,用哪个代理啊?
    Url:          原来是要检测这个地址能不能访问,保证办到

事件
    OnStart:      开始检测之前我会在这里通知你一声
    OnStatusChange:检测过程中发生什么事我会在这里及时通知你的
    OnComplete:    检测完成了,成功不成功我都会告诉你

{**********************************************************}
{                                                          }
{  TZoCInetChecker Component Version 1.00                  }
{                                                          }
{  Function: Asynchronously Check if a given web page      }
{            can be successfully retreived and feed back   }
{            the user with callback status infomation      }
{                                                          }
{                                                          }
{  This is a freeware. If you made cool changes on it,     }
{  please send them to me.                                 }
{                                                          }
{  Email: eagleboost@msn.com                               }
{  URL: http://www.ZoCsoft.com                             }
{                                                          }
{  History: + New Feature, - Removed, * Modified           }
{                                                          }
{           version 1.00 2005-06-03                        }
{             The first version                            }
{                                                          }
{**********************************************************}


unit ZoCInetChecker;


interface


uses
  Windows, Messages, SysUtils, Classes, WinInet;


const
  INTERNET_STATUS_DETECTING_PROXY       = 80;
{$EXTERNALSYM INTERNET_STATUS_DETECTING_PROXY}
  WM_STATUSCHANGE                       = WM_USER + 200;
  WM_CHECKCOMPLETE                      = WM_USER + 201;


type
  LPINTERNET_ASYNC_RESULT = ^INTERNET_ASYNC_RESULT;
  INTERNET_ASYNC_RESULT = record
    dwResult: DWORD;
    dwError: DWORD;
  end;


  pREQUEST_CONTEXT = ^REQUEST_CONTEXT;
  REQUEST_CONTEXT = record
    hWindow: HWND;                      
    hOpen: HINTERNET;                   //HINTERNET handle created by InternetOpen
  end;


  TOnStatusChangeEvent = procedure(Sender: TObject; StatusCode: Cardinal) of object;
  TOnCompleteEvent = procedure(Sender: TObject; Connected: Boolean) of object;
  TAccessType = (atDirectConnect, atPreConfig, atPreConfigWithNoProxy, atProxy);


  TZoCInetChecker = class(TComponent)
  private
    { Private declarations }
    FUrl: string;
    FAccessType: TAccessType;
    FProxy: string;
    FOnStart: TNotifyEvent;
    FOnStatusChange: TOnStatusChangeEvent;
    FOnComplete: TOnCompleteEvent;
    FBusy: Boolean;
    hOpenUrl, hOpen: HINTERNET;
    FUserAgent: string;
    FWindowHandle: HWnd;
    iscCallback: INTERNET_STATUS_CALLBACK;
    RC: REQUEST_CONTEXT;
    FAsynRequest: Boolean;
    procedure WndProc(var Msg: TMessage);
  protected
    { Protected declarations }
    procedure DoOnStatusChange(StatusCode: Cardinal); dynamic;
  public
    { Public declarations }
    property Busy: Boolean read FBusy write FBusy;
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property AccessType: TAccessType read FAccessType write FAccessType
      default atDirectConnect;
    property AsynRequest: Boolean read FAsynRequest write FAsynRequest
      default True;
    property UserAgent: string read FUserAgent write FUserAgent;
    property Proxy: string read FProxy write FProxy;
    property Url: string read FUrl write FUrl;
    property OnStart: TNotifyEvent read FOnStart write FOnStart;
    property OnStatusChange: TOnStatusChangeEvent read FOnStatusChange write
      FOnStatusChange;
    property OnComplete: TOnCompleteEvent read FOnComplete write FOnComplete;
  end;


procedure Register;
function StatusCode2StatusText(StatusCode: Cardinal): string;


implementation


procedure Register;
begin
  RegisterComponents('ZoC', [TZoCInetChecker]);
end;

 

上一页  [1] [2] [3] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航