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

C++Builder Discussion :

[process] Afficher contenu gestionnaire des tâches


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    [process] Afficher contenu gestionnaire des tâches
    Bonjour,

    Je voudrais afficher dans une ListBox le contenu du gestionnaire
    des tâches de windows.

    je me suis inspiré de l'exemple ( procview ) dans C++Builder6.
    mais je n'arrive pas à trouver la fonction qui permet d'extraire
    le nom sous forme d'Exe, jai le le PID, le title de fenêtre.

    mon but est de surveiller les applications qui sont lancé sur mon
    poste.

    voici ce que j'utilise en code pour afficher les processus en cours.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/)
    {
       unsigned long* pPid;   //LPDWORD
       unsigned long result;      //DWORD
       void *hg;                  //HGLOBAL
       unsigned long id;
     
       if(hWnd==NULL)
          return false;
     
       hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
       pPid = (unsigned long *)GlobalLock(hg);
     
       result = GetWindowThreadProcessId(hWnd,pPid);
     
       if(result){
          char title[110];
          char className[95];
          char totalStr[256];
     
          GetClassName(hWnd,className,95); // <- extrait la class de l'application
          GetWindowText(hWnd,title,110); // <- extrait le titre de l'application
     
          id=*pPid;
          ultoa(id,totalStr,10);
          strcat(totalStr,"\t");
     
          if(title)
          {
             strcat(totalStr,title);
             strcat(totalStr,"\t");
          }
          strcat(totalStr,className);
          FormMaitre->ListBox1->Items->Add((AnsiString)totalStr);
     
       }
       else{
          GlobalUnlock(hg);
          GlobalFree(hg);
          return false;
       }
       GlobalUnlock(hg);
       GlobalFree(hg);
       return true;
    }


    merci de votre aide
    Keny

  2. #2
    Futur Membre du Club
    ça doit etre certainement "getwindowmodulefilename" :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UINT GetWindowModuleFileName(          
        HWND hwnd,
        LPTSTR lpszFileName,
        UINT cchFileNameMax
    );


    vas voir le lien suivant, t'auras à gauche une liste de fonctions bien utiles, pour savoir pleins d'autre choses (comme par ex. l'emplacement d'une fenetre, etc...) :

    http://msdn.microsoft.com/library/de...lefilename.asp

  3. #3
    Membre à l'essai
    merci de l'info je test avec GetWindowModuleFileName.

  4. #4
    Membre à l'essai
    excelent !
    ça fonctionne tres bien avec GetWindowModuleFileName

    merci a bientôt
    Keny,

###raw>template_hook.ano_emploi###