Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SUSPENDRE UN PROCESSUS DEPUIS SON PID


Information sur la source

Catégorie :Système Classé sous : processus, geler, suspendre, desactiver, pid Niveau : Débutant Date de création : 22/09/2006 Vu : 5 682

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note


Description

Ce ptit bout de code montre comment suspendre directement un processus depuis son pid

Utilisation:

pour suspendre un process :

SuspendResumeProcess Pid, True

pour le relancer:

SuspendResumeProcess Pid, False


 

Source

  • Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  • Private Declare Function NtSuspendProcess Lib "Ntdll.dll" (ByVal hProc As Long) As Long
  • Private Declare Function NtResumeProcess Lib "Ntdll.dll" (ByVal hProc As Long) As Long
  • Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
  • Private Const PROCESS_SUSPEND_RESUME As Long = &H800
  • Public Function SuspendResumeProcess(ByVal Pid As Long, ByVal Action As Boolean) As Long
  • Dim hProcess As Long
  • hProcess = OpenProcess(PROCESS_SUSPEND_RESUME, 0&, Pid)
  • If hProcess Then
  • If Action Then
  • SuspendResumeProcess = NtSuspendProcess(hProcess)
  • Else
  • SuspendResumeProcess = NtResumeProcess(hProcess)
  • End If
  • CloseHandle hProcess
  • End If
  • End Function
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function NtSuspendProcess Lib "Ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib "Ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
Private Const PROCESS_SUSPEND_RESUME As Long = &H800

Public Function SuspendResumeProcess(ByVal Pid As Long, ByVal Action As Boolean) As Long
    
    Dim hProcess   As Long
    
    hProcess = OpenProcess(PROCESS_SUSPEND_RESUME, 0&, Pid)
    
    If hProcess Then
        If Action Then
            SuspendResumeProcess = NtSuspendProcess(hProcess)
        Else
            SuspendResumeProcess = NtResumeProcess(hProcess)
        End If
        CloseHandle hProcess
    End If

End Function

Commentaires et avis

signaler à un administrateur
Commentaire de MadM@tt le 22/09/2006 19:25:40

Le code est plus court que de suspendre chaque thread du processus effectivement ^^ (plus rapide ?)
par contre d'après le nom des api (NtSuspendProcess) ça marche que sous nt je suppose ?
(enfin de nos jours, qui n'a pas nt ^^)

signaler à un administrateur
Commentaire de draluorg le 22/09/2006 20:51:52

Eh oui en effet, valable seulement sur Nt 2000 et XP je pense...

Pour la rapidite, c'est en effet surement plus rapide que d'enumerer les threads de les ouvrir et les suspendre...

Mais l'avantage c'est surtout la simplicite ;)

++

signaler à un administrateur
Commentaire de PCPT le 22/09/2006 22:07:46 administrateur CS

salut,
(pas testé)
umm... codyx?
++

signaler à un administrateur
Commentaire de violent_ken le 22/09/2006 22:07:56

Nickel, je remplace tout un module par 2 APIs ;)


Merci, @+

signaler à un administrateur
Commentaire de draluorg le 22/09/2006 22:32:26

merci pour la note ^^

PCPT >> "umm... codyx?"

Eh ca veux dire quoi au juste ?

++

signaler à un administrateur
Commentaire de violent_ken le 22/09/2006 22:33:22

http://www.codyx.org/

@+

signaler à un administrateur
Commentaire de draluorg le 22/09/2006 23:19:54

Ah ok... merci Ken ;)

J'etais deja tombe sur cette page je savais pas trop ce que c'etait lol

Je sais pas si ce ptit bout de code y a sa place, je vais la suggerer on verra...

++

signaler à un administrateur
Commentaire de PCPT le 22/09/2006 23:45:14 administrateur CS

snippet activé.
et je viens de tester... çà peut vraiment être utile.
précision : les actions sont suspendues mais pas en pause (donc pas perdues).
qu'est-ce qu'il dit?
beh suffit de tester avec le bloc-note par exemple :
.on met en pause
.on donne le focus (sans effet visuel)
.on saisi une phrase (disabled donc rien)
...la phrase apparaît à lorsque réactive le pid

un p'tit 10 de plus ;)
PCPT  [AFCK]

signaler à un administrateur
Commentaire de PCPT le 22/09/2006 23:46:16 administrateur CS

...la phrase apparaît lorsqu'on réactive le pid ***

signaler à un administrateur
Commentaire de draluorg le 23/09/2006 15:25:00

"la phrase apparaît lorsqu'on réactive le pid"

Eh oui mais ca je pense que c'est Windows qui enregistre le(s) message(s) et qui l'envoi a l'appli lorsqu'elle se "reveille" (enfin je suppose)

++

signaler à un administrateur
Commentaire de patrice_b le 25/09/2006 08:49:37

Code interessant. Mais je ne sais pas ce qu'est un Pid. Merci pour l'explication
Patrice

