안녕하세요.
a 라는 프로그램을 만들었는데 이프로그램은 버튼을 두개 가지고 버튼1을 누르면
b 라는 프로그램을 shellexecute를 이용하여 실행시키고 버튼2를 누르면
c 라는 프로그램을 실행시키도록 했습니다.
그런데 제가 궁금한것은 a 에서 다시 버튼1을 누르면 b 가 실행되어있는지 체크해서
실행되어 있으면 활성화를 시키고 싶다는 겁니다.
b 나 c 가 실행되어있다는 것은 플래그를 둬서 쉽게 체크가 가능하지만
실행되어있는 b 나 c 를 활성화 시키려고(물론 b나c가 minimized된 상태일지라도) sendmessage를 이용하려 했지만 감이 않잡혀서 이렇게 글 올립니다.
또한 b 나 c 를 아예 프로그램 종료할때 a 에게 이 사실을 알려 플래그를 false로
만들어 주어 a 의 버튼을 누르면 다시 b 나 c 를 실행해주어야 겠지요.
두서없이 적었는데 제 의도는 전달될것 같습니다.
고수님들의 조언을 부탁드립니다.
그럼 안녕히.
> 안녕하세요.
> a 라는 프로그램을 만들었는데 이프로그램은 버튼을 두개 가지고 버튼1을 누르면
> b 라는 프로그램을 shellexecute를 이용하여 실행시키고 버튼2를 누르면
> c 라는 프로그램을 실행시키도록 했습니다.
> 그런데 제가 궁금한것은 a 에서 다시 버튼1을 누르면 b 가 실행되어있는지 체크해서
> 실행되어 있으면 활성화를 시키고 싶다는 겁니다.
> b 나 c 가 실행되어있다는 것은 플래그를 둬서 쉽게 체크가 가능하지만
> 실행되어있는 b 나 c 를 활성화 시키려고(물론 b나c가 minimized된 상태일지라도) sendmessage를 이용하려 했지만 감이 않잡혀서 이렇게 글 올립니다.
> 또한 b 나 c 를 아예 프로그램 종료할때 a 에게 이 사실을 알려 플래그를 false로
> 만들어 주어 a 의 버튼을 누르면 다시 b 나 c 를 실행해주어야 겠지요.
> 두서없이 적었는데 제 의도는 전달될것 같습니다.
> 고수님들의 조언을 부탁드립니다.
> 그럼 안녕히.
안녕하세요? 구창민입니다.
몇가지 방안이 떠오르는데요.
음.. 먼저 첫번째 방안은
FindWindow로 말씀하신 b,c의 어플이 실행중인지 검사하는 겁니다.
그래서 만일 실행중이면 SetForegroundWindow(b나 c의 핸들) 함수를 사용해서
활성화 시키세요.
인수로는 활성화시킬 윈도우의 핸들을 넣어주시면 됩니다.
또다른 방안으로는 종근님이 말씀하신
플래그를 두어 체크하는 방법입니다.
그러나, 종료시점을 알아야 하는데 그것이 모호하기 때문에
윈도우간 통신을 해야 합니다.
통신의 방법에는 또 몇가지가 있는데, 여기에서 이것을
나열하기는 성격이 맞지 않는 것 같구요.
가장 간단한 방법으로 자신의 메세지를 정의하여 (WM_USER + 2000 <--이런 형태죠.)
b나 c가 종료될때 SendMessage로 a에게 던져서 자신의
죽음을 알리는 방법이 되겠네요.
이것저것 적어봤는데 도움이 되셨음 좋겠군요.
그럼, 즐거운 프로그래밍 되시길~