创建线程,线程里面调用函数来检测URL
CreateThread(NULL,0,CheckUrlIsViableThread,(LPVOID)this,0,NULL);
线程里面调用函数
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="html">DWORD WINAPI CApplicationDlg::CheckUrlIsViableThread(__in LPVOID lpParam)
{
//取出打开应用时,app的Url
CApplicationDlg* pAppCheckDlg = (CApplicationDlg*)lpParam;
while(pAppCheckDlg->m_bThreadSign == FALSE)
{
BOOL isSuccess = pAppCheckDlg->CheckUrlIsViable();
if(isSuccess == TRUE)
return 0;
else
{
if(pAppCheckDlg->m_hGnetBrowser)
{
if(!pAppCheckDlg->m_bThreadSign)
{
::ShowWindow(pAppCheckDlg->m_hGnetBrowser,SW_HIDE);
pAppCheckDlg->m_pStcTextStatus->SetText(_T("您访问的应用地址不存在!"));
pAppCheckDlg->m_pUIFormError->SetVisible(TRUE,TRUE,FALSE);
pAppCheckDlg->m_bThreadSign = TRUE;
}
return 0;
}
}
}
return 0;
}
CInternetSession netSession;
CStdioFile *fTargFile;
fTargFile = NULL;
CHttpFile * pHttpFile =NULL;
try
{
DWORD timeout=50;
//InternetSetOption(netSession, INTERNET_OPTION_MAX_CONNS_PER_SERVER| INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER,&timeout,sizeof(DWORD) );
pHttpFile =(CHttpFile *)netSession.OpenURL(strUrl);
//pHttpFile =(CHttpFile *)netSession.OpenURL(_T("http://www.gnetcloud.com/latest.png"));
}
catch (CException* peX)
{
TCHAR szErr[RECIVEDATA_SIZE_PER_TIME];
if (peX->GetErrorMessage(szErr, sizeof(szErr)))
{
}
peX->Delete();
netSession.Close();
return FALSE;
}
//检测地址页面内容
DWORD dwHttpStatus = 0;
if(pHttpFile == NULL)
{
//网站无法访问
netSession.Close();
return FALSE;
}
/*--------http返回的状态值----------
200-299 成功
300-399 信息
400-499 请求错误
500-599 服务器错误
*/
CString htmlInfo;
if(pHttpFile)
{
int nReadlLine = 0;
CString line;
while(pHttpFile->ReadString(line) != NULL)
{
ReadStringToUnicode(line);
OutputDebugString(_T("打开的页面内容是:")+line);
htmlInfo += line;
nReadlLine ++;
}
if(nReadlLine <= 0)
{
//网址做了页面跳转
pHttpFile->Close();
netSession.Close();
return TRUE;
}
}
if(!pHttpFile->QueryInfoStatusCode(dwHttpStatus)) //HTTP_STATUS_OK
{
//获取HttpStatus失败
pHttpFile->Close();
netSession.Close();
return FALSE;
}
CString strOut;
strOut.Format(_T("返回的状态值是:%d"),dwHttpStatus);
OutputDebugString(strOut);
if((dwHttpStatus >=200) && (dwHttpStatus<400)) //成功
{
pHttpFile->Close();
netSession.Close();
return TRUE;
}