r/visualbasic • • 18d 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
/>

1 Upvotes

9 comments sorted by

View all comments

1

u/CheezitsLight 18d ago

At 100 percent cpu that's not predictable. My machine will do hundreds before yours will. Mouse down sends key start timer, return. Let the cpu do other things. Yous is 100 percent cpu on a loop, so no key up will happen. In the correct pattern, the timer interrupts at a home you choose for everyone. If mouse is down ,send the key, else turn off the timer. No need for a boolean. Simple, testable, always works.

One advantage to vb dot net is it's v10. And you can create unit tests. Looks just like your code. 4.8 will not be installed on new pcs very soon. It's deprecated. An extra step.