标题:外网IP变了为何不刷新网页?
只看楼主
文羽弈
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-7-15
结帖率:100%
 问题点数:0 回复次数:1 
外网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
飘渺中人
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-2
得分:0 
没看懂
2011-08-02 09:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-346266-1-1.html




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

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