Bonjour,
Comment connaitre l'heure de démarrage d'un programme et l'heure de son arret pour mettre en place un suivi du temps d'utilisation ?
Philippe
Version imprimable
Bonjour,
Comment connaitre l'heure de démarrage d'un programme et l'heure de son arret pour mettre en place un suivi du temps d'utilisation ?
Philippe
tu fait:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 var debu, deff :TTime; procedure TForm1.FormCreate(Sender: TObject); begin debut := now(); end; //********** procedure TForm1.FormDestroy(Sender: TObject); begin deff := now() - debut; //puis sauvegarde deff dans fichier.. end; je crois que cela va t'aider
Bonjour,
merci pour ta réponse mais il s'agit de suivre le temps d'utilisation d'un programme externe ( dont je n'ai le source ) de jeux pour suivre l'utilisation par un enfant .
Philippe
Pour voir le demarrage, a mon avis la meilleure solution (barbare) est de fair un programme delphi qui execute l'autre programme. Une bête interface avec juste un bouton pour le demarrer. Comme ca, tu peut voir l'heure du demarrage.
L'instruction pour executer un programme est shellExecute(...)
Pour voir quand il s'arrete, tu peut toujours (je suis bourrin de bon matin) avoir ton programme a toi qui teste si l'autre est en train de s'executer et quand l'autre est terminé, il calcule la difference de temps.
Bon, c'est juste pour suggerer des pistes...
Si tu utilises un launcher comme le propose Qapoka, une méthode un peu moins bourrin (quoique ^^) que de faire tourner un autre programme est d'utiliser CreateProcess pour lancer ton appli.
Tu peux alors exécuter comme si tu étais un debugger, et être prévenu de la fermeture du programme ;)
Puisque je ne pense pas que tu ais besoin d'une finesse de détection de l'ordre de la nanoseconde, voici une autre petite suggestion :
Régulierement (un timer donc, genre toutes les 1 à 5 secondes), tu cherches parmis les processus en cours d'execution celui ou ceux qui t'interesse(nt). Quand tu le trouves tu commences à compter, lorsque tu ne le trouve plus, hop tu arrêtes.
Bon évidemment ce n'est valable que si tu trouves le moyen d'énumérer les processus en cours d'execution. Mais je ne pense pas que ce soit impossible (remarque je n'ai pas cherché, je te laisse faire :wink:).
Au moins c'est pas "flag" : "Mais si !, utilise le lanceur, c'est pratique !:ange:" et ca fonctionnera jusqu'au jour où l'enfant sera assez grand pour trouver le processus surveillant et le descendre (ca arrive généralement plus vite qu'on ne le croit :P)
Bonne continuation.
hé hé t'as pas tort DMO :P
Voici des pistes pour lister les processus actifs :
CreateToolHelp32Snapshot, Process32First, Process32Next ;)
Il faut ajouter une unité dont j'ai oublié le nom... Quelque chose comme ToolHelp32, ToolHlp32... Google t'en diras sûrement plus :)
Bonne prog' ^^
Bestiol.
PS: ça sent la FAQ
Merci pour vos réponses , je vais chercher dans cette direction
Philippe