tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: Excelの最大化・最小化ボタン
投稿日: 2010/03/17(Wed) 13:45
投稿者はる
できました!
花ちゃんさんのご指摘どおり、VB.NET用にAPI関数を変換していなかったからでした。
ご指摘ありがとうございました!

以下、修正したコードです。

    'ウィンドウハンドルを取得する関数
    <System.Runtime.InteropServices.DllImport("user32.dll", CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
   Shared Function FindWindow( _
       ByVal lpClassName As String, _
       ByVal lpWindowName As String) As IntPtr
    End Function

    'ウィンドウに関する情報を返す関数
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function GetWindowLong(ByVal hWnd As Integer, ByVal nIndex As Integer) As Integer
    End Function

    'ウィンドウの属性を変更する関数
    <DllImport("user32.dll")> _
   Private Shared Function SetWindowLong( _
        ByVal hWnd As IntPtr, _
        ByVal nIndex As Integer, _
        ByVal dwNewLong As IntPtr) As Integer
    End Function

    'メニューバーを描画する関数
    <DllImport("user32.dll")> _
    Shared Function DrawMenuBar(ByVal hwnd As IntPtr) As Boolean
    End Function

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

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

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

    '非表示用のコード
    Public Shared Sub BoxHide(ByVal sAppCaption As String)

        'Excelのハンドル
        Dim hWnd As IntPtr = FindWindow(Nothing, sAppCaption)

        '最小化・最大化ボタンの消去
        Dim wStyle As Integer = GetWindowLong(hWnd, GWL_STYLE)

        SetWindowLong(hWnd, GWL_STYLE, wStyle And (Not WS_MAXIMIZEBOX) And (Not WS_MINIMIZEBOX))

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

    End Sub

解決です。
本当にありがとうございました。

ちなみにサイズの固定はできないですよね〜?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。