/******************************************************************
* 函数介绍:运行程序
* 输入参数:
* 输出参数:
* 返回值 :
*******************************************************************/
DWORD CCommonFun::WinExecAndWait32(LPCTSTR lpszAppPath,
LPCTSTR lpParameters,
LPCTSTR lpszDirectory,
DWORD dwMilliseconds,
BOOL bIsWait,
int nShow)
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lpszAppPath;
ShExecInfo.lpParameters = lpParameters;
ShExecInfo.lpDirectory = lpszDirectory;
ShExecInfo.nShow = nShow; //SW_SHOW
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if ( ShExecInfo.hProcess == NULL)
return 1;
if ( !bIsWait )
return 0;
if (WaitForSingleObject(ShExecInfo.hProcess, dwMilliseconds) == WAIT_TIMEOUT)
{
TerminateProcess(ShExecInfo.hProcess, 0);
return 1;
}
DWORD dwExitCode;
BOOL bOK = GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode);
ASSERT(bOK);
return dwExitCode;
}
#include <Sensapi.h>
#pragma comment(lib, "Sensapi.lib")
BOOL CheckNetIsOK(const CString sUpdateIP)
{
//Judge Network is Connected
int nCount = 1;
do
{
DWORD dw;
if( IsNetworkAlive(&dw))
{
break;
}
else
{
Sleep(10000);
CString sNetWorkConnect;
sNetWorkConnect.Format("第%d次网络未成功连接, 10秒后重试", nCount);
m_recvCtrl.SetWindowText(sNetWorkConnect);
nCount++ ;
}
} while (nCount <4);
if (nCount == 4)
{
m_recvCtrl.SetWindowText("网络连接失败, 共检测40秒");
return FALSE;
}
DWORD n = WinExecAndWait32(_T("ping.exe"), sUpdateIP + " -n 2"/*sCmdPara*/, NULL, 10000);
if (n == 0)
{
return TRUE;
}
else
{
CString sNetWorkConnect;
sNetWorkConnect.Format("网络连接正常, Ping:%s 失败, 请检测此IP对应的服务器是否正常工作", sUpdateIP);
m_recvCtrl.SetWindowText(sNetWorkConnect);
return FALSE;
}
}