Définir la priorité d'un programme VB - VB/VBA/VBS - Programmation
Marsh Posté le 22-11-2002 à 12:59:40
c'est possible sous NT4 (et peut-être sous win9x ?) mais pas sous Win2000, la fonction est vérouillée.
sources ici:
http://www.vbfrance.com/article.aspx?Val=21
Marsh Posté le 22-11-2002 à 14:31:31
je viens de passer un peu de temps sur le problème (parce que je suis sous win2k donc c'est pas top).
Sous Win2K, on peut le faire MAIS, faut demander la permission d'abord.
Je me suis même aperçu que ça ne marchait pas si j'utilisais le même handle de process (différent de l'id du process) pour faire un GetPriorityClass d'abord puis un SetPriorityClass ensuite. Mais au final, on peut. Windows 2000 complique un petit peu les choses.
Tu as trouvé ton bonheur ou je m'étends un peu plus?
Marsh Posté le 22-11-2002 à 14:51:51
bon, j'ai un collègue qui a codé un petit tool de tests en C++ Builder, il utilise aussi ces API, il est sous Win2K, et il doit pas demander la permission. Je comprends plus là...
Marsh Posté le 22-11-2002 à 15:36:44
drasche a écrit a écrit : je viens de passer un peu de temps sur le problème (parce que je suis sous win2k donc c'est pas top). Sous Win2K, on peut le faire MAIS, faut demander la permission d'abord. Je me suis même aperçu que ça ne marchait pas si j'utilisais le même handle de process (différent de l'id du process) pour faire un GetPriorityClass d'abord puis un SetPriorityClass ensuite. Mais au final, on peut. Windows 2000 complique un petit peu les choses. Tu as trouvé ton bonheur ou je m'étends un peu plus? |
Si tu pouvais t'étendre un peu plus As-tu un code source à me faire parvenir ?
Marsh Posté le 22-11-2002 à 15:45:05
Rarazor a écrit a écrit : Si tu pouvais t'étendre un peu plus As-tu un code source à me faire parvenir ? |
je te file un lien vers du source dans mon post
Marsh Posté le 22-11-2002 à 15:54:39
voyons voir:
|
en gros c'est ça sous Windows 2000.
En premier lieu tu dois connaître le process ID de ton application. Sous NT/2K/XP, tu sais le voir via le task manager, et comparer avec le résultat que te renvoie la fonction GetCurrentProcessId.
Dans la fonction SetPriority ci-dessus, j'ouvre un handle vers mon process (= mon application) en demandant l'autorisation de changer la priorité (grâce à la constante PROCESS_SET_INFORMATION).
Si lAppHwndID est rempli, alors je peux tenter de changer la priorité. La valeur du paramètre lNextClass est au choix l'une des constantes définies plus haut (priorités).
C'est mon code plus ou moins tel quel, compare le avec l'adresse donnée par Mareek. Tu peux te passer du GetErrorMessage, j'ai préféré virer ses références pour éviter de parler de quelques autres API (hem ).
Voilà.
Marsh Posté le 23-11-2002 à 02:32:32
Je faisait ca comme ca aussi mais j'ai vu que ca ne marcherais pas terrible sous windows 2000, du coup j'ai aussi changé la priorité au niveau du thread et la, ca marche au poil :
Code :
|
Scuzez moi pour les commentaires, j'ai la fleme de mofifier le code
Marsh Posté le 23-11-2002 à 11:31:00
remarquez le contraste des noms des constantes pour les "class" et les "thread". Sont pas très fute chez MS
Marsh Posté le 22-11-2002 à 12:08:52
Hello,
Comment peut-on faire pour qu'un programme VB6 change ça priorité d'exécution (Basse, Normal, Temps réel, etc...)
Merci !
Rarazor