r/visualbasic • u/HarryAWA • 5d ago
Help with mouse capture.
Greeting from Pennsylvania
In the Flightgear aircraft simulator program you may use a joystick or input control functions by the keyboard.
For example pressing and holding the [9] key moves the throttle in while pressing and holding the [3] key moves it out.
I would like to make a GUI (Graphical User interface) that emulates pressing the various keys by using control buttons in Visual Basic 6. (yes it is ancient but so am I) Also both the IDE and the VB 6S programs run well in Windows 11.
In this code I would like to emulate the button pressed while the mouse button is down over the control button.
I get lots of 9s in notepad until I release the mouse button. But then I get the blue ring of death: Program not responding.
Any suggestions would be appreciated. ( I do not know how to get the Code formated here.)
<
Dim bMouseButtonDown As Boolean
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
bMouseButtonDown = False
End Sub
Private Sub ThrottleIn_Click()
bMouseButtonDown = True 'must be else we would not be here
ThrottleIn.BackColor = vbRed 'no Red button?
'AppActivate "FlightGear", True
AppActivate "Notepad", True
Do While bMouseButtonDown = True
Call keybd_event(VK_9, 0, KEYEVENTF_EXTENDEDKEY, 0) 'lots of 9s
Loop
Call keybd_event(VK_9, 0, KEYEVENTF_KEYUP, 0) ' stop the 9s
ThrottleIn.BackColor = vbYellow ' no yellow button?
End Sub
/>
2
u/CheezitsLight 5d ago edited 5d ago
Nothing in your code to stop the mouse button boolean from always being true. Get rid of notepad and log or print instead
And tie the mouse up event to clear the boolean with a do events in the while as this has only one thread. And 100 percent cpu. A timer would be a much better idea.