Page 1 sur 1
Position du curseur
Publié : ven. 06/août/2004 23:34
par Aranoth
Petit tips pour avoir la position du curseur à l'écran, sans passer par ExamineMouse(), et donc sans devoir relacher la souris a chaque restauration etc...
Je débute avec les buffers, donc si on peut optimiser, n'hésitez pas à poster
Code : Tout sélectionner
Structure mse
x.l
y.l
EndStructure
*Pos.mse=AllocateMemory(2000)
GetCursorPos_(*Pos)
Debug *Pos\x
Debug *Pos\y
voila

Publié : sam. 07/août/2004 0:02
par Chris
J'ai sans doute pas compris l'astuce, mais pour obtenir le même résultat que ton code, pas besoin de créer une structure, puisqu'elle existe déjà.
C'est la structure POINT.
Et pas besoin de passer par un buffer non plus.
(Mais si tu fais un buffer, c'est sans doute que tu as une bonne raison

)
Ca donne ça:
Ce code donne exactement le même résultat

Publié : sam. 07/août/2004 9:13
par Flype
oui et un petit exemple pour jouer avec :
Code : Tout sélectionner
n=500
Dim Pos.Point(n)
MessageRequester("CursorPos","Bougez la souris pdt quelques secondes")
For i=0 To n
GetCursorPos_(Pos(i))
Delay(1)
Next
MessageRequester("CursorPos","Replay")
For i=0 To n
SetCursorPos_(Pos(i)\x,Pos(i)\y)
Delay(1)
Next
Publié : sam. 07/août/2004 12:20
par Backup
exellent !!
manque plus qu'a la faire cliquer !!!
[senario]
a un certain temps (ou a un temps certain)
la souris va toute seul sur le bouton demarer
elle clique au bon endroit pour arreter la machine !!
[/senario]
bonjour la blague !!!

Publié : sam. 07/août/2004 13:31
par Oliv
reagarde dans la partie débutant ici ou sur le musée et ton scénario se réalisera

(enfin juste le clique)
Publié : sam. 07/août/2004 17:48
par Backup
tu veux dire le marier avec le code de Chris que voila ??
(section application ) !!
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
SetTimer_(WindowID(),1,3000,0)
Repeat
Select WaitWindowEvent()
Case #WM_TIMER
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0)
Delay(300)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONUP,0,0)
Case #PB_EventGadget
Select EventGadgetID()
;Case
;Case
Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf

Publié : sam. 07/août/2004 18:12
par Oliv
nan, alors c'est peut-être sur le forum anglais que j'ai vu ça, dès que ma soeur me laisse le PC, je vais essayer de faire éteindre le PC comme ça
Publié : sam. 07/août/2004 19:50
par Backup
aaarg !! on va rire enfin !!
mem qu'apres on demandera a la souris d'ouvrir un programme
agrandir une fenetre , ect... en faire une lib serai cool
mais plus tard hein ??
si quelqu'un trouve comment faire enfoncer les touches du clavier !!???
ou bien de faire avancer la souris (le boitier avec une boule (des fois) sur la table) la !! trop fort !!
ooouuuuaaaa la quatrieme dimension !!!

Publié : sam. 07/août/2004 19:57
par Oliv
Les touches du clavier ça a déjà été fait, pour les enfoncer il suffit d'appuyer dessus

regarde dans code archiv on ne sait jamais. Sinon, je verrai demain. Faire bouger la souris sans y toucher c'est simple, met la en pente

Publié : sam. 07/août/2004 20:12
par Aranoth
Faire bouger la souris sans y toucher c'est simple
pas besoin de pente
Et merci a vous pour m'avoir eclaircis sur le code, y'avait pleins de trucs inutiles

Publié : sam. 07/août/2004 22:23
par Backup
pas besoin de pente Laughing
heu on parle de la souris la boite en plastoc posé sur la table !
pas du pointeur de souris !!!

Publié : dim. 08/août/2004 11:18
par Oliv
Certains esprits réfléchissent trop

, bon je vais voir ça maintenant
Publié : dim. 08/août/2004 11:56
par Oliv
Code : Tout sélectionner
Structure Position
Depart.Point
Arrive.Point
EndStructure
Pos.Position
;Mögliche Konstanten für das Ereignis
#MOUSEEVENTF_MOVE = $1
#MOUSEEVENTF_ABSOLUTE = $8000
#MOUSEEVENTF_LEFTDOWN = $2
#MOUSEEVENTF_LEFTUP = $4
#MOUSEEVENTF_MIDDLEDOWN = $20
#MOUSEEVENTF_MIDDLEUP = $40
#MOUSEEVENTF_RIGHTDOWN = $8
#MOUSEEVENTF_RIGHTUP = $10
Procedure MouseEvent(Ereignis.l)
Mem.l=GlobalAlloc_(0,8)
GetCursorPos_(Mem)
mouse_event_(Ereignis|#MOUSEEVENTF_ABSOLUTE,PeekL(Mem)*($FFFF/GetSystemMetrics_(0)),PeekL(Mem+4)*($FFFF/GetSystemMetrics_(1)),0,GetMessageExtraInfo_())
GlobalFree_(Mem)
EndProcedure
SetCursorPos_(10,760) ; Place le curseur sur démarrer
;Simuliert einen Klick mit der Rechten Maustaste an der aktuellen Cursorposition
MouseEvent(#MOUSEEVENTF_LEFTDOWN)
MouseEvent(#MOUSEEVENTF_LEFTUP)
; Petite animation en translation
Pos\Depart\X = 10 : Pos\Depart\Y = 760
Pos\Arrive\X = 310 : Pos\Arrive\Y = 710
For i = Pos\Depart\X To Pos\Arrive\X Step 5
If Pos\Depart\Y > Pos\Arrive\Y
Pos\Depart\Y - 1
EndIf
SetCursorPos_(i,Pos\Depart\Y)
Delay(20)
Next i
MouseEvent(#MOUSEEVENTF_LEFTDOWN)
MouseEvent(#MOUSEEVENTF_LEFTUP)
Pos\Depart\X = 310 : Pos\Depart\Y = 710
Pos\Arrive\X = 650 : Pos\Arrive\Y = 372
For i = Pos\Depart\X To Pos\Arrive\X Step 5
If Pos\Depart\Y > Pos\Arrive\Y
Pos\Depart\Y - 5
If Pos\Depart\Y < Pos\Arrive\Y : Pos\Depart\Y = Pos\Arrive\Y : EndIf
EndIf
SetCursorPos_(i,Pos\Depart\Y)
Delay(20)
Next i
MouseEvent(#MOUSEEVENTF_LEFTDOWN)
MouseEvent(#MOUSEEVENTF_LEFTUP)
Voilà le code tant attendu

, il est préparé sur un écran 1024*768 avec un menu style XP, il n'éteind pas le PC mais clique sur le petit bouton "annuler" (je voulais pas tout le temps redémmarer

) . Le click du curseur a été pris sur un code dans codearchiv.
Pour positionner le curseur, j'ai utilisé ce petit code pour connaître les coordonnées de la souris:
Code : Tout sélectionner
lpPoint.point
Repeat
GetCursorPos_(lpPoint)
Debug "X = " + Str(lpPoint\X)
Debug "Y = " + Str(lpPoint\Y)
Debug ""
Delay(50)
ForEver
Je vais faire un code un peu mieux cette après midi ou dans la semaine qui permettra de cliquer là où l'on veut que la souris ce déplace et clique
Publié : dim. 08/août/2004 12:55
par Backup
super !!
faudrai en faire une fonction style
mouse_move(coordx_depart,coory_depart,coordx_arrivé,coordy_arrivé,click)
click=on/off on=1 off=0
par exemple !
***********************************************************
*************************************************************
*************************************************************
ou alors
mouse_move(coordx,coordy)
qui pourrai etre mis dans une boucle d'animation
; pour deplacer le curseur ou l'on veut
for coordx=0 to arrive
for coordy=0 to arrivé
mouse_move(coordx,coordy)
next coordy
next coordx
mouse_click ; pour la faire cliquer !!!
et une bibrairie de plus !!!!

Publié : dim. 08/août/2004 14:06
par Oliv
Code : Tout sélectionner
; pour deplacer le curseur ou l'on veut
for coordx=0 to arrive
for coordy=0 to arrivé
mouse_move(coordx,coordy)
next coordy
next coordx
bah nan sinon c'est ce que j'aurais fait mais là tu va te déplacer en Y, puis en X, pas les 2 en même temps.
Par contre mouse_move(coordx_depart,coory_depart,coordx_arrivé,coordy_arrivé,click) , je comptais le faire.
EDIT : Voir mon nouveau poste et désolé Aranoth pour avoir dérivé sur ton sujet.