Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives


 
 
LinkBack Outils de la discussion
Vieux 17/11/2004, 13h25   #1 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Numeros de PID / Taches pour les pro...

Salut le forum,

j'aimerais s'avoir s'il est possible de recuperer le numero de PID d'une application ouverte sous windows ?

PID : nombre aleatoire attribuer par windows a une tache.

Merci a ceux ou celles qui pouront m'aider...

Jef
 
ANNONCES
Vieux 17/11/2004, 13h56   #2 (permalink)
Abel
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Bonjour Jef,

Je ne suis pas pro.
Je me risque donc à une réponse ...

Je suppose que tu veux parler du PID que l'on voit dans le gestionnaire des tâches. C'est à dire l'identificateur de processus.

Je ne suis pas sûr qu'il existe dans VBA un équivalent à GetCurrentProcessId de VB.

Peut être serais-je contredit ?


Abel.
 
Vieux 17/11/2004, 14h27   #3 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Bonjour abel,
En effet je parle bien du ProcessId...
Merci de t'etre occuper de mon cas,
et... jespere que tu seras contredit {:-Þ

Jef
 
Vieux 17/11/2004, 14h31   #4 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Bonjour Jef, Bonjour Abel,

Désolé Abel ceci est une demi-contradiction. J'ai trouvé ça dans l'aide VBA :

Lance un programme exécutable et renvoie une valeur de type Variant (Double) représentant l'identificateur (ID) de la tâche exécutée en cas de succès, ou un zéro en cas d'échec.

Syntaxe

Shell(pathname[,windowstyle])

La syntaxe de la fonction Shell comprend les arguments nommés suivants*:

Élément Description
pathname De type Variant (String). Nom du programme à exécuter, ainsi que tous les arguments ou paramètres de ligne de commande*; peut également préciser le répertoire ou dossier et le lecteur.
windowstyle Facultatif. De type Variant (Integer) correspondant au style de la fenêtre dans laquelle le programme est exécuté. En cas d'omission de windowstyle, le programme est activé mais la fenêtre est réduite.


Si tu veux plus d'infos, tape shell dans l'éditeur vba, place le curseur dessus et appuye sur F1.

Pour en revenir à ta question Jef, on peut donc récupérer le PID de la tâche mais seulement si elle a été lancée à partir d'une macro dans Excel. Les tâches lancées directement sous windows ne sont pas vues par Excel. Du moins c'est ce que je comprends.
Par exemple :
MonPID = Shell("C:\Windows\calc.exe", vbNormalFocus) t'ouvre la calculette et récupère son PID dans la variable MonPID. Par contre je ne sais pas si ce PID est le même que celui vu par Windows bien qu'il y ait des chances.

J'espère que cela te sera utile.
Bon après-midi.

José
 
Vieux 17/11/2004, 14h41   #5 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Salut a tous

Si on lance un programme avec le shell on obtient en effet un PID qui est le meme que celui de windows. ce n'est malheureusement pas ce que je cherche ...
snif...


merci quand meme a vous deux...

Jef
 
Vieux 17/11/2004, 14h49   #6 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Re tous,

Donc j'avais bien compris tu cherches le PID des tâches lancées sous windows et pas sous Excel. C'est ça ?

A+

José
 
Vieux 17/11/2004, 14h56   #7 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...


En effet, en fait je veux pouvoir envoyer des ordres a une application depuis excel et/ou word sachant qu'elle n'est pas ouverte ni par l'un ni par l'autre...


Jef
 
Vieux 17/11/2004, 15h31   #8 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Alors regarde du côté de AppActivate qui permet de "réactiver" une application (De lui donner le focus en tous cas) à l'aide de son nom. Par exemple : AppActivate "Microsoft Word"
Car je suppose que si tu veux envoyer des ordres (des SendKeys sans doute ?), tu sais à quelle application tu dois t'adresser. Autrement le PID de windows ne te dira pas de quelle appli il s'agit. Je me trompe ?

A+

José
 
Vieux 17/11/2004, 16h19   #9 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Le AppActivate "Nom" fonctionne bien, Malheureusement pour moi le nom de l'application change en fonction du fichier qu'elle ouvre...

A+
jef
 
Vieux 17/11/2004, 16h29   #10 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Ce n'est pas important Jef, regarde ce que dit l'aide :

L'instruction AppActivate rend active l'application ou la fenêtre nommée, mais ne l'agrandit ni ne la réduit. La fenêtre d'application cesse d'être active dès que l'utilisateur exécute une action qui entraîne la fermeture de la fenêtre ou l'activation d'une autre. Utilisez la fonction Shell pour démarrer une application et définir le style de la fenêtre.
Pour rechercher l'application à activer, les chaînes de titre de toutes les applications sont comparées avec celle de l'argument title. Si aucun titre ne correspond exactement à l'argument, une application dont le titre commence par la valeur de l'argument title est activée. Si plusieurs applications ont pour nom l'argument title, l'une d'entre elles est activée arbitrairement.


Donc si "Microsoft Word - Mon document" est ouvert, AppActivate "Microsoft Word" tout court trouvera Word. Evidemment, ne sachant pas ce que tu veux faire exactement, je ne peux pas t'aider plus. Tu peux avoir plusieurs Word ouverts avec plusieurs fichiers. Mais dans ce cas PID ou pas, je ne sais pas comment tu feras. Ou plutôt si, le PID te permettrait de les distinguer. C'est ça ton idée ?

A+

José
 
Vieux 17/11/2004, 16h45   #11 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

En fait je veux piloter winamp
dans le gestionnaire des taches il s'appele somplement winamp.exe
mais dans la barre des tache c'est "Numeros.Chanteur.titre - Winamp"

ne pouvant pas connaitre le titre a l'avance je suis coincé...
et AppActivate "Wimamp.exe" ne donne rien...

A+ jef
 
Vieux 17/11/2004, 17h00   #12 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Il me semblait bien avoir vu passer un fil parlant de winamp dernièrement et tu étais dessus je crois. Bon, ici j'ai pas winamp mais je tâcherai de regarder ça ce soir si je trouve une idée.

Mais question bête... Pourquoi ne lances-tu pas winamp à partir d'excel pour avoir son PID ?

A+

José
 
Vieux 17/11/2004, 17h11   #13 (permalink)
Jef
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

en effet j'avais repondu a un besoin de "piloter" winamp avec excel, mais depuis j'ai ammeliorer ma macro et duppliquer sous word, donc si je le lance depuis word, je ne peu plus le piloter avec excel... et vice versa

de plus pouvoir recuperer le PID d'une appli m'interresse pour un autre projet.

je te remerci quand meme du temps que tu as passé avec moi

A+
jef
 
Vieux 17/11/2004, 18h54   #14 (permalink)
jmps
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

Bonsoir Jef,

Je ne vois pas bien l'intérêt de piloter une appli (Winamp ou autre) à partir de plusieurs autres (Word + Excel). C'est source de confusion et de conflits entre applis. Mais bon, si tu y tiens, le client est roi après tout. Lol !

Qelques pistes auxquelles je pense, mais dont je ne maîtrise pas la technique :

* Utiliser les variables d'environnement du système (Environ et Environ$, regarde dans l'aide). Mais apparemment dans Excel c'est en lecture seule (A confirmer quand même).
* Utiliser un fichier texte commun qui contiendrait le n° de PID désiré indiqué par l'appli "lanceuse".
* Utiliser les API ? Là, il faudrait un spécialiste, ce que je ne suis pas.
* Peut-être d'autres idées...

