| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1274 人关注过本帖
标题:如何检测电脑是否连上Internet
只看楼主 加入收藏
LSJYLP
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-2
收藏
 问题点数:0 回复次数:2 
如何检测电脑是否连上Internet
我从网上找了一个程序用于检测电脑是否连上Internet,但为什么总是显示电脑已连接?程序如下,请高人指点:
        HINSTANCE m_hDll;
        m_hDll=LoadLibrary("c:\\windows\\system32\\url.dll");
    if(m_hDll==NULL)
        AfxMessageBox("url.dll载入失败");
        bool (_stdcall *NetConnect)(int);
    FARPROC faddr=GetProcAddress(m_hDll,"InetIsOffline");
    if(faddr==NULL)
           AfxMessageBox("InetIsOffline调用失败");
        NetConnect=(bool(__stdcall *)(int))faddr;
    if(NetConnect(0))
        AfxMessageBox("网络未连接");
    else
        AfxMessageBox("网络已连接");
    FreeLibrary(m_hDll);
搜索更多相关主题的帖子: windows Internet hDll 
2008-04-02 10:58
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
程序内部调用ping一下就OK,给个代码给你看


char szFetCmd[] = "ping www.baidu.com";  //这里为命令

//初始化返回MAC地址缓冲区
SECURITY_ATTRIBUTES sa;
HANDLE hReadPipe,hWritePipe;     
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
    
//创建管道
BOOL bret = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0);
if(!bret)
{
    //创建失败了,,,
}
    
//控制命令行窗口信息
STARTUPINFO si;
//返回进程信息
 PROCESS_INFORMATION pi;
    
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWritePipe;
si.hStdOutput = hWritePipe;
si.wShowWindow = SW_HIDE; //隐藏命令行窗口
si.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    
//创建获取命令行进程
bret = CreateProcess(NULL,szFetCmd,NULL,NULL,TRUE,0,NULL,
        NULL,&si,&pi);     
   char szBuffer[MAX_COMMAND_SIZE+1]; //放置命令行输出缓冲区
    
   if (bret)
   {
    WaitForSingleObject (pi.hProcess, INFINITE);
    unsigned long count;
    CloseHandle(hWritePipe);
        
    memset(szBuffer, 0x00, sizeof(szBuffer));
        //读取ping返回的信息到szBuffer中
    bret  =  ReadFile(hReadPipe,szBuffer,MAX_COMMAND_SIZE,&count,0);
    if(!bret)
    {        //失败了   
                 //关闭所有的句柄
        CloseHandle(hReadPipe);
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);             
        return "";
    }
    else
    {
         //成功了,szbuffer中就是ping返回的数据,查看一下返回数据就知道
                 //有没有连接网络了,当然还有更多方法,只要更换命令行就OK
            //我这里用的是ping百度

        
    }

    
    //关闭所有的句柄
    CloseHandle(hWritePipe);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    CloseHandle(hReadPipe);

2008-04-02 11:33
LSJYLP
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-2
收藏
得分:0 
谢谢版主的代码。我现在想知道我的代码问题出在哪里?我想利用这段代码做一个记录上网时间的小程序。
2008-04-03 20:49
快速回复:如何检测电脑是否连上Internet
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011975 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved