CString cmdLine = _T("ping.exe 192.168.3.49");
SECURITY_ATTRIBUTES sa={sizeof ( sa ),NULL,TRUE};
SECURITY_ATTRIBUTES *psa=NULL;
DWORD dwShareMode=FILE_SHARE_READ|FILE_SHARE_WRITE;
OSVERSIONINFO osVersion={0};
osVersion.dwOSVersionInfoSize =sizeof ( osVersion );
if ( GetVersionEx ( &osVersion ) )
{
if ( osVersion.dwPlatformId ==VER_PLATFORM_WIN32_NT )
{
psa=&sa;
dwShareMode|=FILE_SHARE_DELETE;
}
}
//根据版本设置共享模式和安全属性
HANDLE hConsoleRedirect=CreateFile (_T("NetStatus.txt"),GENERIC_WRITE,
dwShareMode,
psa,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL );
ASSERT ( hConsoleRedirect!=INVALID_HANDLE_VALUE );
STARTUPINFO s={sizeof ( s ) };
s.dwFlags =STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
//使用标准柄和显示窗口
s.hStdOutput =hConsoleRedirect;//将文件作为标准输出句柄
s.wShowWindow =SW_HIDE;//隐藏控制台窗口
PROCESS_INFORMATION pi={0};
if ( CreateProcess(NULL,(LPWSTR)(LPCWSTR)cmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&s,&pi))
{
//创建进程,执行Ping程序,测试网络是否连通
WaitForSingleObject ( pi.hProcess ,INFINITE );
//等待进程执行完毕
CloseHandle ( pi.hProcess );
CloseHandle ( pi.hThread );
//关闭进程和主线程句柄
}
CloseHandle ( hConsoleRedirect );
//关闭控制台定向输出文件句柄
CFile myFile (_T("NetStatus.txt"),CFile::modeRead);
ASSERT ( myFile.m_hFile!=NULL );
char * pszNetStatus=new char[myFile.GetLength () +1];
ZeroMemory ( pszNetStatus,myFile.GetLength () +1 );
myFile.Read ( pszNetStatus,myFile.GetLength () );
myFile.Close ();
//打开文件,把它读到一个字符缓冲区
DeleteFile (_T("NetStatus.txt"));
//删除临时文件
//m_EditNetStatus.SetWindowText ( pszNetStatus );
//把控制台程序输出信息写到编辑框中
delete pszNetStatus;
将进程的输出重定向至文件中
最新推荐文章于 2023-06-26 19:45:29 发布