添加模块,代码如下
Option Explicit
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
Private Const GWL_EXSTYLE = -20
Private Const WS_EX_LAYERED = &H80000
Public Sub setfrm(frm As Form, ByVal limpid As Long) ' 设置窗体透明度
Call SetWindowLong(frm.hWnd, GWL_EXSTYLE, GetWindowLong(frm.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(frm.hWnd, 0, limpid, LWA_ALPHA) 'limpid在0--255之间
End Sub
========
窗体级变量
Option Explicit
Dim showfrm As Boolean
Dim i As Integer
Dim closefrm As Boolean
窗体登陆事件
Private Sub Form_Load()
Call setfrm(Me, 0)
showfrm = True
End Sub
窗体卸载事件
Private Sub Form_Unload(Cancel As Integer)
If closefrm = True Then Exit Sub
Cancel = 1
showfrm = False
Timer1.Enabled = True
End Sub
timer事件
Private Sub Timer1_Timer()
If showfrm Then
i = i + 3
If i >= 255 Then
i = 255
Timer1.Enabled = False
End If
Else
i = i - 2
If i <= 0 Then
i = 0
closefrm = True
Call talkewithme
Unload Me
Exit Sub
Timer1.Enabled = False
End If
End If
setfrm Me, i
End Sub