[Func] Process.exe || Process Management

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

[Func] Process.exe || Process Management

#1

Message par timmalos »

Bonjour a tous. Je poste une fonction que j'ai trouvé par nécessité quand je me suis rendu compte que ProcessClose() Ne marchait pas tout le temps, quand les programmes étaient en freeze par exemple.

Cette fonction permet de faire pas mal de chose, mais
ATTENTION, ELLE PEUT ÊTRE DANGEREUSE. En effet, ELLE FERME TOUS LES PROGRAMMES, même ceux nécessités pour faire tourner le SYSTÈME. Utilisez là donc avec parcimonie et bon escient.

A Noter : Elle fonctionne Grâce à un programme EXTERNE sur lequel je n'ai aucun controle, mais certifié Sans virus. Si vous ne faites pas confiance, ne l'utilisez pas.
Ce programme écrit dans un langage proche de la machine permet de faire ces actions.

Il suffit d'appeler le programme Process.exe avec les parametres ci-dessous
Exemples:

Code : Tout sélectionner

ShellExecuteWait(@ScriptDir & "\process.exe","parameters")
 

Code : Tout sélectionner

If FileExists("c:\process\Process.exe") then RunWait("c:\process\Process.exe -k iexplore.exe","",@SW_HIDE)
 

Code : Tout sélectionner

If IsObj ($oIE) then
            $pid=WinGetProcess(Hwnd($oIE.HWnd()))
                        While ProcessExists($pid) And TimerDiff($t) <= 15000
                ProcessClose($pid)
                If IsObj ($oIE) then Winkill(Hwnd($oIE.HWnd()))
                If FileExists("c:\process\Process.exe") then RunWait("c:\process\Process.exe -k "&$pid,"",@SW_HIDE)
                        WEnd
EndIf
 
Utilisation:

Code : Tout sélectionner

Usage: process.exe [-v] [-t] [-c]
       process.exe [-q] [Process Name/PID] [timeout sec(optional)]
       process.exe [-k] [-s] [-r] [Process Name/PID]
       process.exe [-p] [Process Name/PID] {RealTime|High|AboveNormal|
                                                Normal|BelowNormal|Low}
       process.exe [-a] [Process Name/PID] [Mask(To Set)]


        -v    Retourne une liste de Process. Peut être récupérée avec StrRead en lancant Process.exe avec RunWait()
        -t    View Kernel and User CPU Times.
        -c    View Process Creation Times.
        -q    Send WM_CLOSE Message. Default timeout is 60 Sec
        -k    Kill Process. (Terminate)
        -s    Suspend Process.
        -r    Resume Suspended Process.
        -p    Set Process Priority.
        -a    Get/Set Affinity Mask of Process.

C:\process>process.exe -v
Petite Precision, les parametres -s et -r peuvent être très utile, par exemple si vous souhaitez mettre en pause TOTALE un programme pendant l'execution du votre. Mais n'oubliez SURTOUT pas de le reactiver avant la fin de votre script. Essayez avec explorer.exe c'est assez surprenant. Le Process se fige.

Bonne Utilisation
Timothée

Ps : Toute Remarque Bienvenue.
Fichiers joints
Process.zip
(24.34 Kio) Téléchargé 479 fois
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [Func] Process.exe || Process Management

#2

Message par arrkhan »

sur les version pro de windows, il existe par defaut taskkill.exe permettant de killer des process egalement
s'il est placé dans le system32 d'un poste quelconque, home ou pro, il peut etre utilisé tel quel.

soit par le pid du process : taskkill /f "PID du process"
ou par son nom, bien plus simple : taskkill /f /im "nom du process"

le /f pour force bien entendu
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Func] Process.exe || Process Management

#3

Message par timmalos »

Merci de l'info
Répondre