Page 1 sur 1

nom des programmes en cours d'éxécution sans gestionnaire

Publié : jeu. 27/sept./2012 15:04
par david
ps: avant tout je ne suis pas en ADMINISTRATEUR et ne peut donc pas ouvrir le gestionnaire de programme ou les outils classiques de windows xp...

J'ai trouvé sur le site des codes qui me donnent le nom "d'affichage" des fenetres ouvertes (genre "PureBasic - Internet Explorer"), mais j'ai besoin de connaitre:

le nom du programme lancé sous la forme "Calc.exe" et non pas uniquement son nom d'affichage "Calculette Euro")
voire même le chemin duquel il a été lancé "C:\Programm Files\Outils\Calc.exe"

pour tous les programmes qui tournent actuellement sur le PC (soient en premier plan, soit réduits, soit iconisé)
En bref tout ce que windows a lancé au démarrage sur lequel je n'ai pas de visibilité

Si quelqu'un peut m'aider

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 15:25
par falsam
Bonjour. Tu peux te servir de WMI pour lister les process en cours d'utilisation

Code : Tout sélectionner

IncludeFile "WMIQuery.pbi"

NewList WMIResult.WMIClass()


If WMIQuery("select Caption, ExecutablePath from Win32_Process", WMIResult())
  ForEach WMIResult()
    Debug WMIResult()\Property + "=" + WMIResult()\Value
  Next
EndIf
Tu touveras l'include sur ce lien : http://www.purebasic.fr/french/viewtopi ... =6&t=13185

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 16:00
par david
Ouah, ça donne effectivement pas mal d'indications...
Par contre, dans la liste que je récupère, il y a des choses qui n'apparaissent pas (comme le Volume (iconisé), ou l'affichage de l'heure (iconisé), etc...)

Je vais regarder dans les nombreux exemples d'appels de WMIQuery.pbi si je vois qq chose

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 16:07
par falsam
la classe Win32_Process est décrite en français sur ce lien
http://www.secretswindows.com/index.php ... rocess.htm

Tu pourras demander plus d'information dans ta requête WMI

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 16:31
par falsam
david a écrit :il y a des choses qui n'apparaissent pas (comme le Volume (iconisé), ou l'affichage de l'heure (iconisé), etc...)
Qu'est ce que le Volume (Iconisé) ? Heure (Iconisé) ?

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 16:37
par david
voici la liste des éléments qui ne figurent pas dans l'affichage des résultats:

- J'ai un petit dessin dans la barre en bas à droite qui ressemble a un haut-parleur, si je passe le curseur dessus il affiche "haut-parleur" et si je clique je peux régler le volume
- Il y a également l'heure dans la même zone, si je passe le curseur dessus il affiche la date
- il y a également McAfee, si je clique il me donne les options..
- il y a également un Controle a distance LANDesk, si je clique il me donne les options..

est-ce que c'est parcequ'ils ne sont pas exécutés de la même façon par windows...?

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 16:52
par falsam
J’espère ne pas dire de bêtises !!!. Une icone dans ta zone de notification est soit un programme que tu trouveras dans la liste des process, mais je pense qu'on peut aussi trouver des programmes qui s’exécutent sous forme de services Windows.

Tu peux obtenir la liste des services avec une requête WMI.

Code : Tout sélectionner

IncludeFile "WMIQuery.pbi"

NewList WMIResult.WMIClass()

If WMIQuery("select Caption, Description, PathName from Win32_Service", WMIResult())
  ForEach WMIResult()
    Debug WMIResult()\Property + "=" + WMIResult()\Value
  Next
EndIf

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : jeu. 27/sept./2012 17:11
par david
la liste est beaucoup plus importante qu'avant, mais les 4 éléments listés dans le message précédent n'apparaissent toujours pas

pour le vérifier, comme je n'arrive pas forcément à identifier tous les éléments de la liste, je les "Kill" avec le programme aménagé ci-dessous pour voir si l'icone apparait toujours
-> elles sont peut-etre masquées contre l'affichage ou protégées contre le "Kill"

Code : Tout sélectionner

DisableASM
;EnableExplicit


nameprog$=InputRequester("Killer de Prog","Entrez le nom du Progr a Killer","EXCEL.EXE")
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
Procedure KillProcess(pid.i)
;
  Define phandle.i
  Define result.b = #False
  phandle = OpenProcess_($1, #False, pid)
  If phandle <> #Null
    If TerminateProcess_(phandle, 1)
      result = #True
    EndIf
    CloseHandle_(phandle)
  EndIf 
  ProcedureReturn result
EndProcedure
Procedure.l GetProcessPidByName(sfilename.s) 
;
  Protected snap.l
  Protected uProcess.PROCESSENTRY32
  Protected lkernel32.l 
  sfilename = GetFilePart(sfilename)
  lkernel32 = OpenLibrary (#PB_Any, "kernel32.dll")
  If lkernel32
    snap = CreateToolhelp32Snapshot_($2, $0)
    If snap <> 0
      uProcess\dwSize = SizeOf(PROCESSENTRY32)
      If CallFunction (lkernel32, "Process32First", snap, @uProcess)
        While CallFunction (lkernel32, "Process32Next", snap, @uProcess)
          If PeekS(@uProcess\szExeFile) = sfilename
            CloseHandle_(snap)
            CloseLibrary(lkernel32)
            ProcedureReturn uProcess\th32ProcessID
          EndIf
        Wend
      EndIf
      CloseHandle_(snap)
    EndIf
    CloseLibrary(lkernel32)
  EndIf
  ProcedureReturn #False
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
Define lProcess = GetProcessPidByName(nameprog$)
If lProcess <> 0
  KillProcess(lProcess)
EndIf

Re: nom des programmes en cours d'éxécution sans gestionnair

Publié : lun. 01/oct./2012 14:24
par falsam
david a écrit :voici la liste des éléments qui ne figurent pas dans l'affichage des résultats:

- J'ai un petit dessin dans la barre en bas à droite qui ressemble a un haut-parleur, si je passe le curseur dessus il affiche "haut-parleur" et si je clique je peux régler le volume
- Il y a également l'heure dans la même zone, si je passe le curseur dessus il affiche la date
- il y a également McAfee, si je clique il me donne les options..
- il y a également un Controle a distance LANDesk, si je clique il me donne les options..
Un code de Luis sur le forum Anglais qui te permet de lister les process de la zone de notification.
Lien : http://www.purebasic.fr/english/viewtop ... 12&t=51549
par contre il faut compiler ce code avec Pure Basic 64 Bits. Fonctionne sous Windows 7.