Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

IDeskBand (Interfaces)
 
.
Summary
Exposes methods to enable and query translucency effects in a deskband object.
Summary
Used to obtain information about a band object.

C# Definition:

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")]
    public interface IDeskBand2
    {
        // IOleWindow methods
        [PreserveSig]
        int GetWindow(out IntPtr phwnd);
        [PreserveSig]
        int ContextSensitiveHelp([In, MarshalAs(UnmanagedType.Bool)] bool fEnterMode);

        // IDockingWindow methods
        [PreserveSig]
        int ShowDW([In, MarshalAs(UnmanagedType.Bool)] bool fShow);
        [PreserveSig]
        int CloseDW([In] Int32 dwReserved);
        [PreserveSig]
        int ResizeBorderDW(ref RECT rcBorder, [In, MarshalAs(UnmanagedType.IUnknown)] ref object punkToolbarSite, [MarshalAs(UnmanagedType.Bool)] bool fReserved);

        // IDeskBand methods
        [PreserveSig]
        int GetBandInfo([In] Int32 dwBandID, [In] Int32 dwViewMode, [In, Out] ref DESKBANDINFO pdbi);

        // IDeskband2 methods
        void CanRenderComposited(out bool pfCanRenderComposited);
        void SetCompositionState(bool fCompositionEnabled);
        void GetCompositionState(out bool pfCompositionEnabled);
    }
