Encore une fois cela n'est pas terminé et un processuss est mal terminé à certain moment....
Code : Tout sélectionner
;{- Variable
Global num_action,repertoire_execution$,quit
Global Dim action.s(1)
num_action=0
;}
Enumeration
#fenetre_cpuremacro
#cb_nom_macro
#btn_execute_macro
#strg_nv_macro
#btn_save_macro
#fenetre_choix_insert
#btn_pause5
#btn_pause10
#btn_pause30
#btn_pause
#btn_attente_image
EndEnumeration
Procedure EnregistreFichierAction(NomFichier$="Macro_Test")
fichier$=repertoire_execution$+"\Macro\"+NomFichier$+"\"+NomFichier$+".txt"
MakeSureDirectoryPathExists_(fichier$)
If CreateFile(0,fichier$)
For i = 1 To num_action-2 ;-2 pour retirer le clic pour agrandir la fenetre
WriteStringN(0,action(i))
Next
CloseFile(0)
RunProgram(fichier$)
ProcedureReturn 1
Else
MessageRequester("","impossible enregistrer action")
EndIf
EndProcedure
Procedure EnregistreMacro()
OpenWindow(0, 0, 0, 550, 160,"RecupEvent", #PB_Window_SystemMenu)
SetWindowState(0,#PB_Window_Minimize)
SetClipboardText("")
hDLL = OpenLibrary(0, "HookDll.dll")
hmyHookMouse = SetWindowsHookEx_(#WH_MOUSE , GetProcAddress_(hDLL, "HookMouse"), hDLL, 0)
hmyHookHookKeyboard = SetWindowsHookEx_(#WH_KEYBOARD , GetProcAddress_(hDLL, "HookKeyboard"), hDLL, 0)
Repeat
Event=WindowEvent()
Delay(10)
mess$=GetClipboardText()
If der_mess$<>mess$
If Trim(mess$)="Appuye touche 119 DOWN"
OpenWindow( #fenetre_choix_insert,0, 0, 210, 160,"RecupEvent", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
StickyWindow(#fenetre_choix_insert,1)
CreateGadgetList(WindowID(#fenetre_choix_insert))
y=5
ButtonGadget(#btn_pause,5,y,140,20,"Pause ? /10 sec")
ButtonGadget(#btn_pause5,140,y,20,20,"5")
ButtonGadget(#btn_pause10,160,y,20,20,"10")
ButtonGadget(#btn_pause30,180,y,20,20,"30")
y=y+22
ButtonGadget(#btn_attente_image,5,y,140,20,"Attente d'une image")
qui_insert=0
Repeat
Event=WindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #btn_pause
pause$=InputRequester("Pause","La pause en /10ème de seconde","")
action$="Pause "+pause$
Case #btn_pause5
action$="Pause 5"
Case #btn_pause10
action$="Pause 10"
Case #btn_pause30
action$="Pause 30"
EndSelect
qui_insert=1
num_action=num_action+1
Redim action.s(num_action)
action(num_action)=action$
EndSelect
Until qui_insert=1
CloseWindow(#fenetre_choix_insert)
mess$=GetClipboardText() : der_mess$=mess$ ;permet de supprimer le UP du clic sur le boutton
Else
der_mess$=mess$
num_action=num_action+1
Redim action.s(num_action)
action(num_action)=mess$
EndIf
EndIf
Until GetWindowState(0)<>#PB_Window_Minimize
UnhookWindowsHookEx_(hmyHookMouse)
UnhookWindowsHookEx_(hmyHookHookKeyboard)
CloseLibrary(0)
CloseWindow(0)
EndProcedure
Procedure RemplirListMacro()
If ExamineDirectory(0, repertoire_execution$+"Macro\", "*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
type$ = " [Fichier] "
Else
If DirectoryEntryName(0)<>"." And DirectoryEntryName(0)<>".."
AddGadgetItem(#cb_nom_macro,-1,DirectoryEntryName(0))
EndIf
EndIf
;Debug DirectoryEntryName(0) + type$ + "- Taille en octet : " + Str(DirectoryEntrySize(0))
Wend
FinishDirectory(0)
EndIf
SetGadgetState(#cb_nom_macro,0)
EndProcedure
Procedure LectureMacro(NomMacro$)
fichier$=repertoire_execution$+"\Macro\"+NomMacro$+"\"+NomMacro$+".txt"
;MessageRequester("Debut Macro",fichier$)
id_file=OpenFile(#PB_Any, fichier$)
If id_file
Repeat
ligne$= ReadString(id_file)
type$=Trim(Left(ligne$,20))
Debug type$
par1$=Trim(Mid(ligne$,20,10))
par2$=Trim(Mid(ligne$,30,10))
Debug par1$
Debug par2$
Select type$
Case "Clic G Down"
SetCursorPos_(Val( par1$),Val( par2$))
mouse_event_(#MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_LEFTDOWN, x,y,0,0)
Case "Clic G UP"
SetCursorPos_(Val( par1$),Val( par2$))
mouse_event_(#MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_LEFTUP, x,y,0,0)
Case "Clic D Down"
SetCursorPos_(Val( par1$),Val( par2$))
mouse_event_(#MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_RIGHTDOWN, x,y,0,0)
Case "Clic D UP"
SetCursorPos_(Val( par1$),Val( par2$))
mouse_event_(#MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_RIGHTUP, x,y,0,0)
Case "Appuye touche"
Select par2$
Case "DOWN"
Debug "downnnn"
keybd_event_(Val( par1$), 0,0,0)
Case "UP"
keybd_event_(Val( par1$), 0, #KEYEVENTF_KEYUP,0)
EndSelect
EndSelect
Delay(100)
Until Loc(id_file)=Lof(id_file)
CloseFile(id_file)
Else
MessageRequester("Oups ! ","Impossible de lire cette macro"+Chr(10)+fichier$)
EndIf
EndProcedure
;{- Définition de la fenetre principale
repertoire_execution$=GetCurrentDirectory()
OpenWindow(#fenetre_cpuremacro, 0, 0, 400, 80,"CpureMacro", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ComboBoxGadget(#cb_nom_macro,10,10,300,200)
ButtonGadget(#btn_execute_macro,320,10,60,20,"Lancer")
StringGadget(#strg_nv_macro,10,40,300,20,"Test")
ButtonGadget(#btn_save_macro,320,40,60,20,"Enregistrer")
RemplirListMacro()
;}
Repeat
Event=WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #btn_save_macro ;{ Enregistrement de la macro
nom_macro$=GetGadgetText(#strg_nv_macro)
If nom_macro$=""
MessageRequester("Oups","Vous n'avez pas mis de nom de macro !")
Else
If FileSize("Macro\"+nom_macro$)<>-1 And nom_macro$<>"Test"
resu=MessageRequester("Oups","La macro existe déjà. L'éffacer ?",#PB_MessageRequester_YesNo )
If resu=6
save=1
Else
save=0
EndIf
Else
save=1
EndIf
If save=1
CloseWindow(#fenetre_cpuremacro)
EnregistreMacro()
EnregistreFichierAction(nom_macro$)
EndIf
EndIf
;}
Case #btn_execute_macro ;{Lecture macro
NomMacro$=GetGadgetText(#cb_nom_macro)
SetWindowState(#fenetre_cpuremacro,#PB_Window_Minimize)
thread=CreateThread(@LectureMacro(),@NomMacro$)
WaitThread(thread)
quit=1
EndSelect
Case #wm_close
quit=1
EndSelect
Until quit=1
End