HOME>TOP>API

Excelの最大化・最小化ボタンを非表示にするには?


キーワード>>API ・GetWindowLong・SetWindowLong・DrawMenuBar 

 

Point:Excelの最大化・最小化ボタンを消したい。

'APIの宣言
'ウィンドウハンドルを取得する関数

Public Declare Function FindWindow Lib "user32" _
       Alias "FindWindowA" (ByVal lpClassName As String _
                    , ByVal lpWindowName As String) As Long

'ウィンドウに関する情報を返す関数
Public Declare Function GetWindowLong Lib "user32" _
             Alias "GetWindowLongA" (ByVal hWnd As Long _
                               , ByVal nIndex As Long) As Long

'ウィンドウの属性を変更する関数
Public Declare Function SetWindowLong Lib "user32" _
                  Alias "SetWindowLongA" (ByVal hWnd As Long _
        , ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'メニューバーを描画する関数
Public Declare Function DrawMenuBar Lib "user32" _
                                           (ByVal hWnd As Long) As Long


'最大化ボタン
Public Const WS_MAXIMIZEBOX As Long = &H10000

'最小化ボタン
Public Const WS_MINIMIZEBOX As Long = &H20000

'スタイルを取得する定数
Public Const GWL_STYLE As Long = -16&


'非表示用のコード
Sub BoxHide()
Dim hWnd As Long
Dim lngWstyle As Long

'Excelのハンドル
   hWnd = FindWindow("XLMAIN", Application.Caption)

'最小化・最大化ボタンの消去
   lngWstyle = GetWindowLong(hWnd, GWL_STYLE)

   SetWindowLong hWnd, GWL_STYLE, lngWstyle _
        And (Not WS_MAXIMIZEBOX) And (Not WS_MINIMIZEBOX)

'メニュー表示し直し
  DrawMenuBar hWnd

End Sub

'表示用コード
Sub BoxShow()
Dim hWnd As Long
Dim lngWstyle As Long

'Excelのハンドル
   hWnd = FindWindow("XLMAIN", Application.Caption)

'最小化・最大化ボタンの表示
   lngWstyle = GetWindowLong(hWnd, GWL_STYLE)

    SetWindowLong hWnd, GWL_STYLE, lngWstyle _
             Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX

'メニュー表示し直し
  DrawMenuBar hWnd

End Sub


掲載サンプルコードの使用に関して、直接・間接
を問わず生じた一切の損害について如何なる責任も負いません。

v