본문 바로가기
IT-개발,DB

[개발/C++] 작업표시줄 정보 및 작업영역 구하기

by SB리치퍼슨 2012. 1. 13.
SHAppBarMessage 작업표시줄 정보 및 작업영역 구하기

SHAppBarMessage 함수
http://msdn.microsoft.com/en-us/library/bb762108(VS-85).aspx
How to find the edge of a task bar
http://support.microsoft.com/kb/179908/en-us
MinitorFromRect 함수
http://msdn.microsoft..com/en-us/library/dd145063(VS.85).aspx
GetMonitorInfo 함수
http://msdn.microsoft..com/en-us/library/dd144901(VS.85).aspx

1. 먼저 작업표시줄의 위치와 영역을 알아야.
SHAppBarMessage()함수 이용(파라메터: ABE_GETTASKBARPOS)

2. 작업표시줄 영역을 통해 모니터를 구한다.
MonitorFromRect() 함수

3. 모니터의 작업영역을 구한다.
GetMonitorInfo()함수

// shellapi.h (uEdge 값의 위치)
// #define ABE_LEFT 0
// #define ABE_TOP 1
// #define ABE_RIGHT 2
// #define ABE_BOTTOM 3

APPBARDATA abd;
abd.cbSize = sizeof(APPBARDATA);
abd.hWnd = GetSafeHwnd();
SHAppBarMessage(ABM_GETTASKBARPOS, &abd);
// taskbar 위치
UINT nTaskBarPos = abd.uEdge;
// taskbar 가 위치한 모니터의 핸들 얻어옴
HMONITOR hMonitor = MonitorFromRect(&(abd.rc), MONITOR_DEFAULTTOPPRIMARY);
// 모니터의 정보 (Working area)
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(hMonitor, &monitorinfo);
// desktop working area
CRect rcDesktop = monitorInfo.rcWork;
반응형

댓글