많이 배워갑니다. 도움 감사합니다
즐거운 하루 되세요~
장성호 님이 쓰신 글 :
: 팁게시판에 임프님께서 간단한 샘플 만들어 놓은것 있네요
:
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=173
:
: 그럼
:
: 번외편 님이 쓰신 글 :
: : 조금 이해하기 힘드네요.. ㅎㅎ
: :
: : 좀더 자세히 설명해주시면 안될까요?
: :
: : 제가 하려는건 route print 명령어를 입력해
: :
: : Default Gateway : 192.168.10.1 에서
: :
: : 192.168.10.1중 192.168을 다른것과 비교해서
: :
: : 동일하면 ok 틀리면 no를 보여주려고 합니다
: :
: : 도움 감사드립니다. 조금만 더 세부하게 적어주셨으면 합니다.. ^^;;
: :
: :
: : 장성호 님이 쓰신 글 :
: : : 간단히 설명하면
: : :
: : : CreateProcess로 cmd.exe를 실행해서 cmd 프로세서의 출력을 받아오면 됩니다.
: : :
: : : [ cmd.exe의 출력을 받아오려면 ]
: : :
: : : CreateProcess 함수를 보면 9번째에 STARTUPINFO 구조체 포인터를 넘겨줍니다.
: : : STARTUPINFO 구조체는 winbase.h 에 다음과 같이 선언되어 있습니다.
: : :
: : :
: : : BOOL WINAPI CreateProcessA(
: : : IN LPCSTR lpApplicationName,
: : : IN LPSTR lpCommandLine,
: : : IN LPSECURITY_ATTRIBUTES lpProcessAttributes,
: : : IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
: : : IN BOOL bInheritHandles,
: : : IN DWORD dwCreationFlags,
: : : IN LPVOID lpEnvironment,
: : : IN LPCSTR lpCurrentDirectory,
: : : IN LPSTARTUPINFOA lpStartupInfo, // STARTINFO 구조체포인터를 넘긴다.
: : : OUT LPPROCESS_INFORMATION lpProcessInformation
: : : );
: : :
: : :
: : : typedef struct _STARTUPINFOA {
: : : DWORD cb;
: : : LPSTR lpReserved;
: : : LPSTR lpDesktop;
: : : LPSTR lpTitle;
: : : DWORD dwX;
: : : DWORD dwY;
: : : DWORD dwXSize;
: : : DWORD dwYSize;
: : : DWORD dwXCountChars;
: : : DWORD dwYCountChars;
: : : DWORD dwFillAttribute;
: : : DWORD dwFlags;
: : : WORD wShowWindow;
: : : WORD cbReserved2;
: : : LPBYTE lpReserved2;
: : : HANDLE hStdInput; // 표준 출력 핸들
: : : HANDLE hStdOutput; // 표준 입력 핸들
: : : HANDLE hStdError; // 표준 에러 핸들
: : : } STARTUPINFOA, *LPSTARTUPINFOA;
: : :
: : :
: : :
: : : STARTUPINFO 구조체의 맨 아랫쪽에 보면
: : : 다음 세가지가 있습니다.
: : :
: : : HANDLE hStdInput; // 표준 출력 핸들
: : : HANDLE hStdOutput; // 표준 입력 핸들
: : : HANDLE hStdError; // 표준 에러 핸들
: : :
: : :
: : : 이 표준 입/출력 핸들에 적당한 핸들을 만들어서 설정해 넘겨주면 됩니다.
: : :
: : : [표준입/출력 핸들에는 어떤 걸 넘겨줘야 하는가?]
: : :
: : : 그것은 CreatePipe로 pipe를 만들어서 넘겨줘야 합니다.
: : :
: : :
: : : [cmd.exe의 출력을 읽고 쓰기]
: : : 읽기는
: : : STARTUPINFO 구조체의 hStdOutput 으로 넘겨준 핸들을 ReadFile로 읽으면 되고
: : :
: : : 쓰기는
: : :
: : : STARTUPINFO 구조체의 hStdInput으로 넘겨준 핸들에 WriteFile하면 됩니다.
: : :
: : :
: : : 이런 것을 redirect 라고 합니다.
: : :
: : : 키워드 redirect , CreatePipe , CreateProcess 로 아무데서나 검색해 보세요
: : :
: : : [참고]
: : :
http://support.microsoft.com/kb/190351
: : :
: : :
: : :
: : : 그럼...
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : : 번외편 님이 쓰신 글 :
: : : : cmd에서 route print 했을때
: : : :
: : : : 거의 맨 아래쪽
: : : : Default Gateway : 192.168.10.1 이라는 정보를 가져와서
: : : : 비교하려고 합니다.
: : : :
: : : : cmd 데이터를 가져오려면 어떻게 해야하나요?
: : : : CreateProcess 라는걸 쓰면 된다고 하는데
: : : : 좀더 자세히 알려주셨으면 합니다.
: : : :
: : : : 도움 부탁드립니다.