IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

obtenir le path complet d'un processus en fonction de son PID


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut obtenir le path complet d'un processus en fonction de son PID
    Bonjour à tous !
    J'ai une question : de quelle manière, simple, pourrais je procéder pour obtenir le path complet d'un processus (exemple : "c\windows\system32\explorer.exe") uniquement en fonction du PID du processus ?

    En gros, je cherche une fonction de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Function GetEntirePath(lPID as Long) as String
    .......
    End Function
    et que le résultat de, par exemple, GetEntirePath(1542) soit, par exemple, "c:\windows\system32\lsass.exe"

    On m'a déjà aguillé sur les API

    -OpenProcess
    -GetModuleFileName
    -CloseHandle

    mais je ne suis pas arrivé à ce que je voulais avec.

    Auriez vous des idées ?
    Merci beaucoup par avance.
    @+

  2. #2
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Comment as-tu déclaré ces API? Comment les as-tu utilisées?

    Sinon, il me semble que tu peux obtenir cette information via WMI. Je ne l'ai jamais fait. Fais une recherche sur le mot clé WMI. Peux-être trouveras tu une solution.

  3. #3
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    On ta deja donné le réponse sur un autre site et tu la validé, pourquoi venir mettre ton post ici maintenant?

    je cite " Parfait. Avec çà çà va marcher nickel"

    ah ben on voit ça oui...

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'allais poster ici pour dire que j'avais mes pistes de réponses
    J'ai juste à adapter le code que m'a gentillement donné l'autre personne.

    J'ai posté sur deux sites dans un soucis de rapidité.
    La transcription du code C donné sur l'autre site ne sera pas difficile, comme je l'ai affirmé....


    Aucune importance, j'ai donc obtenu l'information que je cherchais, merci à vous.
    @+

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai finalement terminé mon code : je le poste ici aussi, çà servira peut êre à quelqu'un un jour.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Public Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
    Public Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
    Public Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
    Private Const PROCESS_QUERY_INFORMATION = 1024
    Private Const PROCESS_VM_READ = 16
     
     
    Public Function GetPathFromPID(lPID As Long) As String
    GetPathFromPID = vbNullString
    Dim lHprcss As Long, lSize As Long, sResult As String, lReturn As Long
    Dim lngModules(1 To 200) As Long
     
    'création d'un buffer
    sResult = Space$(512)
     
    lHprcss = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lPID)    'get the hInstance application
    If lHprcss = 0 Then Exit Function   'echec
    lngReturn = EnumProcessModules(lHprcss, lngModules(1), 200, 0)
    lSize = GetModuleFileNameExA(lHprcss, lReturn, sResult, 512)
     
    CloseHandle lHprcss 'ferme le handle
    GetPathFromPID = Left$(sResult, lSize)  'récupère le nom
     
    End Function

    @+

Discussions similaires

  1. [Struts] obtenir le path de l'application
    Par pouss dans le forum Struts 1
    Réponses: 8
    Dernier message: 11/05/2006, 10h37
  2. Réponses: 6
    Dernier message: 12/07/2005, 12h20
  3. Comment obtenir le nom complet d'un lecteur réseau ?
    Par Speed41 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/08/2004, 07h55
  4. [debutant][Fichier] Comment obtenir le path de mon fichier ?
    Par Soulsurfer dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/06/2004, 17h09
  5. Obtenir le chemin complet d'un fichier
    Par pamplemousse_mk2 dans le forum Linux
    Réponses: 3
    Dernier message: 13/08/2003, 23h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo