Je me lance dans la création d'un logiciel d’automatisation de tâche.
1.01: Enregistrement et Lecture de la souris.
Code : Tout sélectionner
; Programme créé Par Monsieur Dieppedalle David.
; 06/13/2017 -> 1.01 - Début - Enregistrement et Lecture de la souris.
EnableExplicit
;{ Enumeration
Enumeration 1
#Fenetre
#MouseRec
#MousePlay
; Exemple Font.
; ------------
;#TextGadgetTitreFenetre
EndEnumeration
;}
;{ Constante personnalisée
; Les constantes des divers évènement possible
#PB_Event_MoveWindowMouse = 512
#PB_Event_WindowsLeftButtonDown = 513
#PB_Event_WindowsLeftButtonUp = 514
#PB_Event_WindowsLeftDoubleClick = 515
#PB_Event_WindowsRightButtonDown = 516
#PB_Event_WindowsRightButtonUp = 517
#PB_Event_WindowsRightDoubleClick = 518
#PB_Event_WindowsMiddleButtonDown = 519
#PB_Event_WindowsMiddleButtonUp = 520
#PB_Event_WindowsMiddleDoubleClick = 521
#PB_Event_WindowsMouseWheel = 522
#PB_Event_MouseMoveOverTitleBar = 160
#PB_Event_LeftButtonClickOverTitleBar = 161
#PB_Event_LeftButtonUpOverTitleBar = 162
#PB_Event_LeftButtonDoubleClickOverTitleBar = 163
#PB_Event_RightButtonClickOverTitleBar = 164
#PB_Event_RightButtonUpOverTitleBar = 165
#PB_Event_MiddleButtonDownOverTitleBar = 167
#PB_Event_MiddleButtonUpOverTitleBar = 168
#PB_Event_MiddleButtonDoubleClickOverTitleBar = 169
#PB_Event_MouseEnterOrLeaveWindows = 674
;}
;{ Structure
Structure MouseInfo
X.i
Y.i
Visible.b
LeftButtonDown.b
RightButtonDown.b
MiddleButtonDown.b
MouseWheel.i
Array Position.POINT(999999)
EndStructure
;}
;{ Variable Global
Global FenetreX.i = 0
Global FenetreY.i = 0
Global FenetreLargeur.i = 800
Global FenetreHauteur.i = 600
Global FenetreTitre.s = "Ma Fenêtre"
;{ Aide Constantes OpenWindow
; #PB_Window_SystemMenu ; Autorise le menu système sur la barre de titre.
; #PB_Window_MinimizeGadget ; Ajoute l'icône 'Réduire' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
; #PB_Window_MaximizeGadget ; Ajoute l'icône 'Agrandir' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
; #PB_Window_SizeGadget ; Ajoute les possibilités de redimensionnement à la fenêtre.
; #PB_Window_Invisible ; Crée la fenêtre mais ne l'affiche pas. Non supporté sur AmigaOS.
; #PB_Window_TitleBar ; Crée la fenêtre avec une barre de titre.
; #PB_Window_BorderLess ; Crée une fenêtre sans bordure.
; #PB_Window_Tool ; Crée une fenêtre avec une barre de titre plus fine, et non visible dans la barre des tâches.
; #PB_Window_ScreenCentered ; Centre la fenêtre au milieu de l'écran. Les paramètres x,y sont ignorés.
; #PB_Window_WindowCentered ; Centre la fenêtre au milieu de la fenêtre mère ('FenetreMereID' doit être spécifié). Les paramètres x,y sont ignorés.
; #PB_Window_Maximize ; Ouvre la fenêtre en mode maximisé. (Note; sous Linux, certains gestionnaires de fenêtres ne supportent pas cela)
; #PB_Window_Minimize ; Ouvre la fenêtre en mode minimisé.
; #PB_Window_NoGadgets ; Empèche la création d'une GadgetList. UseGadgetList() peut être utilisé pour le faire plus tard.
;}
Global FenetreOption.i = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar
Global FenetreTransparence.i = 255
Global Mouse.MouseInfo
Global lpPoint.POINT
Global IndexMouse.i = 0
Global MouseRec.b = 0
Global MousePlay.b = 0
Global NombreIndexRec.i = 0
Global NombreIndexPlay.i = 0
Mouse\Visible.b = #True
Mouse\LeftButtonDown.b = #False
Mouse\RightButtonDown.b = #False
Mouse\MiddleButtonDown.b = #False
Mouse\MouseWheel.i = 0
; Exemple Font.
; -------------
; Global IDFontTexteGadgetTitreFenetre.i = 0
; Global NomFontTexteGadgetTitreFenetre.s = "Arial"
; Global TailleFontTexteGadgetTitreFenetre.i = 15
; Global CouleurArrierePlantFontTexteGadgetTitreFenetre.i = -1 ; -1 = par Defaut.
; Global CouleurFontTexteGadgetTitreFenetre.i = RGB(0, 0, 255)
;{ Aide Font
; #PB_Font_Bold : La police de caractères sera en gras
; #PB_Font_Italic : La police de caractères sera en italique
; #PB_Font_Underline : La police de caractères sera soulignée (Windows seulement)
; #PB_Font_StrikeOut : La police de caractères sera barrée (Windows seulement)
; #PB_Font_HighQuality: La police de caractères sera en qualité supérieure (plus lent)(Windows seulement)
;}
; Global StyleFontTexteGadgetTitreFenetre.i = #PB_Font_HighQuality | #PB_Font_Bold
;}
;{ Font
; Exemple Font.
; -------------
; IDFontTexteGadgetTitreFenetre.i = LoadFont(#PB_Any, NomFontTexteGadgetTitreFenetre.s, TailleFontTexteGadgetTitreFenetre.i, StyleFontTexteGadgetTitreFenetre.i)
;}
;{ Includes
;}
;{ Procedures
; Procédure pour savoir si la Souris est sur un Gadget.
Procedure.b IsMouseOverGadget(IDFenetre.i, IDGadget.i)
Protected Sx.i = WindowMouseX(IDFenetre.i)
Protected Sy.i = WindowMouseY(IDFenetre.i)
Protected GX.i = GadgetX(IDGadget.i)
Protected GY.i = GadgetY(IDGadget.i)
Protected GL.i = GadgetWidth(IDGadget.i)
Protected GH.i = GadgetHeight(IDGadget.i)
If Sx.i => GX.i And Sx.i <= (GX.i + GL.i) And Sy.i => GY.i And Sy.i <= (GY.i + GH.i)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
; Procédure pour changer l'oppacité de la Fenêtre.
Procedure SetWindowsTransparency(WindowID.i, Transparence.i)
SetWindowLong_(WindowID.i, #GWL_EXSTYLE, GetWindowLong_(WindowID.i, #GWL_EXSTYLE) | $00080000)
SetLayeredWindowAttributes_(WindowID.i, 1, Transparence.i, $03)
EndProcedure
; Procedure ouverture de la fenêtre.
Procedure OuvrirMaFenetre()
If OpenWindow(#Fenetre, FenetreX.i, FenetreY.i, FenetreLargeur.i, FenetreHauteur.i, FenetreTitre.s, FenetreOption.i)
SetWindowsTransparency(WindowID(#Fenetre), FenetreTransparence.i)
ButtonGadget(#MouseRec, 25, 25, 200, 30, "Enregistrer la souris")
ButtonGadget(#MousePlay, 25, 60, 200, 30, "Jouer la souris")
; Exemple TexteGadget avec Font.
; ------------------------------
; TextGadget(#TextGadgetTitreFenetre, 0, 10, FenetreLargeur.i, 30, "Assistance Création des States des Heros", #PB_Text_Center)
; SetGadgetFont(#TextGadgetTitreFenetre, FontID(IDFontTexteGadgetTitreFenetre.i))
; SetGadgetColor(#TextGadgetTitreFenetre, #PB_Gadget_BackColor, CouleurArrierePlantFontTexteGadgetTitreFenetre.i)
; SetGadgetColor(#TextGadgetTitreFenetre, #PB_Gadget_FrontColor, CouleurFontTexteGadgetTitreFenetre.i)
EndIf
EndProcedure
;}
; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OuvrirMaFenetre()
; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Gestion des évènements des Fenêtres et des Gadgets.
Repeat ; Départ des évènements de boucle.
Define Event.i = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la Fenêtre.
Define EventWindow.i = EventWindow(); La Fenêtre oû l'évènement c'est produit.
Define EventGadget.i = EventGadget(); Pour savoir sur quel gadget c'est produis l'évènement.
Define EventMenu.i = EventMenu() ; Pour savoir sur quel menue c'est produis l'évènement.
Define EventType.i = EventType() ; Le type d'évènement qui c'est produis sur le gadget.
; Récupère la position de la souris.
GetCursorPos_(lpPoint)
; Enregistre la position de la souris.
Mouse\X = lpPoint\x
Mouse\Y = lpPoint\y
If MouseRec.b = 1
GetCursorPos_(Mouse\Position.POINT(IndexMouse.i))
IndexMouse.i + 1
NombreIndexRec.i + 1
Delay(1)
EndIf
If MousePlay.b = 1
If NombreIndexPlay.i < NombreIndexRec.i
NombreIndexPlay.i + 1
SetCursorPos_(Mouse\Position.POINT(IndexMouse.i)\x, Mouse\Position.POINT(IndexMouse.i)\y)
IndexMouse.i + 1
Delay(1)
Else
MousePlay.b = 0
NombreIndexPlay.i = 0
EndIf
EndIf
Select Event.i
Case #PB_Event_MoveWindowMouse ; Déplacement de la souris sur la Fenêtre.
Case #PB_Event_WindowsLeftButtonDown ; Bouton gauche appuyer avec la souris sur la Fenêtre.
Case #PB_Event_WindowsLeftButtonUp ; Bouton gauche relacher avec la souris sur la Fenêtre.
Case #PB_Event_WindowsLeftDoubleClick ; Double clique gauche avec la souris sur la Fenêtre.
Case #PB_Event_WindowsRightButtonDown ; Bouton droit appuyer avec la souris sur la Fenêtre.
Case #PB_Event_WindowsRightButtonUp ; Bouton droit relacher avec la souris sur la Fenêtre.
Case #PB_Event_WindowsRightDoubleClick ; Double clique droit avec la souris sur la Fenêtre.
Case #PB_Event_WindowsMiddleButtonDown ; Bouton milieux appuyer avec la souris sur la Fenêtre.
Case #PB_Event_WindowsMiddleButtonUp ; Bouton milieux relacher avec la souris sur la Fenêtre.
Case #PB_Event_WindowsMiddleDoubleClick ; Double clique milieux avec la souris sur la Fenêtre.
Case #PB_Event_WindowsMouseWheel ; La molêtte de la souris tourne.
Case #PB_Event_Gadget
Select EventGadget.i
Case #MouseRec
IndexMouse.i = 0
MouseRec.b = 1
NombreIndexPlay.i = 0
NombreIndexRec.i = 0
Case #MousePlay
IndexMouse.i = 0
MouseRec.b = 0
MousePlay.b = 1
NombreIndexPlay.i = 0
EndSelect
Case #PB_Event_Menu
Select EventMenu.i
Case 0
EndSelect
Case #PB_Event_MouseMoveOverTitleBar ; Déplacement de la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_LeftButtonClickOverTitleBar ; Clique gauche avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_LeftButtonUpOverTitleBar ; Bouton gauche relacher avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_LeftButtonDoubleClickOverTitleBar ; Double Clique gauche avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_RightButtonClickOverTitleBar ; Clique droit avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_RightButtonUpOverTitleBar ; Bouton droit relacher avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_MiddleButtonDownOverTitleBar ; Bouton milieux appuyer avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_MiddleButtonUpOverTitleBar ; Bouton milieux relacher avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_MiddleButtonDoubleClickOverTitleBar ; Double Clique milieux avec la souris sur la barre de titre de la Fenêtre.
Case #PB_Event_MouseEnterOrLeaveWindows ; La souris viens d'entrer ou de quitter la Fenêtre.
Case #PB_Event_SysTray ; Une icône dans la zone SysTray a été cliquée.
Case #PB_Event_Timer ; Le temps d'un minuteur s'est écoulé.
Case #PB_Event_Repaint ; Tout ou une partie du contenu de la Fenêtre a été détruit et doit être reconstitué.
Case #PB_Event_MoveWindow ; La Fenêtre a été déplacée.
Case #PB_Event_MinimizeWindow ; La Fenêtre a été minimisée.
Case #PB_Event_MaximizeWindow ; La Fenêtre a été maximisée.
Case #PB_Event_RestoreWindow ; La Fenêtre a été restaurée à sa taille normale.
Case #PB_Event_SizeWindow ; La Fenêtre a été redimensionnée.
Case #PB_Event_ActivateWindow ; La Fenêtre a été activée (gain du focus).
Case #PB_Event_WindowDrop ; Une opération Glisser & Déposer s'est terminée sur une Fenêtre.
Case #PB_Event_GadgetDrop ; Une opération Glisser & Déposer s'est terminée sur un gadget.
Case #PB_Event_CloseWindow ; L'icône de fermeture de la Fenêtre a été cliquée.
EndSelect
Until Event.i = #PB_Event_CloseWindow ; Fin des évènements de boucle.