일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 나르왈프레오
- 멤버십
- 갤럭시탭S8울트라
- NarwalFreo
- 인공지능
- 빅데이터
- Neural Network
- 삼성소프트웨어멤버십
- 가상화
- 신경회로망
- 패턴 인식
- Bidirectional Associative Memory
- 삼성전자 소프트웨어멤버십 SSM
- 물걸레자동세척로봇청소기
- 물걸레로봇청소기추천
- 파이썬
- SSM
- Friendship
- 패턴인식
- 동아리
- 구글 앱 엔진
- 고려대학교
- 삼성
- Python
- Google App Engine
- BAM
- 신경망
- hopfield network
- 증강현실
- 하이퍼바이저
- Today
- Total
정보공간_1
[4기 신촌 김시재] Scrnsave 라이브러리를 이용한 화면보호기 #1 본문
[4기 신촌 김시재] Scrnsave 라이브러리를 이용한 화면보호기 #1
알 수 없는 사용자 2013. 11. 2. 13:32안녕하세요~ 신촌 멤버십 21기 김시재입니다.
최근에 재미있는걸 발견했어요, 화면보호기를 만드는 것인데요. 막연하게만 생각했던 화면보호기를 직접 만들려고 알아본 것들이 의외로 쉽고 재미있어서 여러분과 함께 윈도우 운영체제에서 간단한 화면보호기를 만드는 글을 나누어보도록 하겠습니다.
화면보호기를 만드는 방법은 여러가지가 있지만 이번 글에서는 Scrnsave 라는 라이브러리를 사용해서 만들어 볼거에요! (WinAPI에 기본적인 지식이 있다고 가정하겠습니다.)
시작부터 잡설이 많습니다. 앞으로도 많을겁니다 :D
화면보호기는 왜 필요할까?
예전에는 CRT(음극선관) 모니터를 많이 사용했습니다. 지금의 모니터와는 다르게 앞 뒤로 뚱뚱한 모습과 전원을 켤 때의 광선 검 뽑는(쥬아~앙) 소리가 인상적이더랬죠. 어린시절 밤에 부모님 몰래 모니터를 키면서 그 소리를 가리려고 타이밍 맞춰 크흠! 하고 기침을 하던 때가 그립군요. :)
CRT 모니터 안에는 길쭉한 모양의 브라운관(CRT의 응용)이 들어있는데 모니터는 이 관을 가열하면서 생기는 음극선으로 화려한 영상을 표현하게 됩니다. 그런데 같은 영상을 계속 보여주게 되면 특정 위치에 있는 내부의 인광물질이 타버리게 되는데요, 이로 인해 화면에 지저분한 잔상이 생기거나 모니터의 수명까지 갉아먹는 불상사가 일어나지요.
추억의 화면보호기 미로! 한번 보기 시작하면 빠져나오기 힘들다.
이런 문제를 막기 위해 사용되는 것이 바로 화면보호기(screen saver)랍니다. 화면보호기는 똑같은 영상을 보여주지 않도록 이리저리 움직이는 화면을 만들거나 화면을 어둡게 하여 위와 같은 문제의 발생을 최소화 시킵니다. 그래서 윈도우즈 운영체제에서 제공하는 화면보호기들이 그렇게도 정신없는 움직임을 보여주었던 것이지요.
사실 최근의 LCD같은 디스플레이는 이런 현상이 거의 없기 때문에 보호 용도로의 사용은 무의미하고, 오히려 불필요한 전력만 소모하는 녀석이 되어버렸습니다. 그래서 요즘엔 다음과 같은 용도로 사용하고 있어요.
1. RSS feed 제공, 그날의 뉴스표시와 같은 기능적 용도
2. 멋진 풍경, 인물 영상과 같은 비주얼적 용도
3. 자리를 떠났을 때 중요한 정보를 보호하는 용도
요즘의 화면보호기들은 멋지고 아기자기한 효과들로 우리들의 감성을 자극하죠. 지나가던 동료의 모니터에 매트릭스 영화에 나오는 것처럼 끝내주는 문자들이 날아다니는 모습을 보면 한번쯤 저런 화면보호기를 직접 만들고 싶다는 생각이 들지 않나요?
물론 시중에 나온 화면보호기 제작 프로그램으로 만들 수 있지만 보통 원하는 이미지나 동영상을 재생하게 해주는 정도로 그칩니다. 우리의 끝내주는 창의력과 엔딩 없는 열정을 저런 툴 안에 담기엔 그릇이 너무 작지요. 나만의 잉여력(?)을 자랑하는 화면보호기는 역시 직접 만들 수 밖에 없습니다!
하지만 exe 파일만 만들어내던 우리가 어떻게 화면보호기를 만들 수 있는지 궁금하기도 하고, 검색하자니 고마운 한국어 자료는 별로 없고… 그래서 제가 직접 화면보호기를 만들어보면서 글을 나누도록 하겠습니다!
.scr 확장자…? 화면보호기는 어떻게 만들까?
확장자만 조금 달라도 머뭇거리는 우리! 하지만 .scr확장자는 사실 .exe랑 다를 게 없답니다.
여러분이 .exe 확장자로 윈도우 프로그램만 만들고 그 확장자만 바꿔도 화면보호기의 기본적인 조건은 충족한 셈입니다. 사실 그게 전부에요. 이제 그걸 Windows 폴더에 넣고 화면보호기 설정을 통해 지정하시면 화면보호기 제작은 싱겁게 끝납니다.
와...뭔가 이상하지만 멋있다.
간단한 걸 좋아하는 분이라면 전체화면에 뭔가 그리는 프로그램을 컴파일 한 후 확장자만 바꿔서 Windows폴더에 던져 넣기만 하면 됩니다.
그런데 뭔가 동작이 이상하죠. 화면보호기 설정 윈도우에서 미리보기도 안되고 괜히 .scr 확장자가 있는게 아닐테고… 맞습니다, 사실 화면보호기는 다음과 같은 몇 가지 명령행 인자를 적절히 처리할 수 있는 프로그램이어야 합니다. 그리고 사용자의 입력이 있으면 종료되는 기능 등 지켜야 할 것들이 몇가지 있지요.
명령 프롬포트에서 화면보호기를 실행한 결과. (\p, -p, /p) 를 넘겨주면 미리보기가 띄워진다.
\s
화면보호기를 시작하면 됩니다.
\c
화면보호기의 세부 설정을 할 수 있는 설정창을 띄워주시면 됩니다. 유효한 명령행 인자가 없을 경우에도 설정창을 띄워주시면 됩니다.
\p <윈도우 핸들>
화면보호기 설정 윈도우의 미리보기 같은건데, 다음 인자로 전달되는 윈도우 핸들에 미리보기를 그려주시면 됩니다.
이렇게 윈도우즈 운영체제는 .exe가 아닌 .scr 확장자를 거저 만든 것이 아니라 그런 파일을 화면보호기로 인식하며 저런 명령행 인자를 넘겨주도록 되어 있는 것입니다. 화면보호기들은 대부분 이런 명령행 인자를 받아서 적절한 동작을 수행할 수 있도록 만들어져 있습니다.
주저리 주저리 글을 썼지만 뭔가 대단한 걸 만들 듯 알아봤더니 사실 화면보호기는 확장자 이름만 다를 뿐이었고, 몇 가지 명령행 인자만 처리해주면 되는 특별할 것 없는 프로그램이었습니다. 게다가 곤란하다면 몇가지는 구현하지 않고 넘어갈 수 있을 정도로 너그럽죠 ^^;
물론 저런 사항을 염두하면서 WinAPI를 이용해 화면보호기를 바로 만들 수 도 있습니다. 하지만 여기서는 앞서 말씀드린 것과 같이 scrnsave.lib 라는 라이브러리를 사용해서 만들 거에요. 화면보호기를 제대로 만들려면 명령행 인자를 처리해야 하지, 사용자가 마우스를 움직이기라도 하면 바로 종료되는 기능도 만들어야 하지, 설정창이나 미리보기도 만들어야… 번거로운게 많습니다.
하지만 scrnsave 라이브러리를 사용하면 그런 번거로움을 줄이고 효과를 그리는 데만 집중할 수 있습니다. 그럼, 다음 시간에는 scrnsave 라이브러리와 함께 직접 화면보호기를 만들어 보도록 하겠습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 신촌 김시재] Scrnsave 라이브러리를 이용한 화면보호기 #2 (0) | 2013.11.04 |
---|---|
[4기 신촌 백재현] C++ algorithm 헤더의 sort()를 사용하여 struct를 정렬해보자. (0) | 2013.11.04 |
[4기 신촌 백재현] C++ 증감 연산자(var++/++var)를 연산자 오버로딩 하기 (0) | 2013.11.01 |
[4기 강남 박인수] 모바일 앱 크래쉬 분석 서비스 BugSense (0) | 2013.10.31 |
[4기 강남 박인수] HotSwap기능이 있는 JRebel 사용법 #2 (0) | 2013.10.31 |