![VBA - 屏幕亮度自动增加/减少](https://linux22.com/image/1595864/VBA%20-%20%E5%B1%8F%E5%B9%95%E4%BA%AE%E5%BA%A6%E8%87%AA%E5%8A%A8%E5%A2%9E%E5%8A%A0%2F%E5%87%8F%E5%B0%91.png)
问题:
我的笔记本电脑屏幕亮度随机降低,然后慢慢恢复。自从我使用宏淡入淡出用户表单以来,就一直发生这种情况。
我甚至后悔使用了那个宏,并且几周前就删除了那个宏。
但是,从那时起,笔记本电脑的屏幕亮度就时亮时灭,突然降低,然后突然缓慢增加,而我并没有触发它。
我已经删除了衰退宏!
现在我的问题是,我怎样才能永久地最大化笔记本电脑屏幕的亮度,我 90% 确定它受到了衰退我几周前使用过的宏。
我该怎么办?编写另一个 VBA 来永久提高亮度?
我怎样才能解决这个问题?
下面是我用过的宏代码,已经删除了。我后悔用过它。链接和代码如下:
https://wellsr.com/vba/2018/excel/vba-fade-userform-in-and-out/
'PLACE IN YOUR USERFORM CODE
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As LongPtr, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
#Else
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" ( _
ByVal hwnd As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
#End If
'Constants for title bar
Private Const GWL_STYLE As Long = (-16) 'The offset of a window's style
Private Const GWL_EXSTYLE As Long = (-20) 'The offset of a window's extended style
Private Const WS_CAPTION As Long = &HC00000
'Style to add a titlebar
Private Const WS_EX_DLGMODALFRAME As Long = &H1 'Controls if the window has an icon
'Constants for transparency
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_COLORKEY = &H1 'Chroma key for fading a certain color on your Form
Private Const LWA_ALPHA = &H2 'Only needed if you want to fade the entire userform
'sleep
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64-Bit versions of Excel
Dim formhandle As LongPtr
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'For 32-Bit versions of Excel
Dim formhandle As Long
#End If
Private Sub UserForm_Initialize()
'force the form to fully transparent before it even loads
formhandle = FindWindow(vbNullString, Me.Caption)
SetWindowLong formhandle, GWL_EXSTYLE, GetWindowLong(formhandle, GWL_EXSTYLE) Or WS_EX_LAYERED
SetOpacity (0)
End Sub
Private Sub UserForm_Activate()
'HideTitleBarAndBorder Me 'hide the titlebar and border
FadeUserform Me, True 'Fade your userform in
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
FadeUserform Me, False 'Fade your userform in
End Sub
Sub FadeUserform(frm As Object, Optional FadeIn As Boolean = True)
'Defaults to fade your userform in.
'Set the 2nd argument to False to Fade Out.
Dim iOpacity As Integer
formhandle = FindWindow(vbNullString, Me.Caption)
SetWindowLong formhandle, GWL_EXSTYLE, GetWindowLong(formhandle, GWL_EXSTYLE) Or WS_EX_LAYERED
'The following line sets the userform opacity equal to whatever value you have in iOpacity (0 to 255).
If FadeIn = True Then 'fade in
For iOpacity = 0 To 255 Step 15
Call SetOpacity(iOpacity)
Next
Else 'fade out
For iOpacity = 255 To 0 Step -15
Call SetOpacity(iOpacity)
Next
Unload Me 'unload form once faded out
End If
End Sub
Sub SetOpacity(Opacity As Integer)
SetLayeredWindowAttributes formhandle, Me.BackColor, Opacity, LWA_ALPHA
Me.Repaint
Sleep 50
End Sub
Sub HideTitleBarAndBorder(frm As Object)
'Hide title bar and border around userform
'Source: https://wellsr.com/vba/2017/excel/remove-window-border-title-bar-around-userform-vba/
#If VBA7 Then
Dim lngWindow As LongPtr
Dim lFrmHdl As LongPtr
#Else
Dim lngWindow As Long
Dim lFrmHdl As Long
#End If
lFrmHdl = FindWindow(vbNullString, frm.Caption)
'Build window and set window until you remove the caption, title bar and frame around the window
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
SetWindowLong lFrmHdl, GWL_STYLE, lngWindow
lngWindow = GetWindowLong(lFrmHdl, GWL_EXSTYLE)
lngWindow = lngWindow And Not WS_EX_DLGMODALFRAME
SetWindowLong lFrmHdl, GWL_EXSTYLE, lngWindow
DrawMenuBar lFrmHdl
End Sub
(已解决,在下面的 AppleOddity 和 HarryMC 的帮助下...非常感谢!!)。解决方案在随附的屏幕截图中,即检查三件事:
已启用显示亮度,需要禁用(“关闭”)
显示屏亮度变暗,需要设置为 100%
显示亮度,需要设置为100%
你们太棒了!我很喜欢 StackExchange 这个网站!