加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

bcb运行外部程序

(2009-03-23 15:28:39)
标签:

c

编程

it

分类: 计算机

   需要编程批量测试多个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);

。。。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有