マウスホイールのスクロール量を設定          <TOP>


マウスホイールのスクロール量を取得・設定します。

SystemParametersInfo システム全体に関するパラメータを取得・設定

SPI_GETWHEELSCROLLLINES(104) マウスホイールの回転によってスクロールされる行数の値を取得
SPI_SETWHEELSCROLLLINES(105) マウスホイールの回転によってスクロールされる行数の値を設定
SPIF_SENDWININICHANGE(&H2) 全てのアプリケーションに通知して更新
SPIF_UPDATEINIFILE(&H1) ユーザープロファイルの更新を指定
 

起動時に、スクロール量を取得し、終了時にその値に戻しています。

 

'================================================================
'= マウスホイールのスクロール量を設定
'=    (SetWheelScrollLines.bas)
'================================================================
#include "Windows.bi"

#define SPI_GETWHEELSCROLLLINES 104     'マウスホイールの回転によってスクロールされる行数の値を取得(WindowsNT以降)
#define SPI_SETWHEELSCROLLLINES 105     'マウスホイールの回転によってスクロールされる行数の値を設定(WindowsNT以降)
#define SPIF_SENDWININICHANGE &H2       '全てのアプリケーションに通知して更新
#define SPIF_UPDATEINIFILE &H1          'ユーザープロファイルの更新を指定

' システム全体に関するパラメータを取得・設定
Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&)

Var Shared Text1 As Object
Var Shared Edit1 As Object
Var Shared Button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared ScrollValueOrg As Long
Var Shared ScrollValue As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long

    Ret = Api_SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, ScrollValueOrg, 0)
    Text1.SetWindowText "スクロール量( " & Str$(ScrollValueOrg) & " ) →"

    SetWindowText "スクロール量(" & Trim$(Str$(ScrollValueOrg)) & ")"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var Ret As Long

    Ret = Api_SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, ScrollValue, 0)
    Text1.SetWindowText "スクロール量(" & Str$(ScrollValue) & " ) →"

    'ホイールの1目盛りでスクロールする量を指定
    ScrollValue = Val(Edit1.GetWindowtext)

    'ホイールの1目盛りでスクロールする量を設定
    Ret = Api_SystemParametersInfo(SPI_SETWHEELSCROLLLINES, ScrollValue, ByVal CLng(0), SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE)

    SetWindowText "スクロール量(" & Trim$(Str$(ScrollValue)) & ")"
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    Ret = Api_SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, ScrollValue, 0)
    Ret = Api_SystemParametersInfo(SPI_SETWHEELSCROLLLINES, ScrollValueOrg, ByVal CLng(0), SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE)

    Text1.SetWindowText "スクロール量(" & Str$(ScrollValue) & " ) →"
    Edit1.SetWindowtext Trim$(Str$(ScrollValueOrg))
    A% = MessageBox("", "元のスクロール量に戻します", 0, 0)
    End
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End