需要编程批量测试多个Web页面的有效性,发觉TidHTTP和TNMEcho都不合适,因为有些网站屏蔽了某些功能,同样也不能简单的用Ping。
网上找了一个免费的测试HTTP的ping工具(http://www.coretechnologies.com/)
,可以在命令行下测试网站的连通性,在C++builder中需要获得命令行程序的结果,并且需要等待命令行程序执行完毕后才能下一步。
winexec没这个功能,需要用到CreateProcess,具体如下:
--------------------------------------------------------------------
void
__fastcall
Tfm_main::CmdCall(AnsiString
FName)
{
char
readBuf[5000];
PROCESS_INFORMATION
pi;
SECURITY_ATTRIBUTES
lsa;
//安全属性
STARTUPINFO
myStartup;
lsa.nLength
=
sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor
= NULL;
lsa.bInheritHandle
= true;
memset(&myStartup,0,sizeof(STARTUPINFO));
myStartup.cb
= sizeof(STARTUPINFO);
myStartup.dwFlags
=
STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
myStartup.wShowWindow
= SW_HIDE;
if(!CreateProcess(NULL,FName.c_str(),NULL,NULL,true,CREATE_NEW_CONSOLE,
NULL,NULL,&myStartup,&pi))
{
ShowMessage("CreateProcess
error:"+IntToStr(GetLastError()));
return;
}
while(true)
{
if(WaitForSingleObject(pi.hProcess,0)==WAIT_OBJECT_0)
break;
Sleep(500);
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
-----------------------------------------------------------------------
SetCurrentDir("c:\\");
。。。
String cmd_ping = "cmd /c";
cmd_ping += "httping.exe ";
cmd_ping +=
q_link->FieldByName("link")->AsString;
cmd_ping += ">testLink.txt";
CmdCall(cmd_ping);
。。。
加载中,请稍候......