Page 1 sur 1
[R] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 09:50
par proof007
Bonjour ,
voila , je voudrai créer un petit script qui me permet de calculer le temps d'utilisation de deux logiciels en même temps, en détails :
-dès qu'un logiciel est entrain d’être manipulé ( je dis bien manipulé et non pas ouvert ), donc sa n'a pas de relation avec le processus mais avec la fenêtre du logiciel , si elle est au premier plan, c'est qu'il est entrain d’être utilisé(en utilisant WInwaitActiv ou winActiv).un compteur ou un chronomètre démarrera ,
- dés que tu change de fenêtre pour faire autre chose( se connecter, consulter ses mails) , le chronomètre s’arrête.
- et quand tu reviens à ton application : il continue son comptage
le but est de le faire avec 2 logiciels en même temps , dèes que l'un des 2, est utilisé, le chrono démarre , et il continue si tu passe à l'autre application.
si vous avez des idée n’hésitez pas, merci
Code : Tout sélectionner
[spoiler=]#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <Date.au3>
#include <GUIConstants.au3>
Dim $Ver = "Soft Use"
HotKeySet( "!x", "_Exit" );Alt+X to exit
GUICreate( $Ver, 300 , 120, -1, -1)
$Clock = GUICtrlCreateLabel( $Ver, 160, 10, 80 )
$Label1 = GUICtrlCreateLabel(" Soft Use", 30, 10, 100)
$button1 = GUICtrlCreateButton("Stop",20,80)
$button2 = GUICtrlCreateButton("INIT",260,80)
GUISetState()
Opt("WinTitleMatchMode", 2)
$oldSeconds=@SEC
$actSeconds = '0'
$i=0
while 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $button2
$i=0
$Time = _DateAdd ("s", $i, "2000/01/01 00:00:00")
$Dif = StringSplit ( $Time, " " )
GUICtrlSetData ( $Clock, $Dif[2] )
Case $msg = $button1
send("!x")
EndSelect
while WinwaitActive("Firefox") or winwaitActive("Internet Explorer") ; exemple de firefox et internet exmplorer
$actSeconds = @SEC
if $oldSeconds <> $actSeconds then
$i=$i+1
$Time = _DateAdd ( "s", $i, "2000/01/01 00:00:00" )
$Dif = StringSplit ($Time, " " )
GUICtrlSetData ($Clock, $Dif[2] )
$oldSeconds=$actSeconds
endif
wend
wend
Func _Exit()
MsgBox( 16, $Ver, " stopped at:" & @LF & $Dif[2], 5 )
GUIDelete()
Exit
EndFunc[/spoiler]
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 10:13
par Tlem
Utilisez WinActive ou WinList pour savoir si la fenêtre est au premier plan ou non.
Les fonctions WinWaitxxxx étant blocantes, elles ne vous seront d'aucune utilité en la circonstance.
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 10:41
par jguinch
Bonjour.
Un truc comme ça ?
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 2)
Global $CTRLtemps
Global $usageTime = 0
Global $sleeping = 1
Global $begin = 0
_MakeGUI()
HotKeySet( "!x", "_Quit" );Alt+X to exit
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then _Quit()
If WinActive("AutoIt Help", "") OR WinActive("Notepad++", "") Then
If $sleeping == 1 Then $begin = TimerInit()
$sleeping = 0
; Partie qui sert uniquement pour l'affichage ---------------------------------------
$sec = Int ( ($usageTime + TimerDiff($begin)) / 1000 )
If GUICtrlRead($CTRLtemps) <> $sec Then GUICtrlSetData ( $CTRLtemps, $sec )
; -----------------------------------------------------------------------------------
Else
If $sleeping == 0 Then $usageTime = $usageTime + TimerDiff($begin)
$sleeping = 1
EndIf
Sleep(100)
WEnd
Func _Quit()
If $sleeping = 0 Then $usageTime = $usageTime + TimerDiff($begin)
MsgBox(0, "Temps d'utilisation", Int ($usageTime / 1000 ) & " secondes " )
Exit
EndFunc
Func _MakeGUI()
$pos = WinGetPos("Program Manager")
$x = $pos[0]
$y = $pos[1]
$w = $pos[2]
$h = $pos[3]
$hautDroit = $w + $x
$title = "Temps d'utilisation de l'aide AutoIt"
$GUI = GUICreate($title, 250, 50, $hautDroit - 250, 0, $WS_POPUP )
GUISetBkColor(0x000000)
$CTRLlabel = GUICtrlCreateLabel("Temps d'utilisation en secondes : ", 10, 10, 180, 20)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10, 800, Default, "Verdana" )
$CTRLtemps = GUICtrlCreateLabel("0", 200, 10, 50, 20)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10, 800, Default, "Verdana" )
GUISetState()
WinSetTrans($title, "", 200)
WinSetOnTop($title, "", 1)
EndFunc
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 11:43
par proof007
merci pour vos réponse, j'ai trouvé la solution, juste en modifiant l'emplacement de mon opt("WinTitleMatchMode",2)
Code : Tout sélectionner
[spoiler=]#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <Date.au3>
#include <GUIConstants.au3>
Dim $Ver = "Soft Use"
HotKeySet( "!x", "_Exit" );Alt+X to exit
GUICreate( $Ver, 300 , 120, -1, -1)
$Clock = GUICtrlCreateLabel( $Ver, 160, 10, 80 )
$Label1 = GUICtrlCreateLabel(" Soft Use", 30, 10, 100)
$button1 = GUICtrlCreateButton("Stop",20,80)
$button2 = GUICtrlCreateButton("INIT",260,80)
GUISetState()
$oldSeconds=@SEC
$actSeconds = '0'
$i=0
while 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $button2
$i=0
$Time = _DateAdd ("s", $i, "2000/01/01 00:00:00")
$Dif = StringSplit ( $Time, " " )
GUICtrlSetData ( $Clock, $Dif[2] )
Case $msg = $button1
send("!x")
EndSelect
Opt("WinTitleMatchMode", 2)
while WinActive("Firefox") or WinActive("Internet explorer")
;~ MsgBox(64 + 8192, 'Message', 'Window detected')
$actSeconds = @SEC
if $oldSeconds <> $actSeconds then
;~ MsgBox(64 + 8192, 'Message', 'seconds difference')
$i=$i+1
$Time = _DateAdd ( "s", $i, "2000/01/01 00:00:00" )
$Dif = StringSplit ($Time, " " )
GUICtrlSetData ($Clock, $Dif[2] )
$oldSeconds=$actSeconds
;~ MsgBox(64 + 8192, 'Message', 'increment')
endif
wend
wend
Func _Exit()
MsgBox( 16, $Ver, " stopped at:" & @LF & $Dif[2], 5 )
GUIDelete()
;~ Run("D:\soft Crash\Soft Crash.xls")
Exit
EndFunc
[/spoiler]
merci
TommyDDR : Edit 1 : Je vais l'essayer, merci.
TommyDDR : Edit 2 : il marche nickel , merci beaucoup.
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 11:58
par TT22
Salut, ton script est assez bien fait.
Mais le problème, c'est que la fenêtre cache la croix pour fermer les autres fenêtres
proof007 a écrit :il y' a toujours une personne qui quand il sait pas répondre essaye de faire l’intéressant en laissant un commentaire hors sujet
Pour te prouver que je ne suis pas ce dont tu m'as qualifié, voici la solution au problème que j'ai énoncé plus haut.
La fenêtre change de position en fonction de la position de la souris :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 2)
Global $CTRLtemps
Global $usageTime = 0
Global $sleeping = 1
Global $begin = 0
_MakeGUI()
HotKeySet( "!x", "_Quit" );Alt+X to exit
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then _Quit()
If WinActive("AutoIt Help", "") OR WinActive("Notepad++", "") Then
If $sleeping == 1 Then $begin = TimerInit()
$sleeping = 0
; Partie qui sert uniquement pour l'affichage ---------------------------------------
$sec = Int ( ($usageTime + TimerDiff($begin)) / 1000 )
If GUICtrlRead($CTRLtemps) <> $sec Then GUICtrlSetData ( $CTRLtemps, $sec )
; -----------------------------------------------------------------------------------
Else
If $sleeping == 0 Then $usageTime = $usageTime + TimerDiff($begin)
$sleeping = 1
EndIf
$MousePos = MouseGetPos()
$WinPos = WinGetPos("Temps d'utilisation de l'aide AutoIt")
If $MousePos[0] > $WinPos[0] And $MousePos[0] < $WinPos[0] + $WinPos[2] And $MousePos[1] > $WinPos[1] And $MousePos[1] < $WinPos[1] + $WinPos[3] Then
If $WinPos[0] = 0 Then
WinMove("Temps d'utilisation de l'aide AutoIt","",$hautDroit - 250,Default)
Else
WinMove("Temps d'utilisation de l'aide AutoIt","",0,Default)
EndIf
EndIf
WEnd
Func _Quit()
If $sleeping = 0 Then $usageTime = $usageTime + TimerDiff($begin)
MsgBox(0, "Temps d'utilisation", Int ($usageTime / 1000 ) & " secondes " )
Exit
EndFunc
Func _MakeGUI()
$pos = WinGetPos("Program Manager")
$x = $pos[0]
$y = $pos[1]
$w = $pos[2]
$h = $pos[3]
Global $hautDroit = $w + $x
$title = "Temps d'utilisation de l'aide AutoIt"
$GUI = GUICreate($title, 250, 50, $hautDroit - 250, 0, $WS_POPUP )
GUISetBkColor(0x000000)
$CTRLlabel = GUICtrlCreateLabel("Temps d'utilisation en secondes : ", 10, 10, 180, 20)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10, 800, Default, "Verdana" )
$CTRLtemps = GUICtrlCreateLabel("0", 200, 10, 50, 20)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10, 800, Default, "Verdana" )
GUISetState()
WinSetTrans($title, "", 200)
WinSetOnTop($title, "", 1)
EndFunc
PS : Utilise le bouton