[ComImport]
[Guid ("EB0FE172-1A3A-11D0-89B3-00A0C90A90AC")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDeskBand
{
    // IOleWindow methods
    [PreserveSig] int GetWindow (out IntPtr phwnd);
    [PreserveSig] int ContextSensitiveHelp (
        [In, MarshalAs(UnmanagedType.Bool)] bool fEnterMode);

    // IDockingWindow methods''
    [PreserveSig] int ShowDW ([In, MarshalAs (UnmanagedType.Bool)] bool fShow);
    [PreserveSig] int CloseDW([In] Int32 dwReserved);
    [PreserveSig] int ResizeBorderDW (ref RECT rcBorder,
        [In, MarshalAs (UnmanagedType.IUnknown)] ref object punkToolbarSite,
        [MarshalAs (UnmanagedType.Bool)] bool fReserved);

    // IDeskBand method''
    [PreserveSig] int GetBandInfo ([In] Int32 dwBandID, [In] Int32 dwViewMode,
        [In, Out] ref [DESKBANDINFO] pdbi);
}

VB Definition:

<ComImport()> _

<InterfaceType(ComInterfaceType.InterfaceIsDual)> _

<Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")> _

Public Interface IDeskBand2

    Sub GetBandInfo(dwBandID As UInt32, dwViewMode As UInt32, ByRef pdbi As DESKBANDINFO)
    Sub CanRenderComposited(ByRef pfCanRenderComposited As Boolean)
    Sub GetCompositionState(ByRef pfCompositionEnabled As Boolean)
    Sub SetCompositionState(<MarshalAs(UnmanagedType.Bool)> fCompositionEnabled As Boolean)

End Interface

// Please add...

User-Defined Types:

Structures:

DESKBANDINFO

RECT

Notes:

None.

VB Sample

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

DeskbandObject Class:

Alternative Managed API:

Do you know one? Please contribute it!

Imports System.Windows.Forms

Imports System.Runtime.InteropServices

Imports SHDocVw

Imports System.Reflection

Imports System.Diagnostics

Imports System.Drawing

Imports System.ComponentModel

Imports Microsoft.Win32

'<Assembly: AssemblyKeyFile("..\..\..\BandObjects.snk")>

''' <summary>

''' Implements generic Band Object functionality.

''' </summary>

''' <example>

''' [Guid("AE07101B-46D4-4a98-AF68-0333EA26E113")]

''' [BandObject("Hello World Bar", BandObjectStyle.Horizontal | BandObjectStyle.ExplorerToolbar , HelpText = "Shows bar that says hello.")]

''' public class HelloWorldBar : BandObject

''' { /.../ }

''' </example>

Public Class BandObject

    Inherits UserControl
    Implements IObjectWithSite
    ' Implements IDeskBand
    Implements IDeskBand
    Implements IDockingWindow
    Implements IOleWindow
    Implements IInputObject
    Implements IDeskBand2
    ''' <summary>
    ''' Reference to the host explorer.
    ''' </summary>
    Protected Explorer As WebBrowserClass
    Protected BandObjectSite As IInputObjectSite
    ''' <summary>
    ''' This event is fired after reference to hosting explorer is retreived and stored in Explorer property.
    ''' </summary>
    Public Event ExplorerAttached As EventHandler

    Public Sub New()
    InitializeComponent()
    End Sub

    Private Sub InitializeComponent()
    Me.SuspendLayout()
    '
    'BandObject
    '
    Me.BackColor = System.Drawing.Color.Transparent
    Me.Name = "BandObject"
    Me.ResumeLayout(False)

    End Sub

    ' Function ShowDeskBand(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer Implements IDeskBand2.ShowDeskBand

    ' End Function

    ' Function HideDeskBand(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer Implements IDeskBand.HideDeskBand

    ' End Function
    ' Function IsDeskBandShown(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer Implements IDeskBand2.IsDeskBandShown

    'End Function
    ' Function DeskBandRegistrationChanged() As Integer Implements IDeskBand2.DeskBandRegistrationChanged

    ' End Function

    ''' <summary>
    ''' Title of band object. Displayed at the left or on top of the band object.
    ''' </summary>
    <Browsable(True)> _
    <DefaultValue("")> _
    Public Property Title() As [String]
    Get
        Return _title
    End Get
    Set(value As [String])
        _title = value
    End Set
    End Property
    Private _title As [String]

    ''' <summary>
    ''' Minimum size of the band object. Default value of -1 sets no minimum constraint.
    ''' </summary>
    <Browsable(True)> _
    <DefaultValue(GetType(Size), "-1,-1")> _
    Public Property MinSize() As Size
    Get
        Return _minSize
    End Get
    Set(value As Size)
        _minSize = value
    End Set
    End Property
    Private _minSize As New Size(-1, -1)

    ''' <summary>
    ''' Maximum size of the band object. Default value of -1 sets no maximum constraint.
    ''' </summary>
    <Browsable(True)> _
    <DefaultValue(GetType(Size), "-1,-1")> _
    Public Property MaxSize() As Size
    Get
        Return _maxSize
    End Get
    Set(value As Size)
        _maxSize = value
    End Set
    End Property
    Private _maxSize As New Size(-1, -1)

    ''' <summary>
    ''' Says that band object's size must be multiple of this size. Defauilt value of -1 does not set this constraint.
    ''' </summary>
    <Browsable(True)> _
    <DefaultValue(GetType(Size), "-1,-1")> _
    Public Property IntegralSize() As Size
    Get
        Return _integralSize
    End Get
    Set(value As Size)
        _integralSize = value
    End Set
    End Property
    Private _integralSize As New Size(-1, -1)

    Public Overridable Sub GetBandInfo(dwBandID As UInt32, dwViewMode As UInt32, ByRef dbi As DESKBANDINFO) Implements IDeskBand.GetBandInfo, IDeskBand2.GetBandInfo
    dbi.wszTitle = Me.Title

    dbi.ptActual.x = Me.Size.Width
    dbi.ptActual.y = Me.Size.Height

    dbi.ptMaxSize.x = Me.MaxSize.Width
    dbi.ptMaxSize.y = Me.MaxSize.Height

    dbi.ptMinSize.x = Me.MinSize.Width
    dbi.ptMinSize.y = Me.MinSize.Height

    dbi.ptIntegral.x = Me.IntegralSize.Width
    dbi.ptIntegral.y = Me.IntegralSize.Height

    dbi.dwModeFlags = DBIM.TITLE Or DBIM.ACTUAL Or DBIM.MAXSIZE Or DBIM.MINSIZE Or DBIM.INTEGRAL
    End Sub
    Sub CanRenderComposited(ByRef pfCanRenderComposited As Boolean) Implements IDeskBand2.CanRenderComposited
    pfCanRenderComposited = True

    End Sub
    Sub GetCompositionState(ByRef pfCompositionEnabled As Boolean) Implements IDeskBand2.GetCompositionState

    pfCompositionEnabled = True
    End Sub
    Sub SetCompositionState(<MarshalAs(UnmanagedType.Bool)> fCompositionEnabled As Boolean) Implements IDeskBand2.SetCompositionState
    fCompositionEnabled = True

    End Sub
    ''' <summary>
    ''' Called by explorer when band object needs to be showed or hidden.
    ''' </summary>
    ''' <param name="fShow"></param>
    Public Overridable Sub ShowDW(fShow As Boolean) Implements IDeskBand.ShowDW, IDockingWindow.ShowDW
    If fShow Then
        Show()
    Else
        Hide()
    End If
    End Sub

    ''' <summary>
    ''' Called by explorer when window is about to close.
    ''' </summary>
    Public Overridable Sub CloseDW(dwReserved As UInt32) Implements IDeskBand.CloseDW, IDockingWindow.CloseDW
    Dispose(True)
    End Sub

    ''' <summary>
    ''' Not used.
    ''' </summary>
    Public Overridable Sub ResizeBorderDW(prcBorder As IntPtr, punkToolbarSite As [Object], fReserved As Boolean) Implements IDeskBand.ResizeBorderDW, IDockingWindow.ResizeBorderDW
    End Sub

    Public Overridable Sub GetWindow(ByRef phwnd As System.IntPtr) Implements IDeskBand.GetWindow, IDockingWindow.GetWindow, IOleWindow.GetWindow
    phwnd = Handle
    End Sub

    Public Overridable Sub ContextSensitiveHelp(fEnterMode As Boolean) Implements IDeskBand.ContextSensitiveHelp, IDockingWindow.ContextSensitiveHelp, IOleWindow.ContextSensitiveHelp
    End Sub

    Public Overridable Sub SetSite(pUnkSite As [Object]) Implements IObjectWithSite.SetSite
    If BandObjectSite IsNot Nothing Then
        Marshal.ReleaseComObject(BandObjectSite)
    End If

    If Explorer IsNot Nothing Then
        Marshal.ReleaseComObject(Explorer)
        Explorer = Nothing
    End If

    BandObjectSite = DirectCast(pUnkSite, IInputObjectSite)
    If BandObjectSite IsNot Nothing Then
        'pUnkSite is a pointer to object that implements IOleWindowSite or something  similar
        'we need to get access to the top level object - explorer itself
        'to allows this explorer objects also implement IServiceProvider interface
        '(don't mix it with System.IServiceProvider!)
        'we get this interface and ask it to find WebBrowserApp
        Dim sp As _IServiceProvider = TryCast(BandObjectSite, _IServiceProvider)
        Dim guid As Guid = ExplorerGUIDs.IID_IWebBrowserApp
        Dim riid As Guid = ExplorerGUIDs.IID_IUnknown

        Try
        Dim w As Object
        sp.QueryService(guid, riid, w)

        'once we have interface to the COM object we can create RCW from it
        Explorer = DirectCast(Marshal.CreateWrapperOfType(TryCast(w, IWebBrowser), GetType(WebBrowserClass)), WebBrowserClass)

        OnExplorerAttached(EventArgs.Empty)
        'we anticipate this exception in case our object instantiated
        'as a Desk Band. There is no web browser service available.
        Catch generatedExceptionName As COMException
        End Try
    End If

    End Sub

    Public Overridable Sub GetSite(ByRef riid As Guid, ByRef ppvSite As [Object]) Implements IObjectWithSite.GetSite
    ppvSite = BandObjectSite
    End Sub

    ''' <summary>
    ''' Called explorer when focus has to be chenged.
    ''' </summary>
    Public Overridable Sub UIActivateIO(fActivate As Int32, ByRef Msg As MSG) Implements IInputObject.UIActivateIO
    If fActivate <> 0 Then
        Dim ctrl As Control = GetNextControl(Me, True)
        'first
        If ModifierKeys = Keys.Shift Then
        ctrl = GetNextControl(ctrl, False)
        End If
        'last
        If ctrl IsNot Nothing Then
        ctrl.[Select]()
        End If
        Me.Focus()
    End If
    End Sub

    Public Overridable Function HasFocusIO() As Int32 Implements IInputObject.HasFocusIO
    Return If(Me.ContainsFocus, 0, 1)
    'S_OK : S_FALSE;
    End Function

    ''' <summary>
    ''' Called by explorer to process keyboard events. Undersatands Tab and F6.
    ''' </summary>
    ''' <param name="msg"></param>
    ''' <returns>S_OK if message was processed, S_FALSE otherwise.</returns>
    Public Overridable Function TranslateAcceleratorIO(ByRef msg As MSG) As Int32 Implements IInputObject.TranslateAcceleratorIO
    If msg.message = &H100 Then
        'WM_KEYDOWN
        If msg.wParam = CUInt(Keys.Tab) OrElse msg.wParam = CUInt(Keys.F6) Then
        'keys used by explorer to navigate from control to control
        If SelectNextControl(ActiveControl, If(ModifierKeys = Keys.Shift, False, True), True, True, False) Then
            Return 0
        End If
        End If
    End If
    'S_OK
    Return 1
    'S_FALSE
    End Function

    ''' <summary>
    ''' Override this method to handle ExplorerAttached event.
    ''' </summary>
    ''' <param name="ea"></param>
    Protected Overridable Sub OnExplorerAttached(ea As EventArgs)
    RaiseEvent ExplorerAttached(Me, ea)
    End Sub

    ''' <summary>
    ''' Notifies explorer of focus change.
    ''' </summary>
    Protected Overrides Sub OnGotFocus(e As System.EventArgs)
    MyBase.OnGotFocus(e)
    BandObjectSite.OnFocusChangeIS(TryCast(Me, IInputObject), 1)
    End Sub
    ''' <summary>
    ''' Notifies explorer of focus change.
    ''' </summary>
    Protected Overrides Sub OnLostFocus(e As System.EventArgs)
    MyBase.OnLostFocus(e)
    If ActiveControl Is Nothing Then
        BandObjectSite.OnFocusChangeIS(TryCast(Me, IInputObject), 0)
    End If
    End Sub

    ''' <summary>
    ''' Called when derived class is registered as a COM server.
    ''' </summary>
    <ComRegisterFunctionAttribute()> _
    Public Shared Sub Register(t As Type)
    Dim guid As String = t.GUID.ToString("B")

    Dim rkClass As RegistryKey = Registry.ClassesRoot.CreateSubKey("CLSID\" & guid)
    Dim rkCat As RegistryKey = rkClass.CreateSubKey("Implemented Categories")

    Dim boa As BandObjectAttribute() = DirectCast(t.GetCustomAttributes(GetType(BandObjectAttribute), False), BandObjectAttribute())

    Dim name As String = t.Name
    Dim help As String = t.Name
    Dim style As BandObjectStyle = 0
    If boa.Length = 1 Then
        If boa(0).Name IsNot Nothing Then
        name = boa(0).Name
        End If

        If boa(0).HelpText IsNot Nothing Then
        help = boa(0).HelpText
        End If

        style = boa(0).Style
    End If

    rkClass.SetValue(Nothing, name)
    rkClass.SetValue("MenuText", name)
    rkClass.SetValue("HelpText", help)

    If 0 <> (style And BandObjectStyle.Vertical) Then
        rkCat.CreateSubKey("{00021493-0000-0000-C000-000000000046}")
    End If

    If 0 <> (style And BandObjectStyle.Horizontal) Then
        rkCat.CreateSubKey("{00021494-0000-0000-C000-000000000046}")
    End If

    If 0 <> (style And BandObjectStyle.TaskbarToolBar) Then
        rkCat.CreateSubKey("{0DF44EAA-FF21-4412-828E-260A8728E7F1}")
    End If

    If 0 <> (style And BandObjectStyle.ExplorerToolbar) Then
        Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Internet Explorer\Toolbar").SetValue(guid, name)
    End If

    End Sub

    ''' <summary>
    ''' Called when derived class is unregistered as a COM server.
    ''' </summary>
    <ComUnregisterFunctionAttribute()> _
    Public Shared Sub Unregister(t As Type)
    Dim guid As String = t.GUID.ToString("B")
    Dim boa As BandObjectAttribute() = DirectCast(t.GetCustomAttributes(GetType(BandObjectAttribute), False), BandObjectAttribute())

    Dim style As BandObjectStyle = 0
    If boa.Length = 1 Then
        style = boa(0).Style
    End If

    If 0 <> (style And BandObjectStyle.ExplorerToolbar) Then
        Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Internet Explorer\Toolbar").DeleteValue(guid, False)
    End If

    Registry.ClassesRoot.CreateSubKey("CLSID").DeleteSubKeyTree(guid)
    End Sub

End Class

VB Sample

Sample Deskband Class:

    Imports System.ComponentModel
    Imports System.Windows.Forms

    Imports BandObjectLib
    Imports System.Runtime.InteropServices

    <Guid("C6FC82EA-AF64-43AF-BA1F-32A634C5FCC7")> _
    <BandObject("Hello World Bar", BandObjectStyle.Horizontal Or BandObjectStyle.TaskbarToolBar, HelpText:="Shows bar that says hello.")> _

Public Class HelloWorldBar2

    Inherits BandObject
    Private WithEvents button1 As System.Windows.Forms.Button
    Private components As System.ComponentModel.Container = Nothing

    Public Sub New()
        InitializeComponent()
    End Sub

    Protected Overrides Sub Dispose(disposing As Boolean)
        If disposing Then
        If components IsNot Nothing Then
            components.Dispose()
        End If
        End If
        MyBase.Dispose(disposing)
    End Sub

#Region "Component Designer generated code"

    Private Sub InitializeComponent()
        Me.button1 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'button1
        '
        Me.button1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
        Or System.Windows.Forms.AnchorStyles.Left) _
        Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
        Me.button1.BackColor = System.Drawing.SystemColors.HotTrack
        Me.button1.ForeColor = System.Drawing.SystemColors.Info
        Me.button1.Location = New System.Drawing.Point(0, 0)
        Me.button1.Name = "button1"
        Me.button1.Size = New System.Drawing.Size(62, 24)
        Me.button1.TabIndex = 0
        Me.button1.Text = "Say Hello"
        Me.button1.UseVisualStyleBackColor = False
        '
        'HelloWorldBar2
        '
        Me.Controls.Add(Me.button1)
        Me.MinSize = New System.Drawing.Size(150, 24)
        Me.Name = "HelloWorldBar2"
        Me.Size = New System.Drawing.Size(62, 24)
        Me.Title = "Hello Bar"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub button1_Click(sender As Object, e As System.EventArgs) Handles button1.Click
        MessageBox.Show("ZZZZZZ Hello, World!")
    End Sub
    End Class

VB Sample

ComIntorp:

Imports System.Drawing

Imports System.Runtime.InteropServices

Imports System.Windows.Forms

MustInherit Class ExplorerGUIDs

    Public Shared ReadOnly IID_IWebBrowserApp As New Guid("{0002DF05-0000-0000-C000-000000000046}")
    Public Shared ReadOnly IID_IUnknown As New Guid("{00000000-0000-0000-C000-000000000046}")

End Class

<Flags> _

Public Enum DBIM As UInteger

    MINSIZE = &H1
    MAXSIZE = &H2
    INTEGRAL = &H4
    ACTUAL = &H8
    TITLE = &H10
    MODEFLAGS = &H20
    BKCOLOR = &H40

End Enum

<StructLayout(LayoutKind.Sequential, CharSet := CharSet.Unicode)> _

Public Structure DESKBANDINFO

    Public dwMask As UInt32
    Public ptMinSize As Point
    Public ptMaxSize As Point
    Public ptIntegral As Point
    Public ptActual As Point
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst := 255)> _
    Public wszTitle As [String]
    Public dwModeFlags As DBIM
    Public crBkgnd As Int32

End Structure

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("FC4801A3-2BA9-11CF-A229-00AA003D7352")> _

Public Interface IObjectWithSite

    Sub SetSite(<[In], MarshalAs(UnmanagedType.IUnknown)> pUnkSite As [Object])
    Sub GetSite(ByRef riid As Guid, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvSite As [Object])

End Interface

<ComImport(), Guid("6D67E846-5B9C-4db8-9CBC-DDE12F4254F1"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

Public Interface ITrayDeskband

    <PreserveSig()> _
    Function ShowDeskBand(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer
    <PreserveSig()> _
    Function HideDeskBand(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer
    <PreserveSig()> _
    Function IsDeskBandShown(<[In](), MarshalAs(UnmanagedType.Struct)> ByRef clsid As Guid) As Integer
    <PreserveSig()> _
    Function DeskBandRegistrationChanged() As Integer

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("00000114-0000-0000-C000-000000000046")> _

Public Interface IOleWindow

    Sub GetWindow(ByRef phwnd As System.IntPtr)
    Sub ContextSensitiveHelp(<[In]> fEnterMode As Boolean)

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("012dd920-7b26-11d0-8ca9-00a0c92dbfe8")> _

Public Interface IDockingWindow

    Sub GetWindow(ByRef phwnd As System.IntPtr)
    Sub ContextSensitiveHelp(<[In]> fEnterMode As Boolean)

    Sub ShowDW(<[In]> fShow As Boolean)
    Sub CloseDW(<[In]> dwReserved As UInt32)
    Sub ResizeBorderDW(prcBorder As IntPtr, <[In], MarshalAs(UnmanagedType.IUnknown)> punkToolbarSite As [Object], fReserved As Boolean)

End Interface

<ComImport()> _

<InterfaceType(ComInterfaceType.InterfaceIsDual)> _

<Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")> _

Public Interface IDeskBand2

    Sub GetBandInfo(dwBandID As UInt32, dwViewMode As UInt32, ByRef pdbi As DESKBANDINFO)
    Sub CanRenderComposited(ByRef pfCanRenderComposited As Boolean)
    Sub GetCompositionState(ByRef pfCompositionEnabled As Boolean)
    Sub SetCompositionState(<MarshalAs(UnmanagedType.Bool)> fCompositionEnabled As Boolean)

End Interface

<ComImport()> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("EB0FE172-1A3A-11D0-89B3-00A0C90A90AC")> _

Public Interface IDeskBand

    Sub GetWindow(ByRef phwnd As System.IntPtr)
    Sub ContextSensitiveHelp(<[In]()> fEnterMode As Boolean)
    Sub ShowDW(<[In]()> fShow As Boolean)
    Sub CloseDW(<[In]()> dwReserved As UInt32)
    Sub ResizeBorderDW(prcBorder As IntPtr, <[In](), MarshalAs(UnmanagedType.IUnknown)> punkToolbarSite As [Object], fReserved As Boolean)
    Sub GetBandInfo(dwBandID As UInt32, dwViewMode As UInt32, ByRef pdbi As DESKBANDINFO)

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("0000010c-0000-0000-C000-000000000046")> _

Public Interface IPersist

    Sub GetClassID(ByRef pClassID As Guid)

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("00000109-0000-0000-C000-000000000046")> _

Public Interface IPersistStream

    Sub GetClassID(ByRef pClassID As Guid)
    Sub IsDirty()
    Sub Load(<[In], MarshalAs(UnmanagedType.[Interface])> pStm As [Object])
    Sub Save(<[In], MarshalAs(UnmanagedType.[Interface])> pStm As [Object], <[In]> fClearDirty As Boolean)
    Sub GetSizeMax(<Out> ByRef pcbSize As UInt64)

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("6d5140c1-7436-11ce-8034-00aa006009fa")> _

Public Interface _IServiceProvider

    Sub QueryService(ByRef guid As Guid, ByRef riid As Guid, <MarshalAs(UnmanagedType.[Interface])> ByRef Obj As [Object])

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("68284faa-6a48-11d0-8c78-00c04fd918b4")> _

Public Interface IInputObject

    Sub UIActivateIO(fActivate As Int32, ByRef msg As MSG)

    '[return:MarshalAs(UnmanagedType.Error)]
    <PreserveSig> _
    Function HasFocusIO() As Int32

    <PreserveSig> _
    Function TranslateAcceleratorIO(ByRef msg As MSG) As Int32

End Interface

<ComImport> _

<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _

<Guid("f1db8392-7331-11d0-8c99-00a0c92dbfe8")> _

Public Interface IInputObjectSite

    <PreserveSig> _
    Function OnFocusChangeIS(<MarshalAs(UnmanagedType.IUnknown)> punkObj As [Object], fSetFocus As Int32) As Int32

End Interface

Public Structure POINT

    Public x As Int32
    Public y As Int32

End Structure

Public Structure MSG

    Public hwnd As IntPtr
    Public message As UInt32
    Public wParam As UInt32
    Public lParam As Int32
    Public time As UInt32
    Public pt As POINT

End Structure

VB Sample

Attributes:

Imports System.Runtime.InteropServices

Imports System.Reflection

''' <summary>

''' Represents different styles of a band object.

''' </summary>

<Flags> _

<Serializable> _

Public Enum BandObjectStyle As UInteger

    Vertical = 1
    Horizontal = 2
    ExplorerToolbar = 4
    TaskbarToolBar = 8

End Enum

''' <summary>

''' Specifies Style of the band object, its Name(displayed in explorer menu) and HelpText(displayed in status bar when menu command selected).

''' </summary>

<AttributeUsage(AttributeTargets.Class)> _

Public Class BandObjectAttribute

    Inherits System.Attribute
    Public Sub New()
    End Sub

    Public Sub New(name__1 As String, style__2 As BandObjectStyle)
        Name = name__1
        Style = style__2
    End Sub
    Public Style As BandObjectStyle
    Public Name As String
    Public HelpText As String

End Class

Documentation
IDeskBand2 on MSDN
Documentation
IDeskBand on MSDN

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • alternate definitions?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions