[Win32] [RESOLU] Recuperer la liste des processus

Recuperer la liste des processus [Win32] [RESOLU] - Divers - Programmation

Marsh Posté le 30-09-2002 à 13:21:20    

Je dois faire un programme qui detecte si un programme dont le nom est connu (style outlook.exe) est lancé sur la machine ou non. Le probleme c'est que je sais pas si c'est possible, et si oui quelle est l'api a utiliser.  
 
Rhaa, si seulement je pouvais sortir un bon gros "ps aux | grep leprog"  :cry:


Message édité par lorill le 30-09-2002 à 15:45:04
Reply

Marsh Posté le 30-09-2002 à 13:21:20   

Reply

Marsh Posté le 30-09-2002 à 13:31:22    

Bon, si jamais y'en a que ca interesse, je crois que j'ai trouvé :
http://msdn.microsoft.com/library/ [...] cesses.asp

Reply

Marsh Posté le 30-09-2002 à 13:35:03    

Eh merde, j'ai pas de CreateToolhelp32Snapshot dans ma Visionneuse d'API(tm)

Reply

Marsh Posté le 30-09-2002 à 14:21:47    

J'ai une solution que j'utilise, ce sont les PsTools que tu peux downloader sur http://www.sysinternals.com
 
Avec les PsTools, je peux lister tous les processus qui tournent, flinguer ceux que je veux, etc
 
Ceux que j'ai marchent sous NT only mais il me semble qu'ils ont aussi une version pour Win9x
 
C'est du freeware, ce qui ne gâche rien  :D


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 30-09-2002 à 14:25:14    

Oui mais non, je dois le faire par programme, pas a la main.  
Merci quand même. Pis je crois avoir trouvé un truc, suite au prochain numéro

Reply

Marsh Posté le 30-09-2002 à 14:35:27    

Du code que j'avais écrit en 16 bits (pas top top, suis amateur, mais ça fonctionne en 32 bits aussi). Y a sans doute plus synthétique, plus pur_API_sé.
Cf si qq chose utile à en extraire (j'ai enlevé du code sans intérêt ici)
 
BOOL TestSiUnique(LPSTR lpCmdLine)
{
// Cherche une occurence du programme courant par son titre.
//   Passe en revue toutes les applications qui tournent.
//
// Si trouvé, retourne False et remet l'application en avant plan
// sinon, retourne True
//
     HWND   hWnd;
 
     hWnd = GetTopWindow(NULL);
     while (hWnd != NULL)
     {
       if ((IsWindowVisible(hWnd) != 0) &&
    (IsWindowEnabled(hWnd) != 0))
       {
  long   TL;
// On n'a ici que les noms de feuilles ppales "visibles"
// Si pas test, on trouve aussi ce qui est en "arrière-plan"
  TL = GetWindowLong(hWnd, GWL_STYLE);
  if ((TL & WS_POPUP) != WS_POPUP)
         { // != WS_POPUP donne nom de titres de fenêtres
    //  == WS_POPUP donne le nom des applications
    char WName[256];   // ? Taille maxi de chaîne ?
    WName[0] = '\0';
    GetWindowText(hWnd, WName, sizeof(WName));
    if (strstr(WName, ChneTitr) != NULL)
    { // montre l'autre session (icône ou cachée)
      if (IsIconic(hWnd) != 0)  // minimisée
               OpenIcon(hWnd);
             else
        SetWindowPos(hWnd, hwEtat, 0, 0, 0, 0,
                           SWP_NOMOVE | SWP_NOSIZE);
 
      // envoie message pour dire à la session déja ouverte "y a un fichier à lire"
             // et lui passe le nom complet pour action.
// Action (top secrète, sans utilité ici)
        return FALSE;
    }
  }
       }
       hWnd = GetWindow(hWnd, GW_HWNDNEXT);
     }
     return TRUE;
}
// fin de module TestSiUnique

Reply

Marsh Posté le 30-09-2002 à 15:44:49    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed