救命啊,人都搞憔悴了!

vbFly 2002-12-18 07:46:20
怎么实现象WIN2000的网络连接图标那样,一但网线有变化就能够立刻知道。我在一个线程里用ADOCONNECTION这么做:
try
if ADOConnection.Connect=false then
ADOConnection.open;
net:=true;
except
ADOConnection.close;
net:=false;
end;
当在网络未连接时发现一个问题,脱网时间很短时比较正常,当时间一长了,ADOConnection.Connect居然为真,不知道为什么,是ODBC的原因吗?
...全文
29 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbFly 2002-12-19
  • 打赏
  • 举报
回复
应该用网络状态监测函数和一个timmer控件,隔一段时间检查一下是否断线
我推荐一个控件包RainXP,模例XP界面,很美!!!上面有一个监测网络状态的控件。

哪里有下的?不大话发给我也行呀fly_yue@163.com
vbFly 2002-12-19
  • 打赏
  • 举报
回复
{=================================================================
功 能: 检测机器是否登入网络
参 数: 无
返回值: 成功: True 失败: False
备 注:
版 本:
1.0 2002/10/03 09:55:00
=================================================================}
Function CheckMacAttachNet: Boolean;
begin
Result := False;
if GetSystemMetrics(SM_NETWORK) <> 0 then
Result := True;
end;
大侠,你这个函数是怎么用的,无论怎么都返回TRUE,没什么作用啊
songdan2002 2002-12-19
  • 打赏
  • 举报
回复
发了
songdan2002 2002-12-19
  • 打赏
  • 举报
回复
implementation

{=================================================================
功 能: 检测机器是否登入网络
参 数: 无
返回值: 成功: True 失败: False
备 注:
版 本:
1.0 2002/10/03 09:55:00
=================================================================}
Function CheckMacAttachNet: Boolean;
begin
Result := False;
if GetSystemMetrics(SM_NETWORK) <> 0 then
Result := True;
end;

{=================================================================
功 能: 返回本机的局域网Ip地址
参 数: 无
返回值: 成功: True, 并填充LocalIp 失败: False
备 注:
版 本:
1.0 2002/10/02 21:05:00
=================================================================}
function GetLocalIP(var LocalIp: string): Boolean;
var
HostEnt: PHostEnt;
Ip: string;
addr: pchar;
Buffer: array [0..63] of char;
GInitData: TWSADATA;
begin
Result := False;
try
WSAStartup(2, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
HostEnt := GetHostByName(buffer);
if HostEnt = nil then Exit;
addr := HostEnt^.h_addr_list^;
ip := Format('%d.%d.%d.%d', [byte(addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
LocalIp := Ip;
Result := True;
finally
WSACleanup;
end;
end;

{=================================================================
功 能: 通过Ip返回机器名
参 数:
IpAddr: 想要得到名字的Ip
返回值: 成功: 机器名 失败: ''
备 注:
inet_addr function converts a string containing an Internet
Protocol dotted address into an in_addr.
版 本:
1.0 2002/10/02 22:09:00
=================================================================}
function GetNameByIPAddr(IPAddr : String;var MacName:String): Boolean;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
Result := False;
if IpAddr = '' then exit;
try
WSAStartup(2, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <> nil then
MacName := StrPas(Hostent^.h_name);
Result := True;
finally
WSACleanup;
end;
end;

songdan2002 2002-12-19
  • 打赏
  • 举报
回复
zsy_good (只要坚定不移的走下去,那一定会成功) 大侠的网络函数大公开

我借花献佛:{=========================================================================
功 能: 网络函数库
时 间: 2002/10/02
版 本: 1.0
备 注: 没有事情干,抄抄写写整理了一些网络函数供大家使用。
希望大家能继续补充
=========================================================================}
unit Net;

interface
uses
SysUtils
,Windows
,dialogs
,winsock
,Classes
,ComObj
,WinInet;

//得到本机的局域网Ip地址
Function GetLocalIp(var LocalIp:string): Boolean;
//通过Ip返回机器名
Function GetNameByIPAddr(IPAddr: string; var MacName: string): Boolean ;
//获取网络中SQLServer列表
Function GetSQLServerList(var List: Tstringlist): Boolean;
//获取网络中的所有网络类型
Function GetNetList(var List: Tstringlist): Boolean;
//获取网络中的工作组
Function GetGroupList(var List: TStringList): Boolean;
//获取工作组中所有计算机
Function GetUsers(GroupName: string; var List: TStringList): Boolean;
//获取网络中的资源
Function GetUserResource(IpAddr: string; var List: TStringList): Boolean;
//映射网络驱动器
Function NetAddConnection(NetPath: Pchar; PassWord: Pchar;LocalPath: Pchar): Boolean;
//检测网络状态
Function CheckNet(IpAddr:string): Boolean;
//检测机器是否登入网络
Function CheckMacAttachNet: Boolean;

//判断Ip协议有没有安装 这个函数有问题
Function IsIPInstalled : boolean;
//检测机器是否上网
Function InternetConnected: Boolean;
songdan2002 2002-12-19
  • 打赏
  • 举报
回复
应该用网络状态监测函数和一个timmer控件,隔一段时间检查一下是否断线
我推荐一个控件包RainXP,模例XP界面,很美!!!上面有一个监测网络状态的控件。
vbFly 2002-12-18
  • 打赏
  • 举报
回复
csdn真是人去楼空了
andyworld 2002-12-18
  • 打赏
  • 举报
回复
不应该调用这个控件……

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