#340 Access本体の[最小化]・[最大化]ボタンを使えなくするには? VBA、API

Access本体のウィンドウ右上にある[最小化]・[最大化]ボタンを使えなくする方法です。
このプログラムを、起動時に表示するフォームの読み込み時イベントプロシージャなどから実行することによって、そのデータベースアプリケーション使用時はAccess本体のウィンドウサイズをユーザーが勝手に変更できないようにすることができます。

Option Compare Database
Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
        (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
        (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const WS_MINIMIZEBOX = &H20000  '最小化ボタン
Private Const WS_MAXIMIZEBOX = &H10000  '最大化ボタン
Private Const GWL_STYLE = -16


Public Sub InvalidAccessResize()

  Dim lngSetValue As Long

  '現在の設定値を取得
  lngSetValue = GetWindowLong(Application.hWndAccessApp, GWL_STYLE)

  '最小化ボタンを外す
  lngSetValue = lngSetValue And Not WS_MINIMIZEBOX
  '最大化ボタンを外す
  lngSetValue = lngSetValue And Not WS_MAXIMIZEBOX

  '新しい設定値を設定
  SetWindowLong Application.hWndAccessApp, GWL_STYLE, lngSetValue

End Sub

元のAccessウィンドウ

実行後のAccessウィンドウ


この設定をプログラムから元に戻すには、次のように各条件を"OR"で繋げます。もちろんAccessを再起動すれば、このような処理をすることなく、上記の無効化は消えて本来の状態に戻っています。
  '最小化ボタンを元に戻す
  lngSetValue = lngSetValue Or WS_MINIMIZEBOX
  '最大化ボタンを元に戻す
  lngSetValue = lngSetValue Or WS_MAXIMIZEBOX
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved