IPC라는걸로 검색해보세요
IPC란?
IPC라는것은 Inter Process Communication의 약자로써
같은 Machine에서 두개이상의 process간에 서도 데이타를 주고 받는것을 얘기합니다.
방법에는 여러가지가 있는데요
1. 공유메모리
2. socket
3. pipe , namedpipe
4. message
5. 메일슬롯
등등..
메세지를 이용하는 방법
aaa.exe 라는 프로그램이 윈도우 어플리케이션이면
1) FindWindow해서
2) SendMessage로 데이타를 보냅니다.
3) aaa.exe의 해당 윈도우 프로시져에서 메세지를 받아서 처리하면 되구요
간단한 data의 경우 메세지를 WM_USER+xx 로하고 data는 wparam , lparam으로 하면되는데..
데이타가 좀 긴경우에는 WM_COPYDATA를 이용해서 COPYSTRUCT구조체에 DATA를 넣고 보냅니다.
WM_COPYDATA 로 검색하면 주루룩 나옵니다.
pipe를 이용하는 방법
console프로그램의 경우 콘솔창을 통해 입력을 받고 출력을 하면 콘솔창에 내용이 출력되지요?
이경우 콘솔창이 해당 process의 standard input / output 이 됩니다.
하지만 cmd.exe에서 ipconfig.exe를 실행하면
cmd.exe의 콘솔창에 내용이 출력됩니다.
이는 cmd.exe에서 ipconfig.exe를 실행하면서 standard input/output를
pipe로 만들어서 설정해줍니다.
이렇게 해놓은 상태에서
cmd.exe에서는 자신의 standard input(콘솔)로 무엇이 들어오면 그 내용을 그대로 ipconfig의 input pipe로 내보냅니다.
그리고 ipconfig의 standard output pipe로 무슨 내용이 들어오면 그내용을 cmd.exe 자신의 콘솔창에 출력하구요..
createprocess 로 aaa.exe 프로그램을 실행하면서 STARTUPINFO 구조체에 표준입출력 pipe를 설정해서 넘기고
해당 pipe를 모니터링하면 됩니다.
참조
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=173
그럼...
김현승 님이 쓰신 글 :
: 답변감사드립니다.
: 메세지나 파이프를 검색하니 엄청 많이 나오던데
:
: 어떻게 해야 하는지 감이 잡히질 않네요~
:
: 혹시 예문이나 예제라도 있으시면 부탁 드립니다.
:
: Lyn 님이 쓰신 글 :
: : 한번 더 실행하면 그냥 프로세스가 늘어 날 뿐입니다.
: : 메세지나 파이프를 이용해서 데이터를 전송 하셔야 겠네요.
: :
: : 김현승 님이 쓰신 글 :
: : : 안녕하세요
: : :
: : : aaa.exe 134 이렇게 파일을 하나 실행시켜서 134라는 값을 보냈는데...
: : : aaa.exe 파일이 실행된 상태에서 456이라는 값을 추가로 보내고 싶습니다.
: : :
: : : aaa.exe 134 로 한번 실행
: : : aaa.exe 456 으로 한번 더 실행시 이미 aaa.exe가 실행이 되어있다면 추가로 456이라는 값을 받을 수 없나요?
: : :
: : : 많은 답변 부탁 드립니다.