l0st3d
Messages postés205Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention13 novembre 2009
-
10 mai 2004 à 08:38
cyrilpradel
Messages postés12Date d'inscriptionmercredi 19 juin 2002StatutMembreDernière intervention12 décembre 2005
-
12 déc. 2005 à 09:41
Bonjour a tous, j'aimerais savoir comment je peut avoir le hwnd d'une application dès son lancement.
anael_vodis
Messages postés4Date d'inscriptionsamedi 29 mai 2004StatutMembreDernière intervention 6 février 2005 21 déc. 2004 à 17:50
Bonjour l0st3d !
Je viens juste de voir que tu avais unbe question concernant la récupération du no de "handle" d'une application appelée par la commande "shell"
En fait shell peut être exécuté directement par exemple:
Private Sub test()
Shell("notepad.exe", vbHide)
End Sub
Mais si tu veux "récupérer" le no de "handle" alors il faut le faire de la façon suivante:
Private Sub test()
Dim HNWD As Double
HNWD = Shell("notepad.exe", vbHide)
MsgBox "Le no de handle est : " & HNWD
End Sub
Espérant que cela te sois utile !
A+
Anael
Celui qui sait peu parle beaucoup... Celui qui sait parle peu... Zeta
anael_vodis
Messages postés4Date d'inscriptionsamedi 29 mai 2004StatutMembreDernière intervention 6 février 2005 23 déc. 2004 à 04:40
crenaud76,
je crois que tu aurais besoin d'un cours de politesse... Tu ne respecte pas "l'étiquette" qui devrait être de mise sur tout forum... Il aurait été plus sage de donner l'info à l0st3d en le renseignant que c'est le Process ID qu'il recherchait en non pas le numéro de handle de Windows... Le but d'un forum est de s'entraider afin de favoriser le développement de chacn de ses membres et non pas de "rire" des autres en se plaçant sur un piédestal de "je sais tout" sans donner aucune piste ni explication pertinente. Alors, mon conseil est celui-ci: si ça ne te dit pas de donner de réponse valable à une question d'un membre d'un forum alors abstiens-toi de ne donner que des remarques désobligeante... À bon entendeur...
Oui tu as raison... l'exemple que je donnais ne va retourner que le Process ID mais je crois que c'est la réponse que l0std3 voulait avoir. Par sa question j'ai bien vu qu'il recherchait à récupérer le Process ID...
Pour récupérer donc le Process ID à partir d'une fonction Shell:
Private Sub test()
Dim NoPID As Double
NoPID = Shell("notepad.exe", vbHide)
MsgBox "Le no de handle est : " & NoPID
End Sub
Pour récupérer le no de handle d'une fenêtre active (on peut rendre active la fenêtre d'une application à partir de son process ID) il faut utiliser la fonction GetActiveWindows de l'API (user32.dll):
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Sub Test()
Dim HandleNo As Long
HandleNo = GetActiveWindows()
MsgBox "Le no du Handle est: " & HandleNo
End Sub
Généralement celui qui parle beaucoup sait bien peu de choses... Celui qui par sagesse parle peu sait beaucoup de choses...Zeta
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 23 déc. 2004 à 09:09
l0st3d n'a pas non plus respecté l'étiquette et les bonnes manières de ce forum dans sa réponse à Econs !!
Je respecrte les gens respectables, et la réponse de l0st3d ne me donne pas envie de le respecter !
Ce qui m'a coquer dans ta réponse à l0st3d, c'est que tu as nommé ta variable HNWD, et non pas PID, voila tout. Maintenant le bon code tu le lui as donné, alors inutile pour moi de le lui redonner !!
Pour ce qui et de donner des réponses valable aux questions posé sur ce forum, je pense, sans me vanter, que c'est toujorus ce que je fait. Simplement, l0st3d m'a énervé dans sa facon de répondre à Econs, dont la proposition était tout à fait valable, au vue de la façon dont est libellé la question à l'origine. S'il avait simplement répondu, "Non ! Ce n'est pas ce que je recherche, ..." Je lui aurait volontier donner la bonne réponse, et Econs aussi sans doute. Econs est sans doute plus sage que moi, en cela qu'il n'a pas surenchérit sur l'affaire, mais moi, je n'ai pas pu m'en empêcher ! Peut-être étais-je particulièrement ronchon ce jour la, va savoir !
Et si je suis tout a fait d'accord avec la dernière maxime de ton post, en voici une pour l0st3d
"Savoir qu'on ne sait rien, c'est déjà savoir quelque chose" ... mais encore faut-il l'admettre !!
anael_vodis
Messages postés4Date d'inscriptionsamedi 29 mai 2004StatutMembreDernière intervention 6 février 2005 24 déc. 2004 à 03:19
Hello crenaud76,
Excuses-moi pour ma remarque qui, il est vrai, ne tenai pas du réel contexte. Il est vrai que l0st3d avait été impoli au départ... C'est dommage pour lui car c'est la meilleure façon de se fermer des portes et je suis en accord avec toi sur le commentaire final de ton dernier "posting"
En passant j'ai consulté tes travaux sur vbfrance: excellent !!! et très professionnel !!!
Encore une fois : excuses-moi !!!
Généralement celui qui parle beaucoup sait bien peu de choses... Celui qui par sagesse parle peu sait beaucoup de choses...Zeta
cyrilpradel
Messages postés12Date d'inscriptionmercredi 19 juin 2002StatutMembreDernière intervention12 décembre 2005 9 déc. 2005 à 16:55
Salut tout le monde !
Je remonte ce topic car j'ai une question à vous poser qui est très proche de celle de
l0st3d.
Via la fonction Shell, je lance une application (la fonction Shell me retourne le process Id de l'appli lancée mais pas le handle)
Avant, je m'appuyais sur la classe de fenêtre pour la retrouver :
'on lance l'appli
hApp = Shell(<monExe> + " " + , <mode d'ouverture>)
hFen = 0
'Recherche du handle de la fenêtre (hFen) selon sa classe (zClassFen) jusqu'à la fin du timer ou jusqu'à ce qu'on trouve
Do While hFen = 0 And (Timer < lTimer)
DoEvents
hFen = GetWinHandle(zClassFen)
Loop
PS : Je ne détaille pas la fonction GetWinHandle mais j'utilisais les API GetWindow et GetClasseName
Cela fonctionnait très bien à partir du moment où on connaissait la classe de fenêtre.
Aujourd'hui, je cherche à récupérer le handle d'une appli selon son process Id.
On aurait donc :
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 9 déc. 2005 à 17:05
Je te conseillerais de refaire un nouveau thread dans le forum, car celui-ci est un peu vieux !!
De plus seul Econs, IOst3d, anael_vodis et moi-même sommes au courant que tu viens de poster ce message