Bonjour,
J'arrive à travailler avec le gestionnaire de tâche (lire les processus et killer un processus, mais je n'arrive pas à remonter le nom du processus en lui-même et l'inscrire dans une zone de texte.
COmment je peux faire?
merci
Bonjour,
J'arrive à travailler avec le gestionnaire de tâche (lire les processus et killer un processus, mais je n'arrive pas à remonter le nom du processus en lui-même et l'inscrire dans une zone de texte.
COmment je peux faire?
merci
J'ignore la méthode que tu utilise pour lire les processus en cours...
Si tu utilises la même que la mienne, je ne comprends pas ou est le problème (passer nom_du_processus à une textbox !)
mes processus sont affichés dans une listbox...
Ta question se réduirait alors à celle-ci :
Comment afficher dans une textbox le texte d'un article sélectionné dans une listbox ?
Si tel est finalement le problème réel :
1) modifie ton titre (les processus n'ont rien à voir avec ta question, qui pourrait concerner n'importe quelle listbox contenant n'importe quoi d'autre)
2) une recherche avancée sur ce forum te permettrra d'aboutir à des dizaines de réponses![]()
Si tu arrives à les lire, précise ton problème.J'arrive à travailler avec le gestionnaire de tâche (lire les processus ...)
Par contre, ce qui intéresserait certains (dont je suis) c'est le code correspondant à ton sujetAinsi tu n'aurais pas besoin de changer de sujet...
![]()
Tu dis
A+
bonjour ouskel'n'or
trop compliqué de le faire ici et je ne veux pas encombrer..
tu veux celà par MP ?
Voici le code que j'utilise:
J'arrive donc par ce code à rentrer dans le gestionnaire de tâche et à killer le processus qui porte le nom Projet1.exe.
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
47
48
49
50
51
52
53
54
55
56
57
58
59 Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * 260 End Type 'Déclarations d'API Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Private Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long *************** Private SUb Méthode() Dim Processus As PROCESSENTRY32 Capture = CreateToolhelp32Snapshot(2, 0) 'Capture permete de parcourir la liste des processus du système Processus.dwSize = Len(Processus) courant = Process32First(Capture, Processus) Do While courant If Left$(Processus.szExeFile, IIf(InStr(1, Processus.szExeFile, Chr$(0)) > 0, InStr(1, Processus.szExeFile, Chr$(0)) - 1, 0)) = "Projet1.exe" Then 'Si "Scan.exe" est trouvé dans les processus du système, le parcours des processus s'arrete là courant = False Else 'Processus suivant courant = Process32Next(Capture, Processus) End If Loop CloseHandle Capture 'Si "Projet1.exe" a été trouvé, courant=False puisqu'on a manuellement définit cette valeur pour arreter la boucle ; dans ce cas, TypeName(courant)="Boolean" 'Si "Projet1.exe" n'a pas été trouvé, la boucle est allée jusqu'au dernier processus du système ; dans ce cas, TypeName(courant)="Long" car courant=0 If TypeName(courant) = "Boolean" Then Identifiant = OpenProcess(1, 0, Processus.th32ProcessID) TerminateProcess Identifiant, 0 CloseHandle Identifiant End If Unload Me End Sub
Ce que je voudrais faire, c'est faire une boucle qui lise un à un les processus actifs et me les affiche dans une zone de texte.
Fait une recherche sur la fonction API EnumProcesses
ou ces 4 APIs là , travaillant en parallèle :
GetWindow
GetWindowTextLength
GetWindowText
GetParent
Si tu es audacieux....![]()
Sinon, j'ai un truc rigolo :
ca t'en bouche un coin, hein, jmf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Command1_Click() Dim svc As Object Dim sQuery As String Dim oproc Set svc = GetObject("winmgmts:root\cimv2") sQuery = "select * from win32_process" For Each oproc In svc.execquery(sQuery) Debug.Print oproc.Name Next Set svc = Nothing End Sub![]()
A thierry uniquement :
Aucun, sinon le seul processus en cours, et encore... limité à l'exe du processus principal![]()
![]()
PS : (tu as beaucoup mieux entre les mains...)
Pardon ??Envoyé par jmfmarques
Win XP SP2, mais je te teste ça dans les 2 mn sous Win2000Envoyé par fenêtre de deboggage de VB6
EDIT : Fonctionne aussi parfaitement sous Win2k SP4
J'aime mieux pas répondre, je risquerais d'être désagréableEnvoyé par Asdorve
![]()
tiens sous W2k
System Idle Process
System
SMSS.EXE
CSRSS.EXE
WINLOGON.EXE
SERVICES.EXE
LSASS.EXE
svchost.exe
spoolsv.exe
svchost.exe
gearsec.exe
NA_Service.exe
NA_XWAY.exe
ntrtscan.exe
regsvc.exe
RsiSvc.exe
SrScanDr.exe
mstask.exe
spnsrvnt.exe
SOption.exe
tmlisten.exe
PQV2iSvc.exe
WinMgmt.exe
svchost.exe
OfcDog.exe
DdsSchedNT.exe
svchost.exe
scardsvr.exe
explorer.exe
fpdisp4.exe
fppdis1.exe
PccNTMon.exe
qttask.exe
SyncroAd.exe
WinSync.exe
nlnotes.exe
PccNTUpd.exe
AlarmApp.exe
mstsc.exe
ntaskldr.exe
IEXPLORE.EXE
EXCEL.EXE
agentsvr.exe
Désolé pour ma question idiote...![]()
Je viens d'arriver à faire ce que je voulais (grace à ton code)![]()
Merci bcp
@+
>>bbil :
Mais tu avais peut-etre pas vu, alors merci quand mêmeEnvoyé par Thierry
Cependant, après une petite discussion rapide sur skype avec jmf, il semblerait que ce code ne fonctionne pas avec VB5![]()
Qqun peut-il confirmer:
Et ça marche en VBA97 sous xp
System Idle Process
System
smss.exe
csrss.exe
winlogon.exe
services.exe
lsass.exe
svchost.exe
svchost.exe
svchost.exe
svchost.exe
ccSetMgr.exe
ccEvtMgr.exe
spoolsv.exe
awhost32.exe
DefWatch.exe
ngctw32.exe
SavRoam.exe
svchost.exe
Rtvscan.exe
ssonsvr.exe
explorer.exe
jusched.exe
soundman.exe
ccApp.exe
VPTray.exe
hpgs2wnd.exe
ctfmon.exe
AcroTray.exe
jucheck.exe
hpgs2wnf.exe
Eudora.exe
excel.exe
IEXPLORE.EXE
winword.exe
wmiprvse.exe
![]()
Est-ce qu'il y a moyen de lire le nom des applications en cours au lieu des processus?
cela m'aurait fort étonné que tu ne poses pas la questionEnvoyé par Asdorve
![]()
pour l'instant je n'en sais rien, alors cherche un peu de ton coté
Je cherche, je cherche, mais je trouve pas forcément... Dsl, personne n'est parfait.
Suis dans le même cas !cela m'aurait fort étonné que tu ne poses pas la question
et tout celà me rappelle une très récente conversation![]()
Maintenant, Asdorve :
Tu mesures bien le distinguo entre processus et applications en cours...Il est de taille !
Enfin et surtout, ne serais-tu tout simplement pas en train de tenter d'écrire un code non pour recenser les applications en cours, mais plus simplement pour vérifier qu'une application particulière (que tu connais) est ou n'est pas déjà ouverte... pour ne pas la relancer, par exemple, ... ou pour la fermer... ?
Si tel est le cas, il faut le dire, car tout est alors plus simple à mettre en oeuvre...
Partager