Boujour, je cherche à savoir s'il est possible de récupérer l'état (statut) d'une application.
En effet, je souhaite tuer mon appli si elle est mode "Ne répond pas".
Si qq'un peut m'aider, merci.
Boujour, je cherche à savoir s'il est possible de récupérer l'état (statut) d'une application.
En effet, je souhaite tuer mon appli si elle est mode "Ne répond pas".
Si qq'un peut m'aider, merci.
Merci pour le lien, ça m'est utile.
Mais je n'arrive pas à connaître l'état de l'appli quand je fais:
oproc.ExecutionState ou
oproc.Status
Ca me renvoie une valeur nulle alors que mon appli tourne.
As-tu une suggestion??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Form_Load() Dim svc As Object Dim oproc Set svc = GetObject("winmgmts:root\cimv2") squery = "select * from win32_process where name='Test.EXE'" For Each oproc In svc.execquery(squery) MsgBox "" & oproc.ExecutionState Next Set svc = Nothing End Sub
Ben...
te "zigouillera", si elle est ouverte, l'appli TEST.EXE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Form_Load() Dim svc As Object Dim oproc Set svc = GetObject("winmgmts:root\cimv2") squery = "select * from win32_process where name='TEST.EXE'" For Each oproc In svc.execquery(squery) oproc.Terminate Next Set svc = Nothing End Sub
La requête qui est faite l'est précisément sur TEST.EXE... et aucune autre appli...
Essaye et tu constateras !
Il faut qu'il soit clair dans ton esprit que TEST.EXE doit exister (ne pas tester, donc, en lançant, par le Run ou Start, TEST.VPB mais créer TEST.EXE, lancer TEST.EXE et tester alors...)
Je viens de tester chez moi et tout marche sans problème.
PS : lorsque tu y seras parvenu, remercie ThierryAIM qui nous a "passé ce petit bout de code il y a quelques jours à peine ...
J'ai testé et je suis d'accord avec toi ça marche si on veut tuer n'importe
quelle application.
Mais moi je veut tuer une application qui ne répond plus et donc je veux savoir son état (En cours d'exécution, ou Ne répond pas).
D'après ce bout de code, on tue Test.exe quelque soit son état.
J'adore :
Merci m'sieur µsoftEnvoyé par MSDN
Ok, c'est génial donc y'a pas moyen de récupérer l'état d'une application qui tourne.
En VB.net il existe la classe Process avec une méthode Responding.
N'y a-t-il pas un moyen en vb6.
Ouais et Ouille !
Après avoir (comme à l'accoutumée) foncé la tête la première dans le brouillard et (toujours comme à l'accoutumée) été victime de nombreux hématomes en me heurtant à 2 ou 3 murs (parmi lesquels le .status que j'ai essayé sans, comme Thierry, regarder ce qu'en disait MSDN), j'en suis arrivé à me contenter d'une réflexion philosophique (bosses et hématomes aidant...) :
S'il était possible de dénoncer l'état bloqué d'une application ouverte, Windows aurait certes profité de cette aptitude pour dénoncer à son client, sans plus attendre, le problème...
Or, Sir Bill ne fait connaître l'existence de cette épine que lorsque son client tente de fermer une application et que ses "ouvriers" n'y parviennent pas !
Sir Bill ne saurait ainsi qu'un processus ne répond plus que lorsque son client tente en vain de le fermer... et... si le processus peut être fermé, ma foi, il... le ferme !...
Bien, mais voilà : Sir Davidvb6 ne veut quant à lui pas que l'on ferme si le processus est encore capable de répondre... Gênant, gênant tout çà ... Comment tenter de fermer .... sans fermer .... pour voir si l'on peut fermer ?...
Je me mets donc à genoux et ... abandonne (trop de bosses déjà)...
Pour votre information :
Avec, bien sûr, les petites subtilités à Bill, citées plus hautClass Win32_Process: CIM_Process
{
string Caption;
string CommandLine;
string CreationClassName;
datetime CreationDate;
string CSCreationClassName;
string CSName;
string Description;
string ExecutablePath;
uint16 ExecutionState;
string Handle;
uint32 HandleCount;
datetime InstallDate;
uint64 KernelModeTime;
uint32 MaximumWorkingSetSize;
uint32 MinimumWorkingSetSize;
string Name;
string OSCreationClassName;
string OSName;
uint64 OtherOperationCount;
uint64 OtherTransferCount;
uint32 PageFaults;
uint32 PageFileUsage;
uint32 ParentProcessId;
uint32 PeakPageFileUsage;
uint64 PeakVirtualSize;
uint32 PeakWorkingSetSize;
uint32 Priority;
uint64 PrivatePageCount;
uint32 ProcessId;
uint32 QuotaNonPagedPoolUsage;
uint32 QuotaPagedPoolUsage;
uint32 QuotaPeakNonPagedPoolUsage;
uint32 QuotaPeakPagedPoolUsage;
uint64 ReadOperationCount;
uint64 ReadTransferCount;
uint32 SessionId;
string Status;
datetime TerminationDate;
uint32 ThreadCount;
uint64 UserModeTime;
uint64 VirtualSize;
string WindowsVersion;
uint64 WorkingSetSize;
uint64 WriteOperationCount;
uint64 WriteTransferCount;
};
Ok ba merci quand même tu temps que vous m'avez accordé mais je suis pas sûr d'avoir tout compris car le gestionnaire de tâches lui sait quand une application ne répond pas sans qu'on essaie de la fermer, il doit donc exister un moyen de récupérer cette info.
De plus en VB.net cela marche très bien.
?tu temps
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part tue temps?
pardon pour la faute de frappe mais ça arrive.
je suis pas sûr d'avoir tout compris car le gestionnaire de tâches lui sait quand une application ne répond pas sans qu'on essaie de la fermer, il doit donc exister un moyen de récupérer cette info.
De plus en VB.net cela marche très bien.
Le problème, c'est que VB6, c'est pas VB.netEnvoyé par Davidvb6
et que le gestionnaire des taches n'est pas non plus programmé en VB6
et que pour le moment, ben j'ai pas trouvé
Si qq'un trouve une solution, je suis toujours preneur.
Bonjour,
dur, dur...Si qq'un trouve une solution, je suis toujours preneur.
après d'autre recherches, M. Bill a également prévu (mais uniquement au lancement de quelques applications qui sont les siennes) d'alerter son client lors du démarrage (en cas d'insuccès) des dites applications... (il semble qu'il se soit contenté dans ces cas là d'un simple test de "connexion")
Dans d'autres cas, enfin, il semble que les applications "dénoncées" utilisent un timer de vérification
Je ne trouve absolument rien en ce qui concerne les blocages "en cours" des applications qui ne contiennent pas en elles-même ce genre de "délateur".
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager