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
|