'윈도우 이동'에 해당되는 글 3건

  1. 2009.07.09 Windows Layout (윈도우창 이동 프로그램 - 3) 8
  2. 2009.06.21 윈도우창 이동 프로그램 - 2
  3. 2008.04.06 윈도우창 이동 프로그램 2

주요 기능과 사용키는 버전2랑 동일합니다.

기존에 MFC에서 만들었던 것을 WIN32 API를 이용해서 만들었고, 불필요한 코드를 제거함으로써 기존 버전보다 조금 가벼워졌을꺼라 생각합니다.

참고로 종료방법은 트레이 아이콘에서 왼쪽 또는 오른쪽 마우스 버튼을 누르시면 종료할 수 있는 메뉴가 나옵니다.

사용 방법은 이전 버전의 글을 참고해주세요.

(사용언어 및 제작툴 : WIN32 API / VS2008)

이전 버전 받기
Posted by Gungume
,

기존의 윈도우창 이동 프로그램을 업그레이드했다.

기존의 Ctrl + 1, 2, 3키를 이용했던 것을 바꿔서 Ctrl 키는 그대로 두고 Numpad의 숫자를 이용하게 변경했다.

Numpad에서 1~9번까지 9개의 키를 사용함으로써 윈도우의 크기 및 위치가 변경되는 범위를 늘렸고, 기존의 1, 2, 3키를 이용했던 것과 동일한 효과로 맵핑되는 것은 Numpad의 4, 5, 6번 키이다.


(사용언어 및 제작툴 : MFC / VS2008)

2009.06.21
Windows 7에서 작동 안되던 것 임시 해결.

이전 버전 받기

Posted by Gungume
,




모니터를 30인치로 바꾼 후 해상도를 2560*1600으로 사용하고 있다.

프로그래밍을 할때는 전체화면으로 작업을 하면 편하지만, 이 해상도로 인터넷 등을 하면 너무 크기 때문에 가로크기를 보통 가로해상도의 절반 크기인 1280으로 맞춘후에 왼쪽에 붙혀서 사용하곤 한다.

그러다 가끔은 하나의 프로그램을 모니터화면상의 가운데로 놓고 쓰거나(한쪽에 붙혀서 사용하면 나도 모르게 몸이 그쪽으로 치우쳐진다;;;), 웹브라우저+문서프로그램 등 2개의 프로그램을 동일한 크기로 좌우로 나눠서 사용해야하는 경우가 생긴다.

프로그램의 위치를 가운데나 기타 위치로 이동하는 경우는 그냥 마우스로 이동시켜도 되지만 성격상 위치를 딱 맞춰주는걸 좋아하고(예전에 자석윈도우 프로그램을 썼었는데 비스타 64비트에서는 작동을 안한다...), 프로그램 2개를 나란히 띄우는 경우도 '창 세로 정렬 보기'를 이용하면 알아서 크기에 맞춰서 배치는 해주지만 왼쪽에 웹브라우저 오른쪽에 문서창 이렇게 하고 싶은데 위치가 서로 반대로 되는 경우도 있다.(원하는 위치지정이 가능한지는 모르겠지만 내 지식으로는 모르겠다;;;)

그래서 간단한 프로그램을 작성했다. 키보드 후킹을 이용해서 Ctrl+1, 2, 3키를 눌렀을 경우 작업표시줄에서 현재 활성화된 윈도우에 대해서 각각 왼쪽, 가운데, 오른쪽 정렬을 하게 만들었다.

내 편의에 맞게 만들어서 고해상도 모니터외에는 별로 쓸모없는 프로그램인것 같긴하다. ㅡㅡ

위에서 설명했듯이 우선 작업표시줄에서 현재 활성화된 윈도우에 대해서 작동을 하고 윈도우의 크기 중 세로길이는 화면상에서 작업표시줄을 제외한 영역중 가장 상단부터 하단까지 꽉 채우도록 지정되어 있다.

그리고 가로 크기는 해상도/2로 정했는데 이것역시 작업표시줄을 제외한 해상도를 사용했다.

즉, 프로그램 2개를 동시에 띄운후에 이 프로그램을 사용해서 위치를 지정해주면 작업표시줄의 크기와 위치에 상관없이 2개의 프로그램을 동일한 크기로 띄울 수 있다.

아래는 DLL에 작성된 키보드 후킹과 관련된 간단한 소스이다. 후킹쪽을 제대로 공부안하고 이전에 가지고 있던 소스 등을 활용해서 만들었기 때문에 조건문 등의 처리가 제대로 된건지 모르겠다...일단 작동은 한다;;;

LRESULT CALLBACK KeyboardHookProc(int code, WPARAM key, LPARAM lParam)
{
	if (code != HC_NOREMOVE) 
	{		
		if (lParam<0)
		{
			if(GetKeyState(VK_CONTROL)<0)
			{
				RECT rect;
				HWND Wnd = ::GetForegroundWindow();
				SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

				switch(key)
				{
					case '1' : 
						rect.left = 0;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);
						break;

					case '2' : 
						rect.left = rect.right/2/2;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);
						break;

					case '3' : 
						rect.left = rect.right/2;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);

					break;
				}
			}
		}
	}
	return CallNextHookEx(NULL, code, key, lParam);
}  

메인 프로그램에서는 단순히 후킹작동과 해제(프로그램 시작과 종료시에 해당기능 호출), 트레이 아이콘 등 자잘한 것만 있다.

프로그램을 실행하면 아무 화면도 안나오고 단순히 트레이쪽에 아이콘 하나만 등록되면서 프로그램이 작동된다. 프로그램을 종료하고 싶으면 트레이아이콘을 더블클릭하거나 마우스 우클릭을 한 후에 '종료'를 누르면 된다.

- 참고 자료 -
트레이 아이콘 : CodeGuru
MFC 모달 다이알로그를 숨김 상태로 시작 : Jiniya.net

(사용언어 및 제작툴 : MFC / VS2008)


최신 버전 받기
2009/07/09 - [Win32 API] - Windows Layout (윈도우창 이동 프로그램 - 3)

Posted by Gungume
,