/****************************************************************** * 函数介绍:运行程序 * 输入参数: * 输出参数: * 返回值 : *******************************************************************/ 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; } }
时间: 2024-11-10 08:14:53