Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Replicare un drag del mouse
Forum - C# / VB.NET - Replicare un drag del mouse

Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Segnala al moderatore
Postato alle 20:07
Sabato, 28/08/2010
salve a tutti ragazzi... allora vi mostro subito il mio problema e prima di chiedere ci ho provato in 102 modi diversi ma visual studio ce l'ha con me e non funziona anche quando è giusto.. va bè il problema è questo praticamente io registro gli eventi del mouse clik sinistro clik destro ecc.. è fin qui va bene il problema è il drag e non ho la minima idea di come "registrare" un drag..

io il clik destro lo registro cosi:
Codice sorgente - presumibilmente C++

  1. private const int VK_LBUTTON = 0x1;
  2.  short keyState0 = GetAsyncKeyState(VK_LBUTTON);
  3.  
  4.   if (keyState0 == 1 || keyState0 == -32767 || keyState0 == -32768)
  5.                 {
  6.                     mousesin[a] = 1;
  7.                     System.Threading.Thread.Sleep(50);
  8.                 }


dove keystate0==1 ==-32767 sono il clik singolo mentre keystate diventa -32768  quando c'e un drag

e lo riproduco cosi:
Codice sorgente - presumibilmente C# / VB.NET

  1. if (mousesin[a] == 1)
  2.                    { mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, mousex[a], mousey[a], 0, 0); }



ho provato svariati metodi ma non ne funziona 1!! cioè tipo tieni schiacciato per tutta la durata degli 1 per esempio e nn va... ho provato anche funzioni del c# e non vanno non so prorpio come fare ditemi un metodo logico oppure una funzione se ne sapete per favore!
grazie mille!
:k:



PC Case: CABINET AZTEC BLAK - AIR DUCT - CPU: CPU QUAD CORE Q8300 3.0GHZ - RAM: KINGSTON DDR3 4GB (2 x 2gb) 1333MHZ PC3-10600 - Video: 9800GT 1024MB 1GB GDDR3 - HARD DISK: MAXTOR 1000GB SATA2 7200rpm 3,5"
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 12:01
Domenica, 29/08/2010
Hai provato in ogni modo, tranne in quello corretto XD
http://totemslair.org/guide/viewchapter.php?guida=vb&id=95
Il Drag&Drop è una meccanica supportata comunemente dal framework .NET, non c'è bisogno di simulare o inventare niente.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 9:41
Lunedì, 30/08/2010
ciao Totem grazie per la risposta.... sarà la 1000 volta che provi ad aiutarmi! :P
anche se non ho capito come potrei utlizzare il tuo codice!
a me servirebbe più una cosa del genere:
Codice sorgente - presumibilmente Plain Text

  1. mouse_event(tieni premuto il tasto sinistro, mousex[a], mousey[a], 0, 0);



Thejuster il codice funziona probabilmente non hai visto che il mouse non fa clik su coordinata 1 1 perchè l'array per le coordinate e diverso da quello che registra l'1! :)


PC Case: CABINET AZTEC BLAK - AIR DUCT - CPU: CPU QUAD CORE Q8300 3.0GHZ - RAM: KINGSTON DDR3 4GB (2 x 2gb) 1333MHZ PC3-10600 - Video: 9800GT 1024MB 1GB GDDR3 - HARD DISK: MAXTOR 1000GB SATA2 7200rpm 3,5"
PM
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1844
Iscritto: 04/05/2008

Up
-1
Down
V
Segnala al moderatore
Postato alle 10:50
Domenica, 29/08/2010
Credo che vada messo in un ciclo continuo,
perchè il valore di quella variabile cambia rapidamente.

cmq guardo il tuo codice che e completamente sbagliato.
nel senso non vedo una logica nel tuo codice.

se il keystate e 1 oppure in drag, mousesin[a] = 1;

mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, mousex[a], mousey[a], 0, 0);

fai eseguire un click sempre su cordinata x(1) y(1) ?

(ammesso che avvenga)






PM