http://pbdc.cafe24.com 박상희님 글발췌
Function Long FindWindowA (String lpClassName ,String lpWindowName ) Library "user32"
FUNCTION boolean GetCursorPos(ref mousepos mousepos2) LIBRARY "user32.dll"
Function ulong GetDC(ulong hWnd) Library "user32.dll"
Function ulong GetPixel(ulong hDc, long X, long Y) Library "gdi32.dll"
Function Long ReleaseDC (Long hwnd ,Long hdc ) Library "user32.dll"
// 마우스포인터의 위치를 구하기 위한 Struct
global type mousepos from structure
long lxpos
long lypos
end type
// Button을 하나 만들고 mousemove Event를 만들어서 다음과 같이 기술합니다.
// userEventID : pbm_mousemove
// Mouse Button Flag
// 1 - Left mouse button
// 2 - Right mouse button
// 4 - shift key?
// 8 - ctrl key?
// 16 - Middle mouse button
Constant Long COLOR_MID = 8388608
Constant Long COLOR_WHITE = 16777215
Constant Long COLOR_BLACK = 0
IF flags <> 1 THEN Return //-- 왼쪽 마우스 버튼이 눌려져 있을때만...
ULONG rtn
Long ll_X,ll_Y,l_hDeskWnd,l_hDeskDC
long hnewcursor,holdcursor,retval
string NullString
mousepos mouseloc
SetNull(NullString)
l_hDeskWnd = FindWindowA("#32769", NullString) // DeskTop Handle 을 구한다.
l_hDeskDC = GetDC(l_hDeskWnd) // Handle로 부터 DC 를 구한다.
// 마우스 위치값구하기
GetCursorPos(mouseloc)
ll_X = mouseloc.lxpos
ll_Y = mouseloc.lypos
// 마우스 위치값의 컬러값
rtn = GetPixel(l_hDeskDC, mouseloc.lxpos, mouseloc.lypos)
//-- 이후에는 구한 컬러값으로 처리 해주면 됩니다.
// Color Setting
st_color.BackColor = rtn
st_color.Text = String(rtn)
em_number.text = String(st_color.BackColor)
if st_color.BackColor>COLOR_MID then
st_color.textcolor = COLOR_BLACK
else
st_color.textcolor = COLOR_WHITE
end if
SetPointer(Cross!)
// DC를 Release 합니다.
ReleaseDC(l_hDeskWnd,l_hDeskDC)
Function Long FindWindowA (String lpClassName ,String lpWindowName ) Library "user32"
FUNCTION boolean GetCursorPos(ref mousepos mousepos2) LIBRARY "user32.dll"
Function ulong GetDC(ulong hWnd) Library "user32.dll"
Function ulong GetPixel(ulong hDc, long X, long Y) Library "gdi32.dll"
Function Long ReleaseDC (Long hwnd ,Long hdc ) Library "user32.dll"
// 마우스포인터의 위치를 구하기 위한 Struct
global type mousepos from structure
long lxpos
long lypos
end type
// Button을 하나 만들고 mousemove Event를 만들어서 다음과 같이 기술합니다.
// userEventID : pbm_mousemove
// Mouse Button Flag
// 1 - Left mouse button
// 2 - Right mouse button
// 4 - shift key?
// 8 - ctrl key?
// 16 - Middle mouse button
Constant Long COLOR_MID = 8388608
Constant Long COLOR_WHITE = 16777215
Constant Long COLOR_BLACK = 0
IF flags <> 1 THEN Return //-- 왼쪽 마우스 버튼이 눌려져 있을때만...
ULONG rtn
Long ll_X,ll_Y,l_hDeskWnd,l_hDeskDC
long hnewcursor,holdcursor,retval
string NullString
mousepos mouseloc
SetNull(NullString)
l_hDeskWnd = FindWindowA("#32769", NullString) // DeskTop Handle 을 구한다.
l_hDeskDC = GetDC(l_hDeskWnd) // Handle로 부터 DC 를 구한다.
// 마우스 위치값구하기
GetCursorPos(mouseloc)
ll_X = mouseloc.lxpos
ll_Y = mouseloc.lypos
// 마우스 위치값의 컬러값
rtn = GetPixel(l_hDeskDC, mouseloc.lxpos, mouseloc.lypos)
//-- 이후에는 구한 컬러값으로 처리 해주면 됩니다.
// Color Setting
st_color.BackColor = rtn
st_color.Text = String(rtn)
em_number.text = String(st_color.BackColor)
if st_color.BackColor>COLOR_MID then
st_color.textcolor = COLOR_BLACK
else
st_color.textcolor = COLOR_WHITE
end if
SetPointer(Cross!)
// DC를 Release 합니다.
ReleaseDC(l_hDeskWnd,l_hDeskDC)