当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 存储过程就是两个参数。@id用来传入。@ok 用来传出。 现在我想用asp 看看@ok传出的是什么值。怎么写? 关键是传出的值如何用变量表示。 就像: ss = " execute dbo.mtest @pallid=1,@ok=" & 变量名 set rs = conn.execute(ss) 可是第一句老是不对。 ......
 ·奇怪的问题,关于修改记录    »显示摘要«
    摘要: 文件:edit.aspx 我从表中读出信息 //读一条信息 void showonetypes() { int id=convert.toint32(request["id"]); mysoft.showsoftidtypes(id); string mytypes=mysoft.strtypes; types.text=mytyp......


帮帮兄弟

如何在Delphi中实现实时监控网络连通状态

NO.1   作者: sdzeng

转贴自《Delphi之未经证实葵花宝典》  
  --------------------------------------  
  判断机器是否联网  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      if   GetSystemMetrics(SM_NETWORK)   AND   $01   =   $01   then  
          ShowMessage(Machine   is   attached   to   network)   else  
          ShowMessage(Machine   is   not   attached   to   network);  
  end;  
  -------------------------------------------------  
  检测计算机的   Internet   连接状态  
   
  检测计算机的   Internet   连接状态  
  作者:   940801  
   
  检测计算机是否联网比较简单的做法可以通过一个   Win32   Internet(WinInet)   函数   InternetCheckConnection来实现;  
   
  这个函数的功能是检查是否能够建立   Internet   连接。  
   
  它的实现是在   %SystemRoot%\System32\wininet.dll   中,Delphi   调用声明在   WinInet.pas   中,  
   
  其   API   声明如下:  
   
  BOOL   InternetCheckConnection(  
   
      IN   LPCSTR   lpszUrl,  
   
      IN   DWORD   dwFlags,  
   
      IN   DWORD   dwReserved  
   
  );  
   
  参数的意义是:  
   
  lpszUrl:   需要测试能否建立连接的   URL   地址,可以为空;  
   
  dwFlags:   目前只能是   FLAG_ICC_FORCE_CONNECTION;  
   
  dwReserved:   目前只能为   0。  
   
  调用的说明:  
   
  如果   lpszUrl   是非空的,Windows   从中解析出   Host   名然后   Ping   这个指定的   Host。  
   
  如果   lpszUrl   是空的,并且   WinInet   内部服务器的   database   中有一个关于最近的   Server   的纪录,Windows   就从这条纪录中解析出   Host   名然后   Ping   它。  
   
  如果能够成功的连接返回   True,否则返回   False;  
   
  以下是一个判断当前计算机是否联网的例子:  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
   
  begin  
   
      if   InternetCheckConnection(http://www.yahoo.com/,   1,   0)   then  
   
      edit1.text:=   Connected  
   
      else  
   
      edit1.text:=   Disconnected;  
   
  end;  
   
  通过上述的方法只能检测出当前计算机是否物理联网,即网线是否接好,网卡是否能顺利工作,不能确定是否能够实现获得   Internet   服务,即是否能和   ISP   进行   Internet   连接。  
   
  这时可以通过另一个   Win32   Internet(WinInet)   函数   InternetQueryOption   来检测;  
   
  这个函数的功能是查询指定   Internet   句柄的状态、选项。  
   
  其   API   声明如下:  
   
  BOOL   InternetQueryOption(  
   
      IN   HINTERNET   hInternet,  
   
      IN   DWORD   dwOption,  
   
      OUT   LPVOID   lpBuffer,  
   
      IN   OUT   LPDWORD   lpdwBufferLength  
   
  );  
   
  参数的意义是:  
   
  hInternet:查询对象的   Internet   句柄,  
   
  dwOption:查询的项目;  
   
  lpBuffer:返回的查询结果;  
   
  lpdwBufferLength:查询结果的字节长度;  
   
  查询成功返回   True,否则返回   False;  
   
  我们要查询当前计算机的   Internet   连接状态时可以使用查询项目   INTERNET_OPTION_CONNECTED_STATE,  
   
  得到的   ConnectState   返回值可能是以下值的一个或几个值之和:  
   
  INTERNET_STATE_CONNECTED   :$00000001   连接状态;  
   
  INTERNET_STATE_DISCONNECTED   :$00000002   非连接状态;  
   
  INTERNET_STATE_DISCONNECTED_BY_USER   :$00000010   用户请求的非连接状态  
   
  INTERNET_STATE_IDLE   :$00000100   连接状态,并且空闲  
   
  INTERNET_STATE_BUSY   :$00000200   连接状态,正在响应连接请求  
   
  以下是一个判断当前计算机是否可以获得   Internet   服务的例子:  
   
  function   TForm1.CheckOffline:   boolean;  
   
  var  
   
      ConnectState:   DWORD;  
   
      StateSize:   DWORD;  
   
  begin  
   
      ConnectState:=   0;  
   
      StateSize:=   SizeOf(ConnectState);  
   
      result:=   false;  
   
      if   InternetQueryOption(nil,   INTERNET_OPTION_CONNECTED_STATE,   @ConnectState,   StateSize)   then  
   
      if   (ConnectState   and   INTERNET_STATE_DISCONNECTED)   <>   2   then   result:=   true;  
   
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
   
  begin  
   
      if   CheckOffline   then  
   
      edit1.text:=   Connect   To   ISP  
   
      else  
   
      edit1.text:=   Disconnect   To   ISP;  
   
  end;  
   
  需要说明的是   InternetQueryOption   函数的检测结果只能表明当前的   Internet   设置是可用的,  
   
  并不能表示计算机一定能访问   Internet,例如网线掉了,网卡突然坏了之类的错误就没法检测出来,  
   
  要想检测当前计算机是否能够获得   Internet   服务了必须两个函数结合起来使用。  
   
  以上程序在   Win2000,   Delphi5.0   下调试通过。  
   
  最后要提醒大家注意的是在   uses   中要加上   WinInet。  
   
  对于   Windows   2000   中网络掉线的实时检测,猜想是和底层的中断或者某个   Service   有关,  
   
  但因为本人才疏学浅,一直没能搞懂该怎样做,还请知情的大侠不吝赐教,先在此谢谢您了。  
   
  作者:940801   ,Mail:l940801@yahoo.com  
   
   
   
 


 ·郁闷来发泄一下。    »显示摘要«
    摘要: 这段时间真是郁闷,心神不得安宁。 自己捡过三个手机,一次钱包,全还给别人了,自己的手机却被偷。 放假室友电脑放在我住的房间里,好心借他的电脑的cpu给别人用,结束被烧, 那人陪了一个旧的,室友让我给装上,按风扇时用力了一点,cpu居然坏了。 现在是准备和室友一人出一半的钱,陪个新的给他。真tmd的郁闷,室友大四了 学计算机的cpu也不会装,搞的晚上上玩自习给他装电脑, 那个烂风扇有问题搞的......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE