📄 taskbar.ctl
字号:
End With
End Sub
Private Sub Timer2_Timer()
EnumTasks1.GetWindows
If Buttons.Count <> EnumTasks1.RunningAppCount Then
Buttons.Count = EnumTasks1.RunningAppCount
LoadTasks
End If
End Sub
Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim HoldIndex As Integer
HoldIndex = GetButtonIndex(x)
If HoldIndex <> 0 Then
If fClassList(HoldIndex).IconIndex <> 0 Then
If fClassList(HoldIndex).Enabled = True Then
LoadBmpMenuLines fClassList(HoldIndex).Right - fClassList(HoldIndex).Left - 1, Color_Cent, fClassList(HoldIndex).Left, 0
ReadIcon fClassList(HoldIndex).IconIndex, fClassList(HoldIndex).Left, 2, 2, fClassList(HoldIndex).Arrow, fClassList(HoldIndex).Enabled
End If
End If
End If
If Button = vbRightButton Then
FrmTaskBarMenu.Top = Screen.Height - UserControl.Height - FrmTaskBarMenu.Height
FrmTaskBarMenu.Left = x * Screen.TwipsPerPixelX
If FrmTaskBarMenu.Left + FrmTaskBarMenu.Width > Screen.Width Then FrmTaskBarMenu.Left = Screen.Width - FrmTaskBarMenu.Width
FrmTaskBarMenu.ShowForm
End If
End Sub
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
RepaintIcon GetButtonIndex(x)
End Sub
Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim HoldIndex As Integer
HoldIndex = GetButtonIndex(x)
If HoldIndex <> 0 Then
If fClassList(HoldIndex).IconIndex <> 0 Then
If fClassList(HoldIndex).Enabled = True Then
LoadBmpMenuLines fClassList(HoldIndex).Right - fClassList(HoldIndex).Left, Color_Cent, fClassList(HoldIndex).Left, 0
ReadIcon fClassList(HoldIndex).IconIndex, fClassList(HoldIndex).Left, 2, 2, fClassList(HoldIndex).Arrow, fClassList(HoldIndex).Enabled, 50
RaiseEvent ButtonClicked(HoldIndex, Button)
End If
End If
End If
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
hold_Style = PropBag.ReadProperty("hold_Style", Red_Hat)
End Sub
Private Sub UserControl_Resize()
LoadGUI
End Sub
Function AddButton(Icon As IconList, Arrow As Boolean, Enabled As Boolean)
Dim x As Integer
x = LastButtonLeft + ReadIcon(Icon, LastButtonLeft, , , Arrow, Enabled) + 5
If Arrow = True Then
LoadBmpMenuLines 1, Color_ARROW, LastButtonLeft, 0
End If
AddListData LastButtonLeft, x, Icon, Arrow, Enabled
LastButtonLeft = x
CurrentButtonOver = -1
End Function
Private Function AddListData(Left As Integer, Right As Integer, Icon As IconList, Arrow As Boolean, Enabled As Boolean)
Dim Container As New TaskBar_Container
Container.Left = Left
Container.Right = Right
Container.IconIndex = Icon
Container.Arrow = Arrow
Container.Enabled = Enabled
fClassList.Add Container
End Function
Function GetButtonIndex(x) As Integer
Dim i
For i = 1 To fClassList.Count
If x > fClassList(i).Left And x < fClassList(i).Right Then
GetButtonIndex = i
Exit Function
End If
Next
End Function
Function ReadIcon(Index As IconList, Left As Integer, Optional OffsetX As Integer = 0, Optional OffsetY As Integer = 0, Optional Arrow As Boolean = False, Optional Enabled As Boolean = True, Optional Brightness As Integer = 0) As Integer
Select Case Index
Case 0
ReadIcon = LoadBmpMenuLines(1, Color_SPACER, Left + OffsetX, OffsetY)
Case 1
ReadIcon = LoadBmpMenuLines(1, Color_REDHAT, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 2
ReadIcon = LoadBmpMenuLines(1, Color_INTERNET, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 3
ReadIcon = LoadBmpMenuLines(1, Color_MAIL, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 4
ReadIcon = LoadBmpMenuLines(1, Color_LETTER, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 5
ReadIcon = LoadBmpMenuLines(1, Color_GRAPH, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 6
ReadIcon = LoadBmpMenuLines(1, Color_SPREADSHEET, Left + OffsetX, OffsetY, Enabled, Brightness)
Case 7
ReadIcon = LoadBmpMenuLines(1, Color_PRINTER, Left + OffsetX, OffsetY, Enabled, Brightness)
End Select
If Arrow = True And Index <> Spacer Then
LoadBmpMenuLines 1, Color_ARROW, Left + OffsetX, OffsetY
End If
End Function
Function RepaintIcon(Index As Integer)
If Index <> 0 Then
If CurrentButtonOver <> Index Then
If fClassList(Index).IconIndex <> 0 Then
If fClassList(Index).Enabled = True Then
LoadBmpMenuLines fClassList(Index).Right - fClassList(Index).Left, Color_Cent, fClassList(Index).Left, 0
'LoadBmpMenuLines 1, Color_OVER, fClassList(Index).Left, 1
ReadIcon fClassList(Index).IconIndex, fClassList(Index).Left, 2, 2, fClassList(Index).Arrow, fClassList(Index).Enabled, 50
End If
End If
ResetLastButton
CurrentButtonOver = Index
End If
Else
ResetLastButton
End If
End Function
Function ResetLastButton()
If CurrentButtonOver <> -1 Then
LoadBmpMenuLines fClassList(CurrentButtonOver).Right - fClassList(CurrentButtonOver).Left, Color_Cent, fClassList(CurrentButtonOver).Left, 0
ReadIcon fClassList(CurrentButtonOver).IconIndex, fClassList(CurrentButtonOver).Left, 0, 0, fClassList(CurrentButtonOver).Arrow, fClassList(CurrentButtonOver).Enabled
End If
CurrentButtonOver = -1
End Function
Function ButtonEnable(Index As Integer, Enable As Boolean)
fClassList(Index).Enabled = Enable
RepaintIcon Index
ResetLastButton
End Function
Function LoadWindows()
EnumTasks1.GetWindows
Dim x As Integer, y As Integer, w, z
y = EnumTasks1.RunningAppCount
For x = 0 To y - 1
w = EnumTasks1.GetAppName(x)
z = EnumTasks1.GetAppHWND(x)
EnumTasks1.GetIcon Picture1, x
ImageList1.ListImages.Add , , Picture1.Image
Picture1.Cls
ListView1.ListItems.Add , , w, x + 1, x + 1
Next
End Function
Function LoadTasks()
Timer1.Enabled = True
EmptyButtonBin
EnumTasks1.GetWindows
Buttons.Count = EnumTasks1.RunningAppCount
Buttons.Left = fClassList(fClassList.Count).Right + 2
Buttons.MaxWidth = UserControl.ScaleWidth - fClassList(fClassList.Count).Right - 150
Buttons.Top = 5
Buttons.BarWidth = 0
Buttons.MODcount = EnumTasks1.RunningAppCount Mod 2
Dim x As Integer
For x = 0 To EnumTasks1.RunningAppCount - 1
LoadTaskButton x
LoadEmpytButton
Next
Timer2.Enabled = True
End Function
Function LoadTaskButton(Index As Integer)
Dim TempWidth As Integer
If Buttons.MODcount = 0 Then
TempWidth = EnumTasks1.RunningAppCount / 2
Else
TempWidth = (EnumTasks1.RunningAppCount + 1) / 2
End If
TaskBarButton1(Index).Width = (Buttons.MaxWidth - 30) / TempWidth
Buttons.BarWidth = Buttons.BarWidth + TaskBarButton1(Index).Width
If Buttons.BarWidth >= Buttons.MaxWidth Then
Buttons.Top = Buttons.Top + TaskBarButton1(Index).Height
Buttons.BarWidth = 0
Buttons.Left = fClassList(fClassList.Count).Right + 2
End If
TaskBarButton1(Index).Left = Buttons.Left
TaskBarButton1(Index).Top = Buttons.Top
TaskBarButton1(Index).OffSet = 25
TaskBarButton1(Index).Visible = True
TaskBarButton1(Index).Caption = EnumTasks1.GetAppName(Index)
TaskBarButton1(Index).intHWND = EnumTasks1.GetAppHWND(Index)
EnumTasks1.GetIcon Picture1, Index
ImageList1.ListImages.Add , , Picture1.Image
Dim XY As String
XY = RipPicture(Picture1.BackColor)
TaskBarButton1(Index).Image = XY
AddListButtonData XY
TaskBarButton1(Index).PrintIcon XY
Picture1.Cls
Buttons.Left = Buttons.Left + TaskBarButton1(Index).Width
TaskBarButton1(Index).SubClassMe
End Function
Private Function AddListButtonData(Image As String)
Dim Container As New TaskBarButton_Container
Container.Image = RipPicture(Picture1.BackColor)
DoEvents
fClassButton.Add Container
End Function
Function LoadEmpytButton()
Load TaskBarButton1(TaskBarButton1.Count)
End Function
Function EmptyButtonBin()
Dim x
TaskBarButton1(0).UnSubClassMe
For x = 1 To TaskBarButton1.Count - 1
TaskBarButton1(x).UnSubClassMe
Unload TaskBarButton1(x)
Next
End Function
Public Function SubClassOff()
EmptyButtonBin
End Function
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "hold_Style", hold_Style, Red_Hat
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -