어떤 특정파일 형식을 읽어서 처리하는 MDI 프로그램이 있습니다. 도스창에서
Test.exe filename
이런식으로 실행시키는데요, 이미 Test.exe a.txt 이렇게 프로그램을 실행시켜서 a.txt 을 처리하는 MDIChild폼을 만들고 나서 다시 Test.exe b.txt를 하면 새로운 프로그램이 실행되는 것이 아니라 이전에 실행시킨 프로그램에서 a.txt를 처리하는 MDIChild폼이 생기게 하려고 합니다.
일단 첫 번째 문제는 "이전에 실행된 프로그램이 있는지를 알아내는 것"이고요,
두 번째 문제는 "어떻게 이전에 실행된 프로그램에 지시를 할 것인가"인가 입니다.
어떻게 해야 저렇게 할 수 있을까요?
다소 복잡한 질문이네요.ㅠㅠ 고수님들중에 아시는 분이 답변을 해 주신다면 정말 감사하겠습니다.
모두 좋은 주말 되세요~
뮤텍스(mutex)등을 이용해서 먼저 프로그램이 중복실행이 안되도록 만드시구요.
이건 질답란이나 팁란 검색해보시면 많이 있습니다.
이렇게 중복실행 방지를 하시면 프로그램이 떠있는지 안떠있는지는 알 수가 있습니다.
프로그램이 이미 먼저 떠 있을때는 떠있는 프로그램의 메인폼이나 기타 윈도우메세지를 받을 수 있는 컨트롤의 핸들을 찾아서 파일이름을 메세지에 담아서 넘겨주시는것이 가장 고전적이고 표준적인 방법입니다.
윈도우 핸들 찾는것은 FindWindow, FindWindowEx를 이용하시면 됩니다.
메세지는 WM_COPYDATA를 SendMessage로 보내시면 됩니다.
윈도우 핸들 찾는것이 힘들다면... BroadcastSystemMessage 를 이용해서 주고받는 방법도 있습니다.
질답란 찾아보시면 예제들 많이 있습니다.
^^ 항상 즐코하세요...