VB.net Click through form
I'm trying to make a program for my late night star gazing, I need my
laptop screen to be only red, so I want to make a program that acts as a
red filter. It would cover the whole screen and be transparent + red. The
user can click through it, it would be just like putting a piece of
transparent red plastic in-front of the screen.
So far I have a form that sizes itself to what ever your screen size is,
and moves itself to the upper left corner.
I need to make all clicks on the form pass through, as I will eventually
make the form transparent and red, but I don't want the user to be able to
interact with it.
Public Class Form1
Dim Screens As Array
Dim TotalWidth As Integer
Dim TotalHeight As Integer
Dim Heights As List(Of Integer) = New List(Of Integer)
'Load / Close
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Screens = Screen.AllScreens
For I As Integer = 0 To UBound(Screens)
TotalWidth += Screens(I).Bounds.Width
Heights.Add(Screens(I).Bounds.Height)
Next
TotalHeight = Heights.Max()
Me.Width = TotalWidth
Me.Height = TotalWidth
Me.Location = New Point(0, 0)
'Make it click through
SetWindowLong(Me.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT)
End Sub
'Click Through Functionality
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal
hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_EXSTYLE = -20
Const WS_EX_TRANSPARENT = &H20
End Class
This is what I have so far, the part after "'Click Through Functionality"
I found online, however, it gives me this error:
A call to PInvoke function 'Red Filter!Red_Filter.Form1::SetWindowLong'
has unbalanced the stack. This is likely because the managed PInvoke
signature does not match the unmanaged target signature. Check that the
calling convention and parameters of the PInvoke signature match the
target unmanaged signature.
I do not know how the code I found online works, but the error happens in
the last line of the form's load event.
Does anyone know how to make a form click-through?
No comments:
Post a Comment