|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
[visualbasic] muovere mouse con la tastiera
salve, premetto che essendo ferrato in altri linguaggi non so neanche cosa sia visualbasic ..
spulciando un pò per la rete ho visto che con questo vb è possibile realizzare quello che cerco: ossia un programma che mi permetta di scegliere i tasti da abbinare al movimento del mouse e regolarne la velocità (win xp). Per un programmatore vb non dovrebbe essere difficile..credo...mi aiutate? Ps già provato varie utility come mouseemu e autokey..non vanno
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare Ultima modifica di thewebsurfer : 12-01-2009 alle 21:01. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Beh, peggio per te...
Quote:
1. Anzitutto le funzioni che ti permettono di leggere / impostare da codice le coordinate X ed Y del puntatore del mouse. Si può fare con l'uso di 2 semplici chiamate API e di un tipo "Punto" personalizzato : Codice:
'Tipo Punto:
Private Type PT
X As Long
Y As Long
End Type
'Leggi posizione puntatore :
Private Declare Function GetCursorPos Lib "User32" (lpPoint As PT) As Long
'Imposta posizione puntatore :
Private Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Long, ByVal Y As Long) As Long
Tipicamente si possono usare gli 8 tasti freccia del tastierino numerico... Sul codice che implementa questo "ascolto" ( in pratica un piccolo keylogger in VB... http://www.hwupgrade.it/forum/showthread.php?t=1865043Metti insieme 1. e 2. e avrai la soluzione. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
bè l'unica cosa che ho capito è che sto visual basic sembra più pseudocodice che un linguaggio vero e proprio
cmq resta il fatto che non saprei scriverne una riga non è che ti va di esercitarti per divertimento a fare questo programmino?
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Comunque puoi farlo in quasi qualsiasi linguaggio di programmazione tu conosci. Oppure puoi vedere se le accessibility options fanno al caso tuo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
Quote:
se conoscessi C o Java tanto da arrivare alla gestione del mouse non avrei aperto il thread con java probabilmente si può fare in maniera abbastanza agevole, ma io odio java e java odia me, quindi apro eclipse solo quando è strettamente necessario nessuno allora vuole buttarsi a scrivere queste 10 righe?
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Comunque hai fatto davvero un bel complimento a VB. Se esistesse un linguaggio capace di far eseguire alla macchina senza eccezioni le istruzioni passate in pseudo-codice, interpretando alla meglio le tue reali intenzioni, come lo classificheresti ? Linguaggio fiacco ? Non penso proprio. Mai visto Star Trek ? Uno dice "Computer, fammi questo e quest'altro." e lui esegue... Io non ho mai scritto una sola riga di Python ( e forse sarà proprio il prossimo linguaggio che mi imparerò ), ma non mi sogno di sminuirlo solo perchè non assomiglia al C. Per il codice volentieri ( magari specifica quale VB usi ), appena ho un po' di tregua cerco di fare un esempio completo ( anche se veramente ti ho già dato praticamente tutto... ). Causa arrivo notebook nuovo, sono parecchio intrippato ! |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
OK. Più semplice del previsto. Ecco una soluzione :
Ho deciso di gestire per ora solo i 4 pulsanti freccia, niente tastierino numerico, anche perchè i codici dei pulsanti cambiano a seconda che sia o meno attivo il Bloc Num. Tutto ciò che serve è una Windows Form e un oggetto Timer. Il Timer deve essere già Enabled ed avere un intervallo molto breve, tipo 10 msec. -> Soluzione per VB6, VBA : Codice:
Private Type PT
X As Long
Y As Long
End Type
Private Const shift As Integer = 5
Private Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As PT) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private valoreRitorno As Integer
Private Sub Timer1_Timer()
Dim i As Integer
For i = 37 To 40
valoreRitorno = GetAsyncKeyState(i)
If valoreRitorno = -32767 Then
Dim Punto As PT
Dim R As Long
Dim Rx As Long
Dim Ry As Long
R = GetCursorPos(Punto)
Rx = Punto.X
Ry = Punto.Y
Select Case i
Case 37 'SIN
SetCursorPos Rx - shift, Ry
Case 38 'SU
SetCursorPos Rx, Ry - shift
Case 39 'DX
SetCursorPos Rx + shift, Ry
Case 40 'GIU'
SetCursorPos Rx, Ry + shift
Case Else
'...
End Select
End If
Next i
End Sub
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
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
grazie veramente
piccola modifica se possibile mi sta bene l'uso delle frecce direzionali, xò è possibile disattivare e attivare "l'ascolto" del programma con una shortcut? praticamente ho pensato di mettere il programma in esecuzione automatica all'avvio di win, ma se è sempre in ascolto perdo l'uso delle frecce direzionali e muovo solo il mouse.. l'ideale sarebbe una scorciatoia tipo ctrl-alt-qualcosa che disattivi e attivi l'ascolto ps: se dici che è meglio il vb net uso quello....mi linki il compilatore? ![]() pps: ora se ti serve un aiuto in C/assembler/java/html/css/php/javascript/ajax e forse qualcos'altro che ho dimenticato ptvizzami pure
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare Ultima modifica di thewebsurfer : 14-01-2009 alle 14:59. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ma l'opzione gia' integrata in Windows per gestire il mouse con le frecce non andava bene?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
Quote:
ps: perdiù non capisco perchè non funziona assegnando al telecomando i tasti del tastierino
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare Ultima modifica di thewebsurfer : 14-01-2009 alle 15:21. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
In realta' e' configurabile, e con la dovuta configurazione puo' arrivare a metterci 2-3 secondi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
Quote:
praticamente win accetta SOLO i segnali derivanti dal tastierino numerico della tastiera, se assegno ad un pulsante del telecomando, ad esempio, 4(tn) il puntatore non si muove
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
mi hai abbandonato nel progetto?
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Dato che abbiamo già a disposizione la nostra bella chiamata API GetAsyncKeyState, la risolverei così : 1. Aggiungo un nuovo oggetto Timer, uguale a Timer1 come impostazioni ( enabled e interval ). 2. Il nuovo Timer2 ascolterà solo la pressione delle combinazioni tasti utili ad attivare/disattivare l'ascolto di Timer1, perciò nel suo evento Tick : Codice:
'CTRL + ALT + A = Attiva Ascolto su Timer1
'CTRL + ALT + D = Disattiva Ascolto su Timer1
If GetAsyncKeyState(17) Then
If GetAsyncKeyState(18) Then
If GetAsyncKeyState(65) Then
Timer1.Enabled = True
End If
If GetAsyncKeyState(68) Then
Timer1.Enabled = False
End If
End If
End If
Per quanto riguarda la tua scelta di optare per VB 2008, non posso che essere d'accordo. Trovi la Express gratuita qui : http://www.microsoft.com/Express/VB/ |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Salerno
Messaggi: 4256
|
quindi ricapitolando..qual è il codice completo?
ti ripeto che in vb proprio non riesco a raccapezzarmici ps: sto installando il file che mi hai linkato...non è che microsoft sql va in conflitto con mysql?
__________________
NABBA Italia Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare Ultima modifica di thewebsurfer : 19-01-2009 alle 19:27. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:07.




















