StewSupport
asked on
pressing shift key in vb.net
i want to create an app that automatically send out a shift key like someone just press it on the keyboard. can you help? thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
just to stop screen saver form starting. so it really trying to fake the machine that the computer is not inactive.
i have a loop that every 30 second send the key escape. i set screen saver kicks in if computer is inactive for 1 minute. the escape key is still being hit by the app every 30 seconds but screen saver still kick in until the next esc is hit from the app. why doesn't screen saver just stay off when the esc key is hit?
i have a loop that every 30 second send the key escape. i set screen saver kicks in if computer is inactive for 1 minute. the escape key is still being hit by the app every 30 seconds but screen saver still kick in until the next esc is hit from the app. why doesn't screen saver just stay off when the esc key is hit?
This worked fine for me...successfully preventing the screensaver from invoking. All it does is move the mouse by one pixel in the x and y directions every 59 seconds and then puts it back. I didn't even notice it moving. Running VB.Net 2008 on a 64 bit Vista Home Premium system:
Public Class Form1
Private WithEvents tmr As New Timer
Private Const MOUSEEVENTF_MOVE As Integer = &H1
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, _
ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tmr.Interval = TimeSpan.FromSeconds(59).TotalMilliseconds
tmr.Enabled = True
End Sub
Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick
mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0) ' move the mouse slightly
mouse_event(MOUSEEVENTF_MOVE, -1, -1, 0, 0) ' put it back
End Sub
End Class
ASKER
i had something like that but i guess microsoft detects that the mouse movement was not sent from hardware but software so my code didnt do anything. here is what i had before
Imports System.Windows.Forms
Public Class MouseMover
Inherits System.Windows.Forms.Form
<Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function SetCursorPos(ByVal X As Integer, ByVal Y As Integer) As Boolean
End Function
Private Sub MouseMover_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
Timer1.Enabled = True
Timer1.Interval = 30000
Me.Visible = False
Me.ShowInTaskbar = False
Me.NotifyIcon1.Icon = Me.Icon
Me.NotifyIcon1.Visible = True
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim random As New Random
Dim x As Integer = random.Next
Dim y As Integer = random.Next
SetCursorPos(x, y)
end sub
end class
We'll...give my code a whirl! I used mouse_event() instead of SetCursorPos(). Additionally, I'm simply moving the cursor by ONE pixel to the Right and Down and then putting it RIGHT BACK. It worked on my system (Vista)...
ASKER
i have a loop that every 30 second send the key escape and screen saver kicks in if computer is inactive for 1 minute. the escape key is still being hit by the app but screen saver still kick in until the next esc hit within the next 30 sec it returns to normal screen. why doesn't screen saver just stay off when the esc key is hit?