만약 서비스 프로그램이 Windows service에 등록되는 프로그램을 얘기한다면
Service에서 윈도우 어플리케이션을 감시하는게 쉽지 않습니다.
FindWindow , SendMessage 같은게 안 먹힙니다.
왜냐하면 Windows에는 개념적으로 프로그램이 동작하는 station 이라는것과 desktop이라는게 잇습니다.
desktop이 다르면 findWindow, SendMessage가 안 먹히는데...
service프로그램이 돌아가는 desktop과 일반 어플리케이션이 돌아가는 desktop이 다르기때문입니다.
service프로그램에서 일반 window 어플리케이션을 findwindow , sendmessge 하는 방법은 있는데
제한되지만 심플한 방법은?
로그인 계정이 System계정일때만 가능한것인데..
서비스 옵션에 보면 "로컬 시스템 계정"에서 "서비스와 데스트탑 상호작용 허용"이라는 옵션이 있습니다.
이놈을 체크해주면 됩니다.
하지만 말그대로 제한되죠 administrator가 아닌 일반계정으로 로그인해서 프로그램을 실행하면 .. 안되는거죠
걍 쉬운 방법으로 service프로그램으로 만들지 않고
로그인한 desktop에서 돌아가는 프로그램(콘솔 또는 어플리케이션)으로 만드시면 편합니다.
프로그램은 hide시켜놓으면 되구요
또 한가지 Application이 응답없음을 체크할때는
예전엔 SendMessageTimeOut을 종 이용했는데...
OS가 win2000이상이면 user32.dll에 IsHungAppWindow 이라는 함수가 있는데 이놈을 이용하시면 됩니다.
서비스 플로그램은 Window Service 프로그램을 얘기하는것인가요?
만약 서비스 프로그램이 Windows service에 등록되는 프로그램을 얘기한다면
Service에서 윈도우 어플리케이션을 감시하는게 쉽지 않습니다.
FindWindow , SendMessage 같은게 안 먹힙니다.
왜냐하면 Windows에는 개념적으로 프로그램이 동작하는 station 이라는것과 desktop이라는게 잇습니다.
desktop이 다르면 findWindow, SendMessage가 안 먹히는데...
service프로그램이 돌아가는 desktop과 일반 어플리케이션이 돌아가는 desktop이 다르기때문입니다.
service프로그램에서 일반 window 어플리케이션을 findwindow , sendmessge 하는 방법은 있는데
제한되지만 심플한 방법은?
로그인 계정이 System계정일때만 가능한것인데..
서비스 옵션에 보면 "로컬 시스템 계정"에서 "서비스와 데스트탑 상호작용 허용"이라는 옵션이 있습니다.
이놈을 체크해주면 됩니다.
하지만 말그대로 제한되죠 administrator가 아닌 일반계정으로 로그인해서 프로그램을 실행하면 .. 안되는거죠
걍 쉬운 방법으로 service프로그램으로 만들지 않고
로그인한 desktop에서 돌아가는 프로그램(콘솔 또는 어플리케이션)으로 만드시면 편합니다.
프로그램은 hide시켜놓으면 되구요
또 한가지 Application이 응답없음을 체크할때는
예전엔 SendMessageTimeOut을 종 이용했는데...
OS가 win2000이상이면 user32.dll에 IsHungAppWindow 이라는 함수가 있는데 이놈을 이용하시면 됩니다.
참조
target=_blank>http://cafe.naver.com/bcbmaster/817
그럼..