signaler à un administrateur
Commentaire de MadM@tt le 25/09/2006 09:20:08

PID > ProcessID c'est l'identificateur d'un processus, un numéro quoi.
Pour le voir lance le gestionnaire des taches, onglets processus et dans le menu affichage clique sur sélectionner les colonnes, la active la case "numéro" ou "pid" ou je ne sais plus quel nom.
Ensuite tu auras la colonne qui t'affichera le pID de chaque processus.

signaler à un administrateur
Commentaire de PCPT le 25/09/2006 12:13:47 administrateur CS

salut,
exemple.. "Shell" renvoie le PID.
lPid à déclarer en Long (déclarations générales)

lPid=Shell("notepad.exe")

et ensuite tu fais les tests sur cette variables....
++

signaler à un administrateur
Commentaire de patrice_b le 26/09/2006 08:34:36

Merci pour les explications. Le programme est donc très utile. Je le testerai sous XP.
Patrice

signaler à un administrateur
Commentaire de diablamanshadow le 07/11/2006 01:39:05

je suis sous xp et sa fonctionne pas :-/ xp pro sp2 ^^

enfin ptete un prob chez moi mais je doute

signaler à un administrateur
Commentaire de draluorg le 07/11/2006 17:42:32

Salut,

Eh a mon avis c'est surement un probleme de droits utilisateur...
Est tu bien administrateur de ta machine ?
Si oui, tu pas peut etre un anti-malware qui t'as desactiver les droits de "debogage" des process...

Enfin il peut y avoir des tonnes de raisons, mais je doute fort que ca vienne du code en lui meme...

++

signaler à un administrateur
Commentaire de nnizarr le 04/05/2007 17:58:45

pardon mais es ce qq peut m'aider? je chreche a programmer un PID avec VB .net
et je ne sais pas par ou commence
Merci

signaler à un administrateur
Commentaire de draluorg le 04/05/2007 19:53:12

Erf tu vas en faire rire plus d'un la ^^

Un Pid (Process identifier) en francais (Identificateur de processus) est un nombre entier 32bit servant comme son nom l'indique a identifier un processus.
Dans le gestionnaire de taches de Windows dans le menu affichage tu clic sur "Selectionner les colones" et tu coches PID.
Tu verra alors les pid s'afficher dans la liste des processus.

Tu verra que tu as plusieurs processus qui portent le meme nom genre Svchost.exe, c'est justement leur PID qui permet de les differencier.

Le PID est attribué "aléatoirement" par Windows lors de la creation du processus.

Donc voila en gros ce qu'est un PID, maintenant si tu veux toujours programmer un PID je ne peux rien faire pour toi! lol

Mais peut etre peux tu reposer ta question ?
Que veux tu faire au juste ?

++

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Geler le système comme dans win98 (Ctrl-Alt-Suppr) [ par MadM@tt ] Bonjour a tousVoilà je cherche à faire la même chose que le gestionnaire des taches de win98, quand on le lance tous les processus sont bloqués et on Capter l'ouverture de processus. [ par violent_ken ] Violent KenSalut à tous ! J'ai un problème assez complexe... Je le poste, merci à vous si vous pouvez m'aider !Je suis en train de prog Trouver le PID d'un processus avec le nom de l'EXE [ par Tioneb ] Salut,Bon, je sais que je vais poser une question "simple" mais je n'arrive pas à trouver la solution tout seul. Je m'embrouille les pinceaux entre le Comment différencier deux processus dans l'attribut InstanceName d'un PerformanceCounter ? [ par violent_ken ] Violent Ken Bonjour !J'ai cherché pendant un bout de temps sans succès.... Savez vous comment différencier deux process Récupérér path d'un processus en fonction de son PID [ par violent_ken ] Violent KenSalut à tous !Ma question est simple : comment peut-on récupérer le path complet d'un exécutable lancé (exemple : c:\windows\system32\explo BackgroundWorker et Processus principal [ par moinarf ] Hello !Je suis sous VB.Net 2005 Express, et voila mon probléme : J'ai une Form qui lance un backgroundworker, celui ci travaille en arriére plan...Je Processus en réseau [ par wawamule ] Coucou tout le monde,Quelq'un peut-il m'expliquer ou me montrer un code qui permet de lancer des processus sur un poste distantDonc j'aimerai pouvoir Une boucle qui ne ferais pas geler une application [ par drnicholas001 ] Salut, pour une programme j'ai besoin de faire une boucle qui fait beaucoup de calcul (presque qu'infini). Mais quand je fais du code dans une boucle "Gestion" de Processus [ par LeGrosWinnie ] Bonjour à tous,   Vous allez medire qu'en cherchant on trouve, j'ai chercher dans les tutoriaux, mais la plupart d'entre eux n'expliquent qu comment Controler une application lancer dans le processus [ par elmobile ] salut tous les amisje vous demande si possible à m'aider à trouver une solution de ce problème et merci d'avance.alors voila :j'ai une application app


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.