VB6 侧边栏应用程序

VB6 sidebar app

全部。

我正在尝试使用 vb6 开发一个 'sidebar' 应用程序,我希望它的行为类似于 windows Vista 的小工具侧边栏或 Google 桌面侧边栏,就其他 windows 无法最大化它。 我知道这种情况发生的可能性可能很小,但我问是为了以防万一。

目前,我有一个具有多个控件的表单,并在加载时运行一个函数,它使自己成为屏幕的精确高度,减去任务栏,并且它的 'left' 位置由计时器设置为 'screen.width - me.width',因此它将在屏幕最右侧以全高开始,并且无法移动。高度的代码如下,如果需要的话。

Declare Function GetUserNameA Lib "advapi32.dll" (ByVal lpBuffer As String, nSize As Long) 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 SetLayeredWindowAttributes Lib "user32" ( _
            ByVal hwnd As Long, _
            ByVal crKey As Long, _
            ByVal bAlpha As Byte, _
            ByVal dwFlags As Long) As Long

Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2


Private Const ABM_GETTASKBARPOS = &H5

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type

Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long

Function Fixheight()
Dim ABD As APPBARDATA

SHAppBarMessage ABM_GETTASKBARPOS, ABD

Form1.Height = Screen.Height - ((ABD.rc.Bottom - ABD.rc.Top) * 12)
If Form1.Height <= 600 Then
Form1.Height = Screen.Height
End If
End Function

明确地说,我不想要 'always on top' 函数。我已经有了它,它让我发疯,因为我必须关闭或最小化表单才能最大化、最小化或关闭它后面的另一个程序(即 chrome、word 等)。此表单必须不允许其他程序对其进行最大化,例如,如果用户最大化 Chrome,chrome 将最大化负 form1.width。 我怀疑这是可能的,因为就我而言,这意味着控制 chrome,并从本质上使其最大化功能 me.height = screen.height - ((ABD.rc.Bottom - ABD.rc.Top) * 12) me.width = screen.width - form1.width 这是不可能的。

无论如何,希望有人能提供帮助。正如我所说,我严重怀疑这项工作的可能性,但如果是这样,那就更好了。

提前致谢!

感谢 Ken White, I googled SHAppBarMessage and found the following website,提供了具有我需要的功能的可下载源。我现在必须实施它!

很高兴我问了!谢谢!

编辑:发现这个西班牙语 website,虽然需要 Google 翻译的一些帮助,但更适合我的需要。只需要弄清楚如何让它在右手边工作!再次感谢!