J'essaie d'exécuter la fonction QueryPerformanceCounter() à partir d'un processus particulier et obtenir sa valeur de retour à mon application C#. Puisque ces deux processus (mon application et l'application que j'essaie d'affecter) sont différents, quel type de stratégie devrais-je suivre?Get Another Process 'QueryPerformanceCounter()
Répondre
QueryPerformanceCounter
est synchronisé sur tous les processus d'un ordinateur. Vous pouvez simplement l'appeler localement. C'est la même valeur que l'autre processus aurait reçu.
Mise à jour: D'accord, vous vous battez contre les tricheurs. S'ils sont en train d'accrocher votre processus, alors ils vont aussi accrocher vos processus fils, donc engendrer un processus d'aide n'aidera pas beaucoup.
Une chose que vous pouvez faire est de corréler plusieurs temporisateurs. Par exemple,
QueryPerformanceCounter(&liStart);
dwStart = GetTickCount();
GetSystemTimeAsFileTime(&ftStart);
Sleep(1000);
QueryPerformanceCounter(&liStop);
dwStop = GetTickCount();
GetSystemTimeAsFileTime(&ftStop);
Les quatre temporisateurs (QPC, GetTickCount
, GetSystemTimeAsFileTime
et Sleep
) doit concorder à une erreur de mesure.
Une autre chose que vous pouvez faire est de corréler avec une source externe. Par exemple, vous pouvez écrire une fonction qui obtient l'heure du système de fichiers en créant un fichier, puis en demandant l'heure de création du fichier. Corréler ceci avec les quatre autres minuteurs. Les autres sources externes sont le matériel audio et vidéo. Par exemple, vous pouvez lire un clip audio d'une seconde et voir combien de temps cela prend. Ou attendez le vide vertical et voyez s'il correspond au taux de rafraîchissement du moniteur.
Ce programme, Cheat Engine, (que j'ai utilisé pour changer la vitesse de mes processus) ne change que la vitesse d'un seul processus. Quand je change la vitesse de ma propre application, je peux voir le changement avec QueryPerformanceCounter mais quand je le fais pour un autre processus je ne peux pas voir le changement. Donc, j'ai besoin d'exécuter QueryPerformanceCounter() dans un autre processus et d'obtenir sa valeur de retour à ma propre application. –
- 1. C# Get Process information détaillée
- 2. Statut QueryPerformanceCounter?
- 3. Pourquoi mon XmlDocument.Save() échoue-t-il avec "Resource in use by another process"?
- 4. Spring 3 - Another IllegalStateException
- 5. Powershell: Get-Process Returns "non valide" Taille VM
- 6. Impact sur les performances de QueryPerformanceCounter
- 7. C linux équivalent de windows QueryPerformanceCounter
- 8. QueryPerformanceCounter et la sécurité des threads
- 9. Reaping zombie process - enfant
- 10. défiler par nombre d'éléments sur jquery-just-another-carousel
- 11. Différence entre le service in-process et out-process
- 12. Process.Start vs Process `p = new Process()` en C#?
- 13. Java Killing Popup Process
- 14. Threads Vs Process Généralement
- 15. Comment démarrer Process hidden?
- 16. Process Management Solution
- 17. Android Process Viewer
- 18. Parallèle Big data process
- 19. Java Process Bogue InputStream?
- 20. air process adt flex
- 21. Process/Work Flow Engine
- 22. Kill Process vide id
- 23. start process issue
- 24. tableau process PHP question
- 25. Multi-process dans AutoIt
- 26. VB.net Process Affinity
- 27. PHP Simultaneous Process
- 28. PHP Login Redirection Process
- 29. D3.js Process Diagram
- 30. Start-Process donne erreur
Que voulez-vous dire "l'application que j'essaie d'affecter"? 'QueryPerformanceCounter' ne modifie pas le processus. –
J'essaie de détecter les tentatives de dépassement de vitesse sur un processus. Il y a quelques programmes de piratage (c.-à-d. Moteur de triche) qui changent la vitesse d'un processus particulier. Ainsi, j'ai besoin d'exécuter cette fonction dans un autre processus et d'obtenir sa valeur de retour à mon propre processus pour inspecter les valeurs. –