|
콘솔모드 동작을 시키는데 불필요한 코드가 좀있는것 같습니다.
동작시키는데 시간이 오래걸리는지 리소스가 많이 먹는건지 아니면 cmd 모드가
원래 이런지는 잘 모르겠지만
조금 불안한 면이 있는것 같습니다.
필요없거나 수정할 부분이 있다면 정정좀 해주세요.
int i,j=3;
char buffer[512];
char IP_Gateway[30];
int IP_Index;
bool flag;
DWORD BytesRead;
AnsiString ResultString;
HANDLE hwrite, hread;
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = true;
flag = CreatePipe(&hread, &hwrite, &sa, 0);
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = hwrite;
si.hStdError = hwrite;
PROCESS_INFORMATION pi;
flag = CreateProcess(NULL, "route print", NULL, NULL,True, DETACHED_PROCESS,
NULL, NULL, &si, &pi);
CloseHandle(hwrite);
while(ReadFile(hread, buffer, sizeof(buffer)-1, &BytesRead, NULL) && BytesRead)
{
buffer[BytesRead] = '\0';
ResultString = ResultString + buffer;
}
CloseHandle(hread);
IP_Index = ResultString.AnsiPos("Default Gateway:");
memcpy(IP_Gateway,&ResultString[IP_Index+22],30);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
for( i=0;i<30;i++)
{
if(IP_Gateway[i] == '.' )
{
j--;
}
if( j == 0 )
{
j = i +1 ;
break ;
}
}
memset(&IP_Gateway[j],0,(30 - j) );
|