VB6 DeskTool 窗体代码

'************************* DeskTool 窗体代码

'要换图片的话,调整窗体大小刚好容下图片
'有两张图片背景色不同,一为蓝色(TransColor=QbColor(9)),一为紫色(TransColor=QbColor(13))
'如果Me.Picture使用了 .gif 的话(背景透明图片),则Transcolor = Rgb(66,66,66) 随你设

Option Explicit
Private Sub Form_Load()
   If App.PrevInstance Then Call MsgBox("对不起本程序已在运行中, 不得重复加载!!", vbCritical, "桌面工具"): End
   '将本地路径赋值给变量 AppDisk
   AppDisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
   '****************************************** 透明窗体背景 ************
   TransColor = QBColor(9) 'vbBlue
   Me.BorderStyle = 0: Me.Caption = ""
   Me.BackColor = TransColor
   Rtn = GetWindowLong(hWnd, GWL_EXSTYLE)
   Rtn = Rtn Or WS_EX_LAYERED
   SetWindowLong hWnd, GWL_EXSTYLE, Rtn
   SetLayeredWindowAttributes hWnd, TransColor, 150, LWA_ALPHA Or LWA_COLORKEY '透明度 150
   '将窗体居中显示 (屏幕宽度减去窗体的宽度)除以2 , (屏幕高度减去窗体的高度)除以2
   Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
   SetWindowPos Me.hWnd, -1, 0, 0, 0, 0, 3 '设定总在最前
   '******************* 注册Wshom.ocx
   WinSys = GETSYS
   aa = WinSys & "wshom.ocx"
   If Dir(aa) <> "" Then Shell "regsvr32 /s " & WinSys & "wshom.ocx"
   Call PutDeskTop '设置桌面快捷键
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Call CleanAll
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
   On Error Resume Next
   If Button = 1 Then
      Dim lngReturnValue As Long  '移动窗体
      Call ReleaseCapture
      lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
   Else
      If Button = 2 Then PopupMenu Mform.Pmenu
   End If
End Sub

Private Sub Form_DblClick()
   Call MessageBox(Me.hWnd, "Hello!", "桌面工具", vbOKOnly)
End Sub

Public Sub PutDeskTop() '设置桌面快捷键
   On Error Resume Next
   Dim WshShell, MYKJJ, MYKJJ2
   '**********************桌面快捷键与开始菜单********************************
   aa = AppDisk & "Tool.exe" '设定快捷方式指向的对象
   If Dir(aa) = "" Then Exit Sub
   '************** 桌面
   Set WshShell = CreateObject("Wscript.shell")
   DeskPath = WshShell.SpecialFolders("Desktop")
   Set MYKJJ = WshShell.CreateShortcut(DeskPath & "\桌面工具.lnk") '快捷名称
   MYKJJ.TargetPath = aa '源文件
   MYKJJ.Hotkey = "Ctrl+Alt+F10" '快捷热键
   MYKJJ.Save
End Sub



'************************************* Mform 窗体代码

Option Explicit
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
   If Button = 1 Then '在托盘里按了左键
      WinShow_Click
   Else
      If Button = 2 Then PopupMenu Pmenu '在托盘里按右键弹出菜单
   End If
End Sub

Private Sub WinTop_Click() '窗体置顶
   SetWindowPos DeskTool.hWnd, -1, 0, 0, 0, 0, 3 '设定总在最前
End Sub

Private Sub WinButtom_Click() '窗体置底
   SetWindowPos DeskTool.hWnd, -2, 0, 0, 0, 0, 3 '取消总在最前
End Sub

Private Sub WinTray_Click() '窗体放进托盘
   nfIconData.hWnd = Me.hWnd
   nfIconData.uID = Me.Icon
   nfIconData.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
   nfIconData.uCallbackMessage = WM_MOUSEMOVE
   nfIconData.hIcon = Me.Icon.Handle
   nfIconData.szTip = "桌面工具" & vbNullChar
   nfIconData.cbSize = Len(nfIconData)
   Call Shell_NotifyIcon(NIM_ADD, nfIconData)
   DeskTool.Visible = False
End Sub

Private Sub WinShow_Click() '显示窗体
   Call Shell_NotifyIcon(NIM_DELETE, nfIconData) '退出图标
   DeskTool.Show
End Sub

Private Sub WinExit_Click() '退出程序
   Call CleanAll
End Sub



'************** Module1.bas 模块代码

Option Explicit
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = (-4)
'*************************** 托盘
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public nfIconData As NOTIFYICONDATA
Public Const MAX_TOOLTIP As Integer = 64
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const SW_RESTORE = 9
Public Const SW_HIDE = 0
Public Const LB_ITEMFROMPOINT = &H1A9
Public Type NOTIFYICONDATA
   cbSize           As Long
   hWnd             As Long
   uID              As Long
   uFlags           As Long
   uCallbackMessage As Long
   hIcon            As Long
   szTip            As String * MAX_TOOLTIP
End Type
'*****************************************************************************************
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'*****************************************移动窗体
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Public Const WM_NCLBUTTONDOWN = &HA1, HTCAPTION = 2
'**********************************************************************************
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 WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)
Public Const LWA_ALPHA = &H2
Public Const LWA_COLORKEY = &H1
Global i%, j%, Rtn&, aa$, Fname$, TransColor&, AppDisk$, WinSys$, DeskPath$

Public Sub CleanAll()
   '*****************************
   Dim TmpFrm As Form
   For Each TmpFrm In Forms
      Unload TmpFrm
      Set TmpFrm = Nothing
   Next
   End
End Sub

Public Function GETSYS() As String
   On Error Resume Next
   '获取system32路径
   aa = Trim(Environ("ComSpec"))
   Rtn = InStrRev(aa, "\")
   GETSYS = Mid(aa, 1, Rtn)
End Function
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙班长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值