pour modifier un message et ne pas en poster plein à la suite. Car je crois que
TommyDDR est déjà entrain de te surveiller
Edit : Trop tard, il a sévit

Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 12:16
par proof007
merci pour ta réponse ,
tu a raison pour la croix qui est caché, et ta proposition est pas mal, le problème est que je vais rajouter un bouton pour arrêter et ouvrir un Pop-up permettant à l'utilisateur de sauvegarder la durée et d'autre informations sur un fichier .txt ou excel si c'est possible.
merci bien
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 12:41
par Tlem
Décidément, proof007 vous avez quelques problème sur l'utilisation des forums.
Le bouton 'Citer' n'est à utiliser que si vous avez une raison particulière de citer tout ou partie d'un message précédent. Ce n'est pas le bouton de base pour répondre !
Un effort que diable.
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 12:59
par proof007
Tlem a écrit :Décidément, proof007 vous avez quelques problème sur l'utilisation des forums.
Le bouton 'Citer' n'est à utiliser que si vous avez une raison particulière de citer tout ou partie d'un message précédent. Ce n'est pas le bouton de base pour répondre !
Un effort que diable.
décidément, il y a un problème de gentillesse sur ce forum,
tu me prend pour qui pour me parler comme sa,
apprend à parler aux gens d'abord, avant de venir me donner une leçon sur comment citer OK.
tu es administrateur ou modérateur , alors un minimum OK
Re: [..] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 13:17
par timmalos
La remarque de Tlem n'avait rien de méchant, et vous semblez bien peu ouvert d'esprit pour un ingénieur et semblez prendre les gens de bien haut. (Et c'est l'impression que vous donnez sur ce forum j'espère qu'il n'en est pas ainsi en vrai)
Mettez vous 5 secondes à la place d'un administrateur qui donne des dizaines d'heures chaque semaine à essayer de rendre ce forum non bordélique et qu'on doive repeter toujours et toujours la même chose. De temps en temps on s'enerve.
Si vous n'arrivez pas à comprendre les quelques efforts de rigueur que nous demandons sur ce forum afin de préserver
des réponses de bonne qualité alors vous êtes libre de nous quitter et rien ne vous retient ici.
Edit : N'oubliez pas de passer votre sujet en résolu si il l'est

Re: [R] Calculer le temps d'utilisation d'un logiciel
Posté : jeu. 02 août 2012 13:56
par Tlem
Et en plus, il récidive en citant mon message alors qu'il n'y en à aucune utilité.
Pour le coup, entre votre message agressif et ce foutage de gueule volontaire, vous avez droit à une marque spécialement dédiée aux personnes de votre caractère. Et comme l'a signalé Tim, si vous n'êtes pas d'accord avec nos règles, rien ne vous retient.