| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 644 人关注过本帖
标题:外网IP变了为何不刷新网页?
取消只看楼主 加入收藏
文羽弈
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-7-15
结帖率:100%
收藏
 问题点数:0 回复次数:0 
外网IP变了为何不刷新网页?
图片附件: 游客没有浏览图片的权限,请 登录注册

我编了一程序,想要实现当外网IP变化时就刷新一次网页,部分代码如下:
    UpdateData(true);
    if(m_website.TrimLeft()=="")
    {
        int a=MessageBox(L"请输入网址!",L"提示信息",MB_ICONINFORMATION);
        return;
    }
    CString szData=m_website.Trim();
    CStringList szList;
    CString szTemp;
    int i=0;
    while(AfxExtractSubString(szTemp,szData,i++,'\n'))
    {
          szList.AddTail(szTemp);
    }

    for(int i=0;i<szList.GetCount();i++)
    {
        ShellExecuteW(NULL,L"open",szList.GetAt(szList.FindIndex(i)),NULL,NULL,SW_SHOWNORMAL);//打开网页
    }
label:CString str1=GetLocalIpAddress();//GetLocalIpAddress()是获取外网IP的函数

    for(i=0;;i++)//死循环,外网IP不变就一直循环下去
    {
        CString str2=GetLocalIpAddress();
        if(str1.Collate(str2)!=0)//如果外网IP改变了
        {
            for(int i=0;i<szList.GetCount();i++)//刷新打开的网页
            {
                HWND  hIE;
                hIE=::FindWindow(NULL,NULL);
                if(hIE!=NULL)
                {
                    ::PostMessage(hIE,WM_KEYDOWN,VK_F5,1);
                    ::PostMessage(hIE,WM_KEYUP,VK_F5,1);//向网页窗口发送“F5”以实现刷新网页的目的
                }
            }
            goto label;//跳转到label处执行,重新把外网IP地址赋值给str1
        }
    }
}
事实上当程序执行下面这段代码时网页并不刷新,我不知道问题出在哪里了,我敢保证代码是绝没有问题的。
                HWND  hIE;
                hIE=::FindWindow(NULL,NULL);
                if(hIE!=NULL)
                {
                    ::PostMessage(hIE,WM_KEYDOWN,VK_F5,1);
                    ::PostMessage(hIE,WM_KEYUP,VK_F5,1);//向网页窗口发送“F5”以实现刷新网页的目的
                }
            当外网IP改变时,程序运行时会出现连接超时这种情况,我不知道是不是由于这的原因。望高手指点一二,多谢了!
获取外网IP的函数如下:
CString CWebLoginDlg::GetLocalIpAddress(void)//获取外网IP的函数
{
    CInternetSession mySession(NULL,0);
    CHttpFile* myHttpFile=NULL;
    char strsource[1024] = {0};
    CString Address;
    CString mySiteInfo;
    Address=L"http://www.
    myHttpFile=(CHttpFile*)mySession.OpenURL(Address);//读取网络地址
    while(myHttpFile->Read(strsource,sizeof(strsource))>0)//循环读取下载来的网页文本
    {
        USES_CONVERSION;
        mySiteInfo += A2T(strsource);
    }
    return mySiteInfo;
}

搜索更多相关主题的帖子: 提示信息 网页 while return 输入网址 
2011-07-28 12:43
快速回复:外网IP变了为何不刷新网页?
数据加载中...
 
   



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

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