Recuperer la liste des processus [Win32] [RESOLU] - Divers - Programmation
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
Marsh Posté le 30-09-2002 à 13:35:03
Eh merde, j'ai pas de CreateToolhelp32Snapshot dans ma Visionneuse d'API(tm)
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
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
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
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"
Message édité par lorill le 30-09-2002 à 15:45:04