codice:
Public Class Form1

    Private X As Integer
    Private Y As Integer
    Private shift As Integer = 5
    Private valoreRitorno As Integer = 0

    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim i As Integer = 0
        For i = 37 To 40
            valoreRitorno = GetAsyncKeyState(i)
            If valoreRitorno = -32767 Then
                X = Windows.Forms.Cursor.Position.X
                Y = Windows.Forms.Cursor.Position.Y
                Select Case i
                    Case 37 'SIN
                        Windows.Forms.Cursor.Position = New System.Drawing.Point(X - shift, Y)

                    Case 38 'SU
                        Windows.Forms.Cursor.Position = New System.Drawing.Point(X, Y - shift)

                    Case 39 'DX
                        Windows.Forms.Cursor.Position = New System.Drawing.Point(X + shift, Y)

                    Case 40 'GIU'
                        Windows.Forms.Cursor.Position = New System.Drawing.Point(X, Y + shift)

                    Case Else
                        '...
                End Select
            End If
        Next i

    End Sub

End Class

premetto che non ne so niente di programmazione vb.net,
ho questo codice che dovrebbe muovere il cursore del mouse con la tastiera,
ma avrei bisogno di un paio di piccole modifiche:
- disattivare e attivare l'"ascolto" del programma tramite una scorciatoia (ctrl+alt+qualcosa)
- se possibile, solo quando il programma è attivo, sostituire il cursore con un altro (sempre in formato .cur)


ps: se qualcuno può anche dirmi come faccio a compilare e creare l'exe avendo Visual Basic 2008 Express Edition gliene sarei grato (copiando il codice mi dice "Errore1 La clausola Handles richiede una variabile WithEvents definita nel tipo che la contiene o in uno dei suoi tipi di base."