En tous cas, bon courage et bonne soirée.

José
 
Vieux 17/11/2004, 20h04   #15 (permalink)
michel
Guest
 
Messages: n/a
Par défaut Re: Numeros de PID / Taches pour les pro...

bonsoir Jef , Abel et josé

la procédure ci-dessous boucle sur toutes les taches actives .
le ProcessID s'affiche à l'écran si une fenetre contient le mot "Winamp"

comme je n'ai pas Winamp d'installé , pour les essais j'ai créé un document "bidon" dont le nom contenait le mot Winamp
je ne peux pas faire de tests plus poussés , mais il est peut etre possible de recuperer directement le titre de la fenetre lors de sa creation , pour eviter de boucler sur toutes les taches actives
testé avec Excel2002 et WinXP



Private Declare Function GetWindow Lib "user32" _
(ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, lpdwProcessId As Long) As Long

Sub processID_FenetreSpecifique()
'adapté d'une procedure de Benoit Marchand
Dim CurrWnd As Long, Length As Long, ProcessId As Long
Dim TaskName As String
Dim Parent As Long, hwnd As Long, Valeur As Long

hwnd = FindWindow("Shell_traywnd", vbNullString)
CurrWnd = GetWindow(hwnd, 0)

While CurrWnd <> 0
Length = GetWindowTextLength(CurrWnd)
TaskName = Space$(Length + 1)
Length = GetWindowText(CurrWnd, TaskName, Length + 1)
TaskName = Left$(TaskName, Len(TaskName) - 1)

'verifie si la fenetre testée contient le mot winamp
If InStr(1, TaskName, "Winamp", vbTextCompare) > 0 Then

Valeur = GetWindowThreadProcessId(CurrWnd, ProcessId)
MsgBox "le PID de la fenetre " & TaskName & " est : " & Valeur
Exit Sub

End If

CurrWnd = GetWindow(CurrWnd, 2)
DoEvents

Wend
MsgBox "fenetre non trouvée . "
End Sub


bonne soirée
MichelXld
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 17h55.


(C) 2006 Excel Downloads