Processus

sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 - 4 avril 2005 à 16:38
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 - 22 avril 2005 à 13:49
Bonjour a tous,



Desoler si je pose une question deja poser et deja repondu, mais ce que
je cherche n'est pas facile a "trouver" avec l'outil de recherche du
forum.



J'aurais besoin de lister tout les processus qui tourne sur la machine,
mais en obtenir des information plus detailler que ce que donne la
classe System.Diagnostic.Process



J'ai besoin de savoir pour chaque processus, si c'est un process de
tache de fond, s'il tourne en SysTray ou en barre des taches....
Windows le fait donc c'est faisable, le probleme c'est que je n'ai pas
trouver grand chose d'utile sur le net, j'ai tenter d'utiliser l'API
Win32 mais en vain, je pense de toute facon que l'API Win32 est le seul
moyen de parvenir a obtenir ce resultat.



Si quelqu'un a une idee, merci d'avance :)

14 réponses

cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
4 avril 2005 à 17:16
Salut,
avec Coq nous avions travaillé ensemble sur une routine qui permettait de tester les conditions pour qu'une fenetre sois affichée dans la taskbar ( ou apparaisse dans le alt-tab, c'est les mêmes critères )
c'est donc au niveau des styles de la fenetre que les critères s'inscrivent, je m'explique :
en gros en passant des heures sur spy++, on est arrivé à certaines conditions, que je retranscri ici ( dsl c du vb.net :( )

http://www.vbfrance.com/code.aspx?ID=30543

cette classe permet aussi de recup de les icones des fenetres en question ( de n'importe quelle fenetre d'ailleurs )

voilà j'espère que ca peut t'aider.
pour le systray je n'avais pas eu le temps de me pencher sur le sujet mais ca m'interesse !
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2005 à 17:28
merci beaucoup, je vais jeter un coup d'oeil (t'inquiete pas pour le VB, je gere :p) et peut-etre que ca me donnera une piste pour avancer d'avantage et trouver quelque chose pour le systray.


Merci d'avance :)
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2005 à 18:52
Excuse moi s'il te plais, j'ai longtemps coder en VB4, 5 et 6 mais je ne connais pas les nouvelles syntaxes de VB.NET

Peut-tu s'il te plait m'expliquer ceci :

Return ((wStyles And enWindowStyles.WS_EX_APPWINDOW) = enWindowStyles.WS_EX_APPWINDOW) OrElse _
((wStyles And enWindowStyles.WS_POPUP) = enWindowStyles.WS_POPUP)

je n'ai pas compris le OrElse
Merci d'avance

PS : Sinon j'ai fini de la "porter" en C# mais ca fonctionne tres mal, je pense que tout est du a cette ligne
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
4 avril 2005 à 19:05
En C# tu remplaces le OrElse par || (et le AndAlso par &&) :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
4 avril 2005 à 19:05
orelse permet de ne pas evaluer la deuxieme partie de l'expression si la première est déjà vraie et c le même principe pour andalso :

y a les analogies avec c# ici :

http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
4 avril 2005 à 19:13
par contre si ca marche toujours pas ce soir dis le moi et je retravaillerais dessus.
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2005 à 20:00
Ouais c'est bien ce que je pensais, mais ton algo semble renvoyer toujours false :S a moins que je ne m'y prenne mal



Process[] ps = Process.GetProcesses();

foreach (Process p in ps)

{

if (p.Id == 0)

continue;

clsHwndInfo cls = new clsHwndInfo(p.Handle);

if (cls.ShownInTaskBar)

listBox1.Items.Add("[" + p.ProcessName + "] -> " + cls.WindowText);

else

listBox1.Items.Add("[" + p.ProcessName + "]");

}



Le code va toujours dans le else
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
4 avril 2005 à 21:12
ce sont pas les process qu'il faut tester mais les fenetres. Les fenetres mères car les childs ne sont jamais dans la taskbar.
j'ai publié une autre source sur vbfrance qui affiche les fenetres liées à un process tu n'as qu'à cliquer sur mon profil. ( c'est aussi du vb.net )
si c'est pas clair ou si tu t'en sors pas rappelle nous.
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2005 à 23:01
ok, j'ai donc iterer sur les fentres, mais la proprieter ShowInTaskBar continue a renvoyer tout le temps false.



Par contre j'ai essayer uniquement avec la prop Visible, et j'obtient
toutes les fentres qui sont lister dans la barre des taches + certaines
du systray, mais pour le moment je ne distingue toujours pas les
fenetres de la taskbar et du systray
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
4 avril 2005 à 23:49
normallement la classe fonction mais j'ai pas retesté
on verra ca demain aprem si tu veux bien.
0
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
20 avril 2005 à 17:14
J'ai beau lister les process comme sebseb42 mais en AUCUN cas j'arrive a recuperer TOUTES les fenetres ouvertes par l'explorateur (ou le poste de travail).
Je n'arrive pas non plus a recuperer les fenetres minimizées dans le TrayIcon !!!

La classe de Patrice / Coq est super pratique en tout cas ! (conversion en C# tres simple malgré quelques problemes au niveau des types Int et Uint)

Alors si quelqu'un avait une idée pour recuperer toutes les application lancées et leur fenetre ca serait cool (comme l'onglet application (pas processus mais application) du gestionnaire des taches) !

Merci par avance.

Bouyaka !
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
20 avril 2005 à 18:10
ben voir mes sources sous vbfrance, ca recup dans une arborescences avec enunwindows et ca fait le tour des process (en vb.net)
pour larborescence je ne détruits pas les doublons (à fiare)
0
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
21 avril 2005 à 13:38
Bon j'ai utilisé l'API EnumWindows et la c'est bon !
Il ne me reste plus qu'a completer ta Class clsHwndInfos pour savoir si ce sont des toolwindows , des popup et etc et ca roulera.

Etant en train de realiser un soft pour CyberCafé, je recrée une taskbar qui s'occupera de gérer les processus, de bloquer des logiciels et sites internets ainsi que les popup.
J'essai aussi de regroupper les fenetres d'un meme processus au sein d'un meme bouton (comme la fonctionnalité de XP que je trouve exelente).

Il est vrai que c'est assez complexe de bosser avec les processus.

Par contre avec ta class, des fois ca me recup la small icone et d'autre fois non ..... faut que je regarde aussi ca car pourtant le Handle de l'icon est correct !

Merci en tout cas pour cette classe vraiment pratique !

Bouyaka !
0
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
22 avril 2005 à 13:49
oui c fait expres, parce les 2 méthodes ne marchent pas toujours, mais quand une marche pas, l'autre marche, ceci explique cela.
0
Rejoignez-nous