< ListBox に水平スクロールバーを表示する | WSH よりクリップボードを使う >

February 10, 2005

デスクトップの作業領域

私は今まで、VBでウインドウの配置を決めるのに、デスクトップのサイズを下のようにして得ていた。

Dim lngRet          As Long
Dim udtRcDesktop    As RECT

'' デスクトップ全体の矩形を取得します
lngRet = GetWindowRect( GetDesktopWindow(), udtRcDesktop )

でも、これだとタスクバーを含んじゃうんだよね。で、SystemParametersInfo関数を使うと、タスクバーを含まない、デスクトップの作業領域の矩形を得ることができます。

'' デスクトップの作業領域の矩形を取得します
lngRet = SystemParametersInfo( SPI_GETWORKAREA, 0&, udtRcDesktop, 0& )

以下に VB の宣言を置いておきます。ヘッダファイルを秀丸で一括置換しただけなので、間違ってるかもしれません。

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction As Long, ByVal uiParam As Long, pvParam As Any, ByVal fWinIni As Long) As Long

'/*
' * Parameter for SystemParametersInfo()
' */
'
Private Const SPI_GETBEEP                 As Long = 1&  '
Private Const SPI_SETBEEP                 As Long = 2&  '
Private Const SPI_GETMOUSE                As Long = 3&  '
Private Const SPI_SETMOUSE                As Long = 4&  '
Private Const SPI_GETBORDER               As Long = 5&  '
Private Const SPI_SETBORDER               As Long = 6&  '
Private Const SPI_GETKEYBOARDSPEED       As Long = 10&  '
Private Const SPI_SETKEYBOARDSPEED       As Long = 11&  '
Private Const SPI_LANGDRIVER             As Long = 12&  '
Private Const SPI_ICONHORIZONTALSPACING  As Long = 13&  '
Private Const SPI_GETSCREENSAVETIMEOUT   As Long = 14&  '
Private Const SPI_SETSCREENSAVETIMEOUT   As Long = 15&  '
Private Const SPI_GETSCREENSAVEACTIVE    As Long = 16&  '
Private Const SPI_SETSCREENSAVEACTIVE    As Long = 17&  '
Private Const SPI_GETGRIDGRANULARITY     As Long = 18&  '
Private Const SPI_SETGRIDGRANULARITY     As Long = 19&  '
Private Const SPI_SETDESKWALLPAPER       As Long = 20&  '
Private Const SPI_SETDESKPATTERN         As Long = 21&  '
Private Const SPI_GETKEYBOARDDELAY       As Long = 22&  '
Private Const SPI_SETKEYBOARDDELAY       As Long = 23&  '
Private Const SPI_ICONVERTICALSPACING    As Long = 24&  '
Private Const SPI_GETICONTITLEWRAP       As Long = 25&  '
Private Const SPI_SETICONTITLEWRAP       As Long = 26&  '
Private Const SPI_GETMENUDROPALIGNMENT   As Long = 27&  '
Private Const SPI_SETMENUDROPALIGNMENT   As Long = 28&  '
Private Const SPI_SETDOUBLECLKWIDTH      As Long = 29&  '
Private Const SPI_SETDOUBLECLKHEIGHT     As Long = 30&  '
Private Const SPI_GETICONTITLELOGFONT    As Long = 31&  '
Private Const SPI_SETDOUBLECLICKTIME     As Long = 32&  '
Private Const SPI_SETMOUSEBUTTONSWAP     As Long = 33&  '
Private Const SPI_SETICONTITLELOGFONT    As Long = 34&  '
Private Const SPI_GETFASTTASKSWITCH      As Long = 35&  '
Private Const SPI_SETFASTTASKSWITCH      As Long = 36&  '
'#if(WINVER >= 0x0400)
Private Const SPI_SETDRAGFULLWINDOWS     As Long = 37&  '
Private Const SPI_GETDRAGFULLWINDOWS     As Long = 38&  '
Private Const SPI_GETNONCLIENTMETRICS    As Long = 41&  '
Private Const SPI_SETNONCLIENTMETRICS    As Long = 42&  '
Private Const SPI_GETMINIMIZEDMETRICS    As Long = 43&  '
Private Const SPI_SETMINIMIZEDMETRICS    As Long = 44&  '
Private Const SPI_GETICONMETRICS         As Long = 45&  '
Private Const SPI_SETICONMETRICS         As Long = 46&  '
Private Const SPI_SETWORKAREA            As Long = 47&  '
Private Const SPI_GETWORKAREA            As Long = 48&  '
Private Const SPI_SETPENWINDOWS          As Long = 49&  '
'
Private Const SPI_GETHIGHCONTRAST        As Long = 66&  '
Private Const SPI_SETHIGHCONTRAST        As Long = 67&  '
Private Const SPI_GETKEYBOARDPREF        As Long = 68&  '
Private Const SPI_SETKEYBOARDPREF        As Long = 69&  '
Private Const SPI_GETSCREENREADER        As Long = 70&  '
Private Const SPI_SETSCREENREADER        As Long = 71&  '
Private Const SPI_GETANIMATION           As Long = 72&  '
Private Const SPI_SETANIMATION           As Long = 73&  '
Private Const SPI_GETFONTSMOOTHING       As Long = 74&  '
Private Const SPI_SETFONTSMOOTHING       As Long = 75&  '
Private Const SPI_SETDRAGWIDTH           As Long = 76&  '
Private Const SPI_SETDRAGHEIGHT          As Long = 77&  '
Private Const SPI_SETHANDHELD            As Long = 78&  '
Private Const SPI_GETLOWPOWERTIMEOUT     As Long = 79&  '
Private Const SPI_GETPOWEROFFTIMEOUT     As Long = 80&  '
Private Const SPI_SETLOWPOWERTIMEOUT     As Long = 81&  '
Private Const SPI_SETPOWEROFFTIMEOUT     As Long = 82&  '
Private Const SPI_GETLOWPOWERACTIVE      As Long = 83&  '
Private Const SPI_GETPOWEROFFACTIVE      As Long = 84&  '
Private Const SPI_SETLOWPOWERACTIVE      As Long = 85&  '
Private Const SPI_SETPOWEROFFACTIVE      As Long = 86&  '
Private Const SPI_SETCURSORS             As Long = 87&  '
Private Const SPI_SETICONS               As Long = 88&  '
Private Const SPI_GETDEFAULTINPUTLANG    As Long = 89&  '
Private Const SPI_SETDEFAULTINPUTLANG    As Long = 90&  '
Private Const SPI_SETLANGTOGGLE          As Long = 91&  '
Private Const SPI_GETWINDOWSEXTENSION    As Long = 92&  '
Private Const SPI_SETMOUSETRAILS         As Long = 93&  '
Private Const SPI_GETMOUSETRAILS         As Long = 94&  '
Private Const SPI_SETSCREENSAVERRUNNING  As Long = 97&  '
Private Const SPI_SCREENSAVERRUNNING     As Long = SPI_SETSCREENSAVERRUNNING
'#endif /* WINVER >= 0x0400 */
Private Const SPI_GETFILTERKEYS          As Long = 50&  '
Private Const SPI_SETFILTERKEYS          As Long = 51&  '
Private Const SPI_GETTOGGLEKEYS          As Long = 52&  '
Private Const SPI_SETTOGGLEKEYS          As Long = 53&  '
Private Const SPI_GETMOUSEKEYS           As Long = 54&  '
Private Const SPI_SETMOUSEKEYS           As Long = 55&  '
Private Const SPI_GETSHOWSOUNDS          As Long = 56&  '
Private Const SPI_SETSHOWSOUNDS          As Long = 57&  '
Private Const SPI_GETSTICKYKEYS          As Long = 58&  '
Private Const SPI_SETSTICKYKEYS          As Long = 59&  '
Private Const SPI_GETACCESSTIMEOUT       As Long = 60&  '
Private Const SPI_SETACCESSTIMEOUT       As Long = 61&  '
'#if(WINVER >= 0x0400)
Private Const SPI_GETSERIALKEYS          As Long = 62&  '
Private Const SPI_SETSERIALKEYS          As Long = 63&  '
'#endif /* WINVER >= 0x0400 */
Private Const SPI_GETSOUNDSENTRY         As Long = 64&  '
Private Const SPI_SETSOUNDSENTRY         As Long = 65&  '
'
'#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
Private Const SPI_GETMOUSEHOVERWIDTH     As Long = 98&  '
Private Const SPI_SETMOUSEHOVERWIDTH     As Long = 99&  '
Private Const SPI_GETMOUSEHOVERHEIGHT   As Long = 100&  '
Private Const SPI_SETMOUSEHOVERHEIGHT   As Long = 101&  '
Private Const SPI_GETMOUSEHOVERTIME     As Long = 102&  '
Private Const SPI_SETMOUSEHOVERTIME     As Long = 103&  '
Private Const SPI_GETWHEELSCROLLLINES   As Long = 104&  '
Private Const SPI_SETWHEELSCROLLLINES   As Long = 105&  '
'
Private Const SPI_GETSHOWIMEUI          As Long = 110&  '
Private Const SPI_SETSHOWIMEUI          As Long = 111&  '
'#endif
'
'
'#if(WINVER >= 0x0500)
Private Const SPI_GETMOUSESPEED         As Long = 112&  '
Private Const SPI_SETMOUSESPEED         As Long = 113&  '
Private Const SPI_GETSCREENSAVERRUNNING As Long = 114&  '
'#endif /* WINVER >= 0x0500 */
'
'#if(WINVER >= 0x0500)
Private Const SPI_GETACTIVEWINDOWTRACKING         As Long = &H1000& '
Private Const SPI_SETACTIVEWINDOWTRACKING         As Long = &H1001& '
Private Const SPI_GETMENUANIMATION                As Long = &H1002& '
Private Const SPI_SETMENUANIMATION                As Long = &H1003& '
Private Const SPI_GETCOMBOBOXANIMATION            As Long = &H1004& '
Private Const SPI_SETCOMBOBOXANIMATION            As Long = &H1005& '
Private Const SPI_GETLISTBOXSMOOTHSCROLLING       As Long = &H1006& '
Private Const SPI_SETLISTBOXSMOOTHSCROLLING       As Long = &H1007& '
Private Const SPI_GETGRADIENTCAPTIONS             As Long = &H1008& '
Private Const SPI_SETGRADIENTCAPTIONS             As Long = &H1009& '
Private Const SPI_GETMENUUNDERLINES               As Long = &H100A& '
Private Const SPI_SETMENUUNDERLINES               As Long = &H100B& '
Private Const SPI_GETACTIVEWNDTRKZORDER           As Long = &H100C& '
Private Const SPI_SETACTIVEWNDTRKZORDER           As Long = &H100D& '
Private Const SPI_GETHOTTRACKING                  As Long = &H100E& '
Private Const SPI_SETHOTTRACKING                  As Long = &H100F& '
Private Const SPI_GETFOREGROUNDLOCKTIMEOUT        As Long = &H2000& '
Private Const SPI_SETFOREGROUNDLOCKTIMEOUT        As Long = &H2001& '
Private Const SPI_GETACTIVEWNDTRKTIMEOUT          As Long = &H2002& '
Private Const SPI_SETACTIVEWNDTRKTIMEOUT          As Long = &H2003& '
Private Const SPI_GETFOREGROUNDFLASHCOUNT         As Long = &H2004& '
Private Const SPI_SETFOREGROUNDFLASHCOUNT         As Long = &H2005& '

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/814

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?