上位・下位ワード(上位・下位バイト)取得 <TOP>
例では、マウスカーソルで指定した座標の色情報を取得し、上位ワード・下位ワードに分解、さらに上位バイト・下位バイトに分解しています。
GetCursorPos
マウスカーソル(マウスポインタ)の現在の位置に相当するスクリーン座標を取得
LoByte
16ビット整数値の下位を取得
HiByte
16ビット整数値の上位を取得
LoWord
指定されたダブルワードの下位ワードを返す
HiWord
指定されたダブルワードの上位ワードを返す
上図の色を選択した状態
'================================================================ '= 上位・下位ワード(上位・下位バイト)取得
'= (HiLoByte.bas) '================================================================ #include "Windows.bi" Type POINTAPI x As Long y As Long End Type ' マウスカーソル(マウスポインタ)の現在の位置に相当するスクリーン座標を取得 Declare Function Api_GetCursorPos& Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) ' 16ビット整数値の下位を取得 Declare Function Api_LoByte Lib "TLBINF32" Alias "lobyte" (ByVal Word%) As byte ' 16ビット整数値の上位を取得 Declare Function Api_HiByte Lib "TLBINF32" Alias "hibyte" (ByVal Word%) As byte ' 指定されたダブルワードの下位ワードを返す Declare Function Api_LoWord% Lib "TLBINF32" Alias "loword" (ByVal DWord&) ' 指定されたダブルワードの上位ワードを返す Declare Function Api_HiWord% Lib "TLBINF32" Alias "hiword" (ByVal DWord&) ' 指定された座標のピクセルのRGB値を取得 Declare Function Api_GetPixel& Lib "gdi32" Alias "GetPixel" (ByVal hDC&, ByVal X&, ByVal Y&) ' ウィンドウ全体のデバイスコンテキストを取得。0(NULL)を指定すると、スクリーン全体のデバイスコンテキストを取得 Declare Function Api_GetWindowDC& Lib "user32" Alias "GetWindowDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) Var Shared Timer1 As Object Var Shared Text(14) As Object Timer1.Attach GetDlgItem("Timer1") For i = 0 To 14 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i+1))) Text(i).SetFontSize 14 Next '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Timer1.SetInterval 10 Timer1.Enable -1 End Sub '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var pAPI As POINTAPI Var Col As Long Var R As byte Var G As byte Var B As byte Var lDC As Long Var lw As Long Var hw As Long Var Ret As Long lDC = Api_GetWindowDC(0) Ret = Api_GetCursorPos(pAPI) Col = Api_GetPixel(lDC, pAPI.x, pAPI.y) lw = Api_LoWord(Col) hw = Api_HiWord(Col) R = Api_LoByte(lw) G = Api_HiByte(lw) B = Api_LoByte(hw) Text(6).SetWindowText "&&H" & Hex$(Col) Text(7).SetWindowText "&&H" & Hex$(lw) Text(8).SetWindowText "&&H" & Hex$(hw) Text(9).SetWindowText "&&H" & Hex$(R) Text(10).SetWindowText "&&H" & Hex$(G) Text(11).SetWindowText "&&H" & Hex$(B) Text(12).SetWindowText Str$(R) Text(13).SetWindowText Str$(G) Text(14).SetWindowText Str$(B) Ret = Api_ReleaseDC(0, lDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End