2

The Problem:

Screen brightness of my laptop randomly decreases and then slowly increases back. This has happened since I've used a macro that fades my User Form in-and-out.

I regretted even using that macro and have since deleted that macro several weeks ago.

However, since at that time, laptop's screen brightness comes on and off, decreased suddenly and then increase slowly suddenly without me triggering it.

I've already deleted that fading macro!

Now my question is that, how could I permanently maximize the brightness of the laptop screen, which I'm 90% sure that it was influenced/impacted by the fading macro that I used several weeks ago.

What can I do, Write another VBA to permanently raise brightness?

How can I fix this?

Below is the macro code that I used and have already deleted. I regret using it. Link and code below:

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

(SOLVED, with the help of AppleOddity and HarryMC below... Thank you very much!!). The solution in screenshot attached, which is to check on three things:

  • Enabled Display Brightness, need to disable (turn "Off")

  • Dimmed Display Brightness, need to set at 100%

  • Display Brightness, need to set at 100%

You guys are awesome!! I love this website StackExchange!!

enter image description here

6
  • 1
    It's unusual issue that still the VBA is effective since been deleted !! I would like to suggest first just check the Display setting using the control panel, second edit the post & add the VBA code you have has used, will help us to understand the impact !! Jun 29, 2019 at 6:45
  • 1
    What were the contents of that macro?
    – harrymc
    Jun 29, 2019 at 6:56
  • Code added to my post above. Let me try control panel (again), didn't solve the problem when I tried adjusting control panel a few weeks ago. (Btw, Rajesh, thank you very much for fixing my questions, I'm very new to VBA, thank you so much!!)
    – SofiaEd
    Jun 29, 2019 at 7:20
  • 1
    Disable adaptive brightness if it is enabled. Jun 29, 2019 at 7:40
  • 3
    This macro shouldn't have any general effect on Windows itself, as it only works on windows of applications and in addition it needs to be run. If this is a general effect on the desktop, then you might have enabled Adaptive Brightness. If the effect is only on user forms, then the macro is still running somehow.
    – harrymc
    Jun 29, 2019 at 8:08

0

You must log in to answer this question.

Browse other questions tagged .