지금 win32api를 공부한지 얼마안되서 제대로 만들었는지 모르겠네요. :oops:
일단 이렇게 하니 도스창도 안뜨고 프로세스가 계속 실행되긴 한데 문제는 .......이게 실행 안되네요.
아마두 WndProc() 에서 메시지를 전혀 받지 못하는거 같은데요..
실력이 없어서 뭐가 문제인지 도무지 모르겠습니다.
도움 부탁드립니다.
혹은 제가 하고자 하는게 도스창이 뜨지 않고 백그라운드로 특정시간 특정 주기로 뭔가를 실행하고자 하는건데요..
위의 제 허접한 방법말구 다른 더 나은 방법 아시면 가르침 부탁드립니다.
WndProc이 호출되는건 WndProc이 등록되어 있기 때문이죠. Window 만들때 WNDCLASS의 lpfnWndProc에 WndProc을 등록 시키자나요. 이정보를 통해서 windows가 호출하는겁니다. 그런데 그런 과정이 전혀 없이 그냥 WinProc만 만드셨으니까 호출이 전혀 안되는겁니다.
WM_CREATE는 window를 생성할때 쓰이는거니 일단 잘못된거죠.
bug3호님 말씀대로 그냥 루프 돌리세요. 코드 보니까 1초에 한번씩 timer쓰시는건데 그냥 루프 돌리시고 Sleep (1000) 주셔서 1초씩 멈추게 해도 같은 결과를 얻을수 있겠네요.
뜬구름 잡는 이야기를 하려 합니다.
윈도우에서는 이에 대해 다양한 방법을 지원해 주고 있습니다.
- 윈도우 등록을 하지 않은 실행
- 윈도우 최소화 또는 숨김 실행
- 윈도우 콘솔 숨김 실행
- 윈도우 서비스 등록을 통한 실행
- 트레이 아이콘 모드를 사용한 실행
- 윈도우 투명화를 사용한 실행
- 위치를 99999,99999 등으로 이동하는 방법도 있을것입니다. 다만. 왼쪽이나 상단으로는 제한이 있을것입니다.
- 윗분 말씀 처럼. 크기를 0으로 만드는 방법도 있겠지만. 다이얼로그나 윈도우 속성에 따라 최소크기에 제한이 있습니다.
- 배치 파일 및 도스 명령어로도 일부 가능합니다. start 옵션...
이건 좀 성가실지도 모르는 방법입니다만...
- 어셈블리. 플래시. 익스플로어 등에 외부 언어나 스크립트. 프로그램을 사용한 실행
- DLL. OCX 등에 실행
- Native 바이너리 스트림을 받아서 실행
- GDI.dll 을 사용하지 않는다면. 될것 같습니다.
콘솔 모드로 만들지 마시고 WinMain 으로 시작하는 네이트브 윈도우
콘솔 모드로 만들지 마시고 WinMain 으로 시작하는 네이트브 윈도우 어플리케이션으로 작성하시면 됩니다. 어차피 키보드나 마우스 입력 필요없으면 메시지 루프도 필요없겠죠... 창을 만들지 않고 그냥 원하시는 작업 하시면 됩니다.
아 물론... 적절하게 쉬거나 동기화해서 CPU 잡아먹는 일은 없어야겠죠...
그런 경우에는 service로 작성하시면 될것같습니다.자세한 것은 m
그런 경우에는 service로 작성하시면 될것같습니다.
자세한 것은 msdn이나
jeffrey richter의 Programming Server-Side Applications for Microsoft Windows 2000 을 보시면 되겠습니다.
윈도우에서의 service는 unix 동네의 데몬과 비슷한 것이라 이해하시면 되겠군요.
autoexec.bat 에 넣으면 안될려나요?
autoexec.bat 에 넣으면 안될려나요?
[quote="bugiii"]콘솔 모드로 만들지 마시고 WinMain 으
답변 감사합니다. :D
가르쳐주신 방법데로 다음과 같이 하나 만들어봤습니다.
지금 win32api를 공부한지 얼마안되서 제대로 만들었는지 모르겠네요. :oops:
일단 이렇게 하니 도스창도 안뜨고 프로세스가 계속 실행되긴 한데 문제는 .......이게 실행 안되네요.
아마두 WndProc() 에서 메시지를 전혀 받지 못하는거 같은데요..
실력이 없어서 뭐가 문제인지 도무지 모르겠습니다.
도움 부탁드립니다.
혹은 제가 하고자 하는게 도스창이 뜨지 않고 백그라운드로 특정시간 특정 주기로 뭔가를 실행하고자 하는건데요..
위의 제 허접한 방법말구 다른 더 나은 방법 아시면 가르침 부탁드립니다.
윈도우가 필요없으므로 메시지루프도 필요없습니다.그냥 메인에서 wh
윈도우가 필요없으므로 메시지루프도 필요없습니다.
그냥 메인에서 while 로 루핑하시고 Sleep 함수로 일정시간 기다렸다가 다시 깨어나서 하시고자 하는 일 하고 또 자고 하는 식으로 하시면 됩니다.
다만, 다른 이벤트에도 반응해야 한다면 쓰레드 메시지를 받는 대기 함수를 이용하시면 됩니다.
WndProc이 호출되는건 WndProc이 등록되어 있기 때문이죠. Wi
WndProc이 호출되는건 WndProc이 등록되어 있기 때문이죠. Window 만들때 WNDCLASS의 lpfnWndProc에 WndProc을 등록 시키자나요. 이정보를 통해서 windows가 호출하는겁니다. 그런데 그런 과정이 전혀 없이 그냥 WinProc만 만드셨으니까 호출이 전혀 안되는겁니다.
WM_CREATE는 window를 생성할때 쓰이는거니 일단 잘못된거죠.
bug3호님 말씀대로 그냥 루프 돌리세요. 코드 보니까 1초에 한번씩 timer쓰시는건데 그냥 루프 돌리시고 Sleep (1000) 주셔서 1초씩 멈추게 해도 같은 결과를 얻을수 있겠네요.
산넘어 산
추가로 한말씀만 더 드리자면...정 윈도우 메시지를 사용하겠다고
추가로 한말씀만 더 드리자면...
정 윈도우 메시지를 사용하겠다고 하면 안보이는 윈도우 만드시는 것도 한 방법입니다... 사이즈를 0x0 으로 하든가 아니면 안보이는 속성을 주든가 하시면 됩니다...
지원 방법만 고민해보면 이렇습니다.
뜬구름 잡는 이야기를 하려 합니다.
윈도우에서는 이에 대해 다양한 방법을 지원해 주고 있습니다.
- 윈도우 등록을 하지 않은 실행
- 윈도우 최소화 또는 숨김 실행
- 윈도우 콘솔 숨김 실행
- 윈도우 서비스 등록을 통한 실행
- 트레이 아이콘 모드를 사용한 실행
- 윈도우 투명화를 사용한 실행
- 위치를 99999,99999 등으로 이동하는 방법도 있을것입니다. 다만. 왼쪽이나 상단으로는 제한이 있을것입니다.
- 윗분 말씀 처럼. 크기를 0으로 만드는 방법도 있겠지만. 다이얼로그나 윈도우 속성에 따라 최소크기에 제한이 있습니다.
- 배치 파일 및 도스 명령어로도 일부 가능합니다. start 옵션...
이건 좀 성가실지도 모르는 방법입니다만...
- 어셈블리. 플래시. 익스플로어 등에 외부 언어나 스크립트. 프로그램을 사용한 실행
- DLL. OCX 등에 실행
- Native 바이너리 스트림을 받아서 실행
- GDI.dll 을 사용하지 않는다면. 될것 같습니다.
자세한 내용은 이곳을 찾는것이 나을것 같습니다.
데브피아 www.devpia.com
코드구루 www.codeguru.com
코드프로젝트 www.codeproject.com
2004년도 글이니. 지금쯤 하실겁니다. ㅡ_ㅡ;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
참고하세요
트레이 아이콘 만드는 예제입니다
http://www.dreamincode.net/forums/topic/258176-putting-a-program-icon-in-the-system-tray-with-c/
참고하세요
트레이 아이콘 만드는 예제입니다
http://www.dreamincode.net/forums/topic/258176-putting-a-program-icon-in-the-system-tray-with-c/
댓글 달기