Comment puis-je ralentir un processus Windows? Je comprends que j'ai besoin de hook queryperformancecounter mais que dois-je faire ensuite? Aide de Plaseralentir un processus?
Répondre
Je ne suis pas sûr de comprendre la relation entre l'accrochage de QueryPerformanceCounter et le ralentissement d'un processus que vous avez décrit. Peut-être que si vous développez dans la question originale ou un commentaire, je peux vous aider davantage.
Pour répondre à votre question, vous pouvez utiliser cpustres.exe du kit de ressources Windows 2000 pour charger votre système et provoquer le changement de contexte. Si vous mettez assez de charge et que vous surchargez tous les processeurs disponibles, vous ralentirez votre processus. Selon le niveau de charge que vous sélectionnez avec les réglages de cpustres, vous pouvez ralentir votre processus beaucoup ou peu.
Si vous voulez ralentir le processus programme d'une manière plus contrôlée sans le faire tomber si elle est un jeu, vous pouvez utiliser la réponse de casablanca, mais remplacer sommeil (10) avec:
// Turn off optimizations to make sure the busy wait loops do
// not get optimized out!
HANDLE hThread = ...; // thread that you want to slow down
for (;;) {
SuspendThread(hThread); // Do this for each process thread
// Busy wait for pause (possibly small)
const DWORDLONG pauseFactor=1000; // In cycles
DWORDLONG start=__rdtsc();
while (__rdtsc()-start<pauseFactor)
;
ResumeThread(hThread); // Do this for each process thread
// Busy wait for resume
const DWORDLONG runFactor=1000; // In cycles
DWORDLONG start=__rdtsc();
while (__rdtsc()-start<runFactor)
;
}
lire ici http://ce.colddot.nl/browser/Cheat%20Engine/CEHook/speedhack.pas – opc0de
rdtsc est encore plus problématique sur les processeurs multicœurs que Queryperformancecounter, donc l'utiliser est probablement une mauvaise idée. – CodesInChaos
rdtsc fonctionne parfaitement sur les processeurs i7 et est même synchronisé sur les quatre cœurs sur un seul processeur (et fonctionne à l'état P le plus élevé, donc il n'y a pas de dérive de fréquence avec SpeedStep et Turbo). Je ne suis pas sûr si cela est vrai pour Core 2, donc certains tests peuvent être nécessaires. –
Une façon Je peux penser est d'avoir une utilisation de fil dédié SuspendThread
sur le fil que vous voulez ralentir, attendez un peu de temps, puis reprendre le fil:
HANDLE hThread = ...; // thread that you want to slow down
for (;;) {
SuspendThread(hThread);
Sleep(10); // some number of milliseconds - larger values will slow down more
ResumeThread(hThread);
}
J'ai essayé cela et il bloque l'application cible (est un jeu). Il fonctionne ralentir avec le moteur de triche. – opc0de
Je ne comprends pas quel est le motif/contexte de votre question puisque vous ne l'avez pas expliqué clairement. Toutefois, en utilisant SetPriorityClass()
, vous pouvez définir la classe de priorité pour le processus spécifié à BELOW_NORMAL_PRIORITY_CLASS
ou même à IDLE_PRIORITY_CLASS
afin que le processus s'exécute plus lentement; et vous pouvez également définir la classe de priorité pour le processus spécifié à ABOVE_NORMAL_PRIORITY_CLASS
ou même à HIGH_PRIORITY_CLASS
afin que le processus s'exécute plus rapidement. Avant de le faire, vous aurez besoin d'obtenir le handle du processus cible par son PID, regardez here.
Cela ne rend pas le processus plus rapide ou plus lent. Cela change simplement l'allocation possible des cycles du processeur au processus. Si aucun autre processus n'a besoin de cycles CPU (par exemple, les processus sont en sommeil ou bloqués), la classe prioritaire ne fait rien - le processus "éclatera" pour utiliser les cycles CPU disponibles, jusqu'à ce qu'un autre processus avec une priorité plus élevée . – user314104
Windows 2000 a introduit une nouvelle couche sur la gestion de processus interne qui permet de définir des limites supplémentaires sur un ou plusieurs processus: Travaux. Je ne suis pas sûr si cela permet de définir une limite sur le temps processeur utilisé, mais si l'application n'utilise pas déjà la méthode, vous pouvez simplement appeler AssignProcessToJobObject et SetInformationJobObject pour imposer des limitations supplémentaires.
- 1. Ralentir quelques Javascript
- 2. ralentir gdb pour reproduire le bogue
- 3. iPhone UIScrollView, ralentir le défilement
- 4. Comment "ralentir" un fichier MIDI (idéalement en Python)?
- 5. Est-il possible de ralentir IIS?
- 6. Android: Touchez sérieusement ralentir mon application
- 7. Contrôler (ralentir) le téléchargement côté serveur
- 8. ralentir une boucle dans une fonction récursive
- 9. logique: égale à ralentir la performance pour montrer 10000 enregistrements
- 10. Ralentir l'animation coulissante entre les activités Android?
- 11. Est-ce que cela. ralentir le code?
- 12. Comment faire pour que TProgressBar arrête de ralentir?
- 13. processus parent, et un processus enfant
- 14. un processus tue tuer d'autres processus
- 15. Intégrer un processus JFrame dans un autre processus JFrame
- 16. Forcer des mises à jour d'écran pour un ProgressBar attaché à un URLLoader ou le ralentir
- 17. automatiser un processus
- 18. tuer un processus bash
- 19. Lancer un processus TopMost
- 20. Tuer un processus
- 21. créer un processus enfant
- 22. Commencer un nouveau processus
- 23. timeout un sous-processus
- 24. Documenter un processus SDLC
- 25. Comment terminer un processus
- 26. JavaScript tue un processus
- 27. IE ralentir après mise à jour partielle updatepanel
- 28. La surbrillance de GVim avec matchadd finit par ralentir?
- 29. Les requêtes MYSQL peuvent-elles ralentir dramatiquement mon site?
- 30. Est-ce que jquery vit ralentir des sites Web?
Est-ce que c'est juste pour votre propre programme ou pour n'importe quel programme? – casablanca
Voulez-vous ralentir une partie qui utilise un compteur de queues pour déterminer sa vitesse, ou voulez-vous ralentir un processus de calcul intensif? – CodesInChaos
@casablanca: tout programme je sais comment injecter une DLL n'est pas un problème – opc0de