2010/11/15

office2010 Win32API GetWindowLongPtr/SetWindowLongPtr

access2010でフォームウインドウをWindowsタスクバーに表示しようとしてみたコネタ。PopUp=Trueじゃないとダメだし。ShowWindowsInTaskbarみたいなもんだろうか。
アクティブ時/非アクティブ時とかで切り替えるんならSetWindowPosが必要かも知れんね。
Option Compare Database
Option Explicit

'GetWindowLongPtr
'http://msdn.microsoft.com/ja-jp/library/cc364762.aspx

'SetWindowLongPtr
'http://msdn.microsoft.com/ja-jp/library/cc411204.aspx

'GetWindowLong
'http://msdn.microsoft.com/ja-jp/library/cc364760.aspx

'SetWindowLong
'http://msdn.microsoft.com/ja-jp/library/cc411203.aspx

Const GWL_EXSTYLE = -20
Const GWLP_HINSTANCE = -6
Const GWLP_ID = -12
Const GWL_STYLE = -16
Const GWLP_USERDATA = -21
Const GWLP_WNDPROC = -4
'GWL_EXSTYLE 新しい拡張ウィンドウスタイルを設定します。
'GWL_STYLE 新しいを設定します。
'GWLP_WNDPROC ウィンドウプロシージャへの新しいアドレスを設定します。
'GWLP_HINSTANCE 新しいアプリケーションインスタンスハンドルを設定します。
'GWLP_ID 新しいウィンドウ ID を設定します。
'GWLP_USERDATA   ウィンドウに関連付けられた値を設定します。この 32 ビット値は、ウィンドウを作成したアプリケーションで使用する目的で各ウィンドウが持っているものです。この値の初期値は 0 です。

Const WS_EX_APPWINDOW = &H40000

#If Win64 Then
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" _
            Alias "GetWindowLongPtrA" ( _
                ByVal hwnd As LongPtr, _
                ByVal nIndex As Long _
                ) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" _
            Alias "SetWindowLongPtrA" ( _
                ByVal hwnd As LongPtr, _
                ByVal nIndex As Long, _
                ByVal dwNewLong As LongPtr _
                ) As LongPtr
#Else
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" _
            Alias "GetWindowLongA" ( _
                ByVal hwnd As LongPtr, _
                ByVal nIndex As Long _
                ) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" _
            Alias "SetWindowLongA" ( _
                ByVal hwnd As LongPtr, _
                ByVal nIndex As Long, _
                ByVal dwNewLong As LongPtr _
                ) As LongPtr
#End If

Sub AddTaskBarlist()
    Dim Ws As LongPtr
    Dim pHwnd As LongPtr
    pHwnd = CodeContextObject.hwnd
    Ws = GetWindowLongPtr(pHwnd, GWL_EXSTYLE)
    Ws = Ws Or WS_EX_APPWINDOW
    SetWindowLongPtr pHwnd, GWL_EXSTYLE, Ws
End Sub

0 件のコメント: