線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2578
推到 Plurk!
推到 Facebook!

關於Ping時程式會卡住的問題

答題得分者是:GrandRURU
jarkin
一般會員


發表:17
回覆:7
積分:4
註冊:2006-08-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-08 13:28:14 IP:61.220.xxx.xxx 訂閱
請教各位先進們..小弟我想做一支關於Ping 外部 IP的程式..也爬了許多文找到了下面的程式碼

此程式碼是當我執行Ping後cmd會一直跑...但是當我的cmd在跑的過程時程式好像會當掉一樣...

我有試過system()和shellExecuyr()但是這兩個Function沒辦法判斷程式是否執行完畢!!

也是過SendARP...但是他只能Ping內部...困擾中...是否有大大有更好的方法!!感恩!!

[code cpp]
String A="Lost = 0";
String B="Lost = 1";
String C;
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
ShowMessage("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,"Ping 168.95.1.1" ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
ShowMessage("Error on CreateProcess()");
return;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
Memo1->Lines->Add(buffer);
Sleep(200);
}
//ShowMessage(buffer);
//int n = s1.Pos(A);
C=buffer;
if (C.Pos(A)!=0 || C.Pos(B)!=0)
ShowMessage("Good");
else
ShowMessage("No");
::CloseHandle(hRead);
[/code]
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-08 17:07:32 IP:203.75.xxx.xxx 未訂閱
你可以善用winapi的語法
這邊有個例子
[code cpp]
WinExec("Command.com /c ping -n 1 -l 1 192.168.0.1", SW_HIDE);
[/code]

其它的你可以多看一下PING的參數
jarkin
一般會員


發表:17
回覆:7
積分:4
註冊:2006-08-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-08 22:02:00 IP:114.137.xxx.xxx 訂閱
感謝大大的幫忙...真是厲害我居然沒想到要逆向思考去修改Ping參數...雖然也是

會出現停頓...所以小弟我利用ShellExecute Ping出一個txt file...再由程式去判斷..

Lost是多少...這樣比較沒有停頓的動作發生...感謝大大的協助...Thanks...


===================引 用 GrandRURU 文 章===================
你可以善用winapi的語法
這邊有個例子
[code cpp]
WinExec("Command.com /c ping -n 1 -l 1 192.168.0.1", SW_HIDE);
[/code]

其它的你可以多看一下PING的參數
kostin
一般會員


發表:18
回覆:43
積分:22
註冊:2010-03-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-04-05 04:47:56 IP:218.162.xxx.xxx 訂閱
看不懂!! 可以麻煩解釋一下嗎?? 感恩
------
工程師的世界太深奧了 ~ 總是有不斷的驚奇發生
在解決問題的當下 , 才能確認我的存在
在得到幫助的當下 , 才能發現我不孤單
系統時間:2017-10-20 7:43:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!