全部。VB6側邊欄應用程序
我試圖開發一個vb6的'側邊欄'應用程序,我想要像Windows Vista的小工具側邊欄或Google桌面側邊欄一樣行事,其他窗口無法最大限度地發揮它的作用。 我知道發生這種情況的可能性很小,但我只是爲了以防萬一。
目前,我有一個表單,它有多個控件,並在加載時運行一個函數,使其自身成爲屏幕的精確高度,減去任務欄,並且它的'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
要說清楚,我不想要一個'永遠在上面'的功能。我已經擁有了這一點,並且這讓我瘋狂,因爲爲了最大限度地減少關閉其背後的另一個程序(即鉻版,單詞等),表單必須關閉或最小化。此表單必須不允許其他程序在其上最大化,因此,例如,如果用戶最大化Chrome,則Chrome會最大化減去form1.width。 我懷疑這是可能的,因爲就我而言,這將意味着控制鉻,並基本上使其功能最大化爲 me.height = screen.height - ((ABD.rc.Bottom - ABD。 rc.Top)* 12) me.width = screen.width - form1.width 這是不可能的。
無論如何,希望有人可以幫助。正如我所說,我認真懷疑做這項工作的可能性,但如果是這樣,那就更好了。
在此先感謝!
你永遠不會手動在你自己的代碼中實現它。有一個API,請參閱[SHAppBarMessage]的MSDN文檔(https://msdn.microsoft.com/en-us/library/windows/desktop/bb762108(v = vs.85).aspx)。 –
正確...你可以使用[ABM_NEW](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v = vs.85).aspx)註冊AppBar,然後設置它是[ABM_SETPOS](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v = vs.85).aspx)的位置,在[APPBARDATA](https)中指定「ABE_RIGHT」 ://msdn.microsoft.com/en-us/library/windows/desktop/bb773184(v = vs.85).aspx)您傳入的結構。 –