VB6边栏应用程序

VB6边栏应用程序,vb6,sidebar,Vb6,Sidebar,全部 我正试图用vb6开发一个“侧边栏”应用程序,我希望它能像WindowsVista的gadget侧边栏或Google桌面侧边栏一样运行,因为其他窗口无法通过它最大化。 我知道发生这种情况的可能性很小,但我只是想以防万一 目前,我有一个窗体,它有多个控件,并在加载时运行一个函数,使其自身成为屏幕的精确高度,减去任务栏,它的“左”位置由计时器设置为“screen.width-me.width”,因此它将从屏幕最右侧的全高开始,并且无法移动。如有必要,高度代码如下所示 Declare Functi

全部

我正试图用vb6开发一个“侧边栏”应用程序,我希望它能像WindowsVista的gadget侧边栏或Google桌面侧边栏一样运行,因为其他窗口无法通过它最大化。 我知道发生这种情况的可能性很小,但我只是想以防万一

目前,我有一个窗体,它有多个控件,并在加载时运行一个函数,使其自身成为屏幕的精确高度,减去任务栏,它的“左”位置由计时器设置为“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
将函数GetUserNameA Lib“advapi32.dll”(ByVal lpBuffer作为字符串,nSize作为Long)声明为Long
公共声明函数GetWindowLong Lib“user32”别名“GetWindowLongA”(_
再见,只要_
ByVal nIndex As Long)As Long
公共声明函数SetWindowLong Lib“user32”别名“SetWindowLongA”(_
再见,只要_
ByVal nIndex只要_
ByVal dwNewLong As Long)As Long
公共声明函数SetLayeredWindowAttributes库“user32”(_
再见,只要_
ByVal crKey只要_
ByVal bAlpha作为字节_
ByVal dwFlags As Long)As Long
公共常量GWL_样式=(-16)
公共常数GWL_EXSTYLE=(-20)
公共常数WS_EX_分层=&H80000
公共常量LWA_COLORKEY=&H1
公共常数LWA_α=&H2
私人建筑ABM_GETTASKBARPOS=&H5
私有类型RECT
左尽可能长
顶长
对,只要
底部一样长
端型
私有类型APPBARDATA
尽可能长
只要
uCallbackMessage尽可能长
尽可能长
rc As RECT
lpram尽可能长
端型
私有声明函数SHAppBarMessage Lib“shell32.dll”(ByVal dwMessage为Long,pData为APPBARDATA)为Long
函数Fixheight()
尺寸ABD为APPBARDATA
SHAppBarMessage ABM_GETTASKBARPOS,ABD
表格1.高度=屏幕高度-((ABD.rc.底部-ABD.rc.顶部)*12)
如果Form1.Height多亏了,我在谷歌上搜索了ShappArmMessage,发现了以下内容,提供了一个可下载的源代码,其中包含了我所需要的功能。我现在就要实现它!!


很高兴我问了!谢谢大家!


编辑:发现这个西班牙语,虽然需要谷歌翻译的帮助,但更适合我的需要。只需要找出如何让它在右手边工作!再次感谢

您永远不会在自己的代码中手动实现这一点。这有一个API;请参阅MSDN的文档。对……您可以使用注册AppBar,然后使用设置其位置,在传入的结构中指定
ABE_Right