pc152
Messages postés38Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 9 octobre 2008
-
14 juil. 2007 à 12:40
cs_didine13
Messages postés96Date d'inscriptionmardi 18 août 2009StatutMembreDernière intervention14 août 2013
-
23 août 2010 à 22:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_didine13
Messages postés96Date d'inscriptionmardi 18 août 2009StatutMembreDernière intervention14 août 2013 23 août 2010 à 22:33
Pas encore en 2005 mais très très bien
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 22 juil. 2010 à 17:25
Bonjour,
Déjà très belle source MERCI :) simple et efficace. Par contre en l'état si on execute la commande cmd et non notepad (ou si le système est très occupé sa ne fonctionne plus (et ajouter un sleep dans tout cas est dommage, surtout qu'on ne sait pas à l'avance combien de temps vas prendre le système a affiché cette fenêtre :/). J'ai trouvé comme solution de tester sa et d'attendre 100 ms entre chaque test (et donc éviter de surcharger inutilement le système, en prime il n'est plus utile d'utilisé la commande shell :)). Enfin berf voila la mise à jour que je propose :
Private Sub bnlancer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnlancer.Click
procap.StartInfo.WindowStyle = ProcessWindowStyle.Normal
procap.StartInfo.FileName = "notepad.exe"
'procap.StartInfo.FileName = "cmd"
procap.Start()
hInst = procap.Id
While procap.MainWindowHandle = 0
System.Threading.Thread.CurrentThread.Sleep(100)
Try
procap = Process.GetProcessById(hInst) 'Retourne un nouveau composant Process, en fonction de l'identificateur de notepad
Catch ex As Exception
'Le programme exécuter est déjà terminé
Exit Sub
End Try
End While
hWndApp = procap.MainWindowHandle 'récup de l'handle
nomproc = procap.MainWindowTitle 'récup du titre -- inutile--
bncap.Enabled = True
bnlancer.Enabled = False
End Sub
cs_xav2303
Messages postés5Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention21 octobre 2009 21 oct. 2009 à 21:33
perso j'ai rajouter comme proposé ci dessus des System.Threading.Thread.Sleep a quelque endroit et ca marche impec' ;)
j'ai modifier à cet endroit :
Private Sub bnlancer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnlancer.Click
'lignes de code prévues au départ mais l'Id obtenue est fausse
'*************************************************************
'procap.StartInfo.WindowStyle = ProcessWindowStyle.Normal
'procap.StartInfo.FileName = "notepad.exe"
'procap.Start()
'hInst = procap.Id
'en faisant comme ça , c'est peut-être pas très ..... mais ça marche
hInst = Shell("C:\Program Files\OS Info 1.0 Bêta\OS Info.exe", AppWinStyle.NormalFocus) 'lance notepad et récup de l'Id
System.Threading.Thread.Sleep(300)
procap = Process.GetProcessById(hInst) 'Retourne un nouveau composant Process, en fonction de l'identificateur de notepad
System.Threading.Thread.Sleep(200)
hWndApp = procap.MainWindowHandle 'récup de l'handle
nomproc = procap.MainWindowTitle 'récup du titre -- inutile--
bncap.Enabled = True
bnlancer.Enabled = False
End Sub
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 18 juil. 2007 à 11:13
Malheureusement ca ne marhce pas non plus... Si quelqu'un à une idée qu'il n'hesite pas :)
cs_spoty
Messages postés17Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention11 septembre 2008 18 juil. 2007 à 03:41
Bonsoir fdiedler2000
Si tu ne l'as pas déjà fait , essaie avec process.start, en mettant System.Threading.Thread.sleep(100) ou même (200) avant de récupérer la valeur de Handle. Ca permet parfois de récupérer la bonne valeur au lieu de Zéro.Je debut en VB2005, je n'ai pas encore assez de connaissance pour approfondir le problème.J'espère qu'une âme charitable aura la gentillesse de nous éclairer de ses lumières.
A+
Spoty
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 17 juil. 2007 à 13:45
Désolé j'ai pas fini ma phrase :
Je disais avec Filezilla, Dreameweaver ou autre ca ne marche plus, Le handle vaut 0 ...
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 17 juil. 2007 à 13:44
Salut, j'ai deja créé un programme qui fait la meme chose et j'ai testé ta source et je rencontre le meme probleme :
Ca ne marche qu'avec des process de Windows (Notepad, aide,...) avec d'autre programmes genre FileZilla, Dreamweaver...
Mais le plus bizarre ca marche très bien avec Excel et Word mais pas avec Outlook !
Avez vous une idée ?
cs_spoty
Messages postés17Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention11 septembre 2008 16 juil. 2007 à 16:57
Bonjour Dnx
Personellement, j'ai un problème avec le retour de valeur de Handle et Id avec Process c'est pour celà que j'ai contourné le bugg avec shell.
Je viens de tester un autre contournement qui a l'air de marcher:
mettre un System.Threading.Thread.sleep(100) ou même 200 avant de récupérer l'Handle ou l'Id.
Sinon je n'ai pas fait de test réseau c'est hors de mes connaîssances actuelles.
Si tu peux m'envoyer ton code modifié en MP,j'y jetterai un oeil histoire de m'instruire.
Je pense pouvoir faire bientot une mise à joue de la source avec fonction "Ecrire dans l'application"(par code).
A+
cs_Dnx
Messages postés16Date d'inscriptionjeudi 9 octobre 2003StatutMembreDernière intervention16 juillet 2007 16 juil. 2007 à 09:44
Hello, sympa la source :)
mais je n'arrive pas a démarrer une application sur le réseau...
avec le shell, il ma lance une erreur "fileNotFoundException"
par contre en utilisant le Process.start, la pas d'erreur mais le SetParent ne marche plus :(
une idée?
merci ;)
TigerFab
Messages postés115Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention18 mai 2008 15 juil. 2007 à 12:25
Belle source, simple et efficace
bravo
cs_spoty
Messages postés17Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention11 septembre 2008 14 juil. 2007 à 23:31
bonsoir PC152
Je n' ai pas excel, donc je ne peux pas faire de test. Je connais très peu VB2005 et les languages de moins de 10 ans et même plutôt 15.
(Je pianote en VB2005 depuis seulement 5 jours).
Pour écrire dans notepad avec le clavier pas de problème, mais impossible d'écrire en passant par le code !!!(je ne connais pas la solution).
Il y a apparemment un problème de handle mais je n'en suis pas sure du tout.
J'ai remarqué que une fois le programme capturé il apparaissait nulle part en child dans la form ou dans la textbox. C'est surement l'origine de ton problème.
J'espère qu'un esprit éclairé pourra nous aider à résoudre cette énigme.
Désolé de ne pouvoir d'aider .
A+
pc152
Messages postés38Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 9 octobre 2008 14 juil. 2007 à 12:40
Source très bien, petit note j'ai mit excel au lieu du bloc note, cela fonctionne en partie mais je ne peux pas saisir dans les cellule ni me servire des scroll bar, si tu peu voir d'ou cela provient ;)
23 août 2010 à 22:33
22 juil. 2010 à 17:25
Déjà très belle source MERCI :) simple et efficace. Par contre en l'état si on execute la commande cmd et non notepad (ou si le système est très occupé sa ne fonctionne plus (et ajouter un sleep dans tout cas est dommage, surtout qu'on ne sait pas à l'avance combien de temps vas prendre le système a affiché cette fenêtre :/). J'ai trouvé comme solution de tester sa et d'attendre 100 ms entre chaque test (et donc éviter de surcharger inutilement le système, en prime il n'est plus utile d'utilisé la commande shell :)). Enfin berf voila la mise à jour que je propose :
Private Sub bnlancer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnlancer.Click
procap.StartInfo.WindowStyle = ProcessWindowStyle.Normal
procap.StartInfo.FileName = "notepad.exe"
'procap.StartInfo.FileName = "cmd"
procap.Start()
hInst = procap.Id
While procap.MainWindowHandle = 0
System.Threading.Thread.CurrentThread.Sleep(100)
Try
procap = Process.GetProcessById(hInst) 'Retourne un nouveau composant Process, en fonction de l'identificateur de notepad
Catch ex As Exception
'Le programme exécuter est déjà terminé
Exit Sub
End Try
End While
hWndApp = procap.MainWindowHandle 'récup de l'handle
nomproc = procap.MainWindowTitle 'récup du titre -- inutile--
bncap.Enabled = True
bnlancer.Enabled = False
End Sub
21 oct. 2009 à 21:33
j'ai modifier à cet endroit :
Private Sub bnlancer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnlancer.Click
'lignes de code prévues au départ mais l'Id obtenue est fausse
'*************************************************************
'procap.StartInfo.WindowStyle = ProcessWindowStyle.Normal
'procap.StartInfo.FileName = "notepad.exe"
'procap.Start()
'hInst = procap.Id
'en faisant comme ça , c'est peut-être pas très ..... mais ça marche
hInst = Shell("C:\Program Files\OS Info 1.0 Bêta\OS Info.exe", AppWinStyle.NormalFocus) 'lance notepad et récup de l'Id
System.Threading.Thread.Sleep(300)
procap = Process.GetProcessById(hInst) 'Retourne un nouveau composant Process, en fonction de l'identificateur de notepad
System.Threading.Thread.Sleep(200)
hWndApp = procap.MainWindowHandle 'récup de l'handle
nomproc = procap.MainWindowTitle 'récup du titre -- inutile--
bncap.Enabled = True
bnlancer.Enabled = False
End Sub
voilà !
Lvxie
La facilité et la légerté
http://www.lvxie.eg2.fr/
lvxie@hotmail.fr
18 juil. 2007 à 11:13
18 juil. 2007 à 03:41
Si tu ne l'as pas déjà fait , essaie avec process.start, en mettant System.Threading.Thread.sleep(100) ou même (200) avant de récupérer la valeur de Handle. Ca permet parfois de récupérer la bonne valeur au lieu de Zéro.Je debut en VB2005, je n'ai pas encore assez de connaissance pour approfondir le problème.J'espère qu'une âme charitable aura la gentillesse de nous éclairer de ses lumières.
A+
Spoty
17 juil. 2007 à 13:45
Je disais avec Filezilla, Dreameweaver ou autre ca ne marche plus, Le handle vaut 0 ...
17 juil. 2007 à 13:44
Ca ne marche qu'avec des process de Windows (Notepad, aide,...) avec d'autre programmes genre FileZilla, Dreamweaver...
Mais le plus bizarre ca marche très bien avec Excel et Word mais pas avec Outlook !
Avez vous une idée ?
16 juil. 2007 à 16:57
Personellement, j'ai un problème avec le retour de valeur de Handle et Id avec Process c'est pour celà que j'ai contourné le bugg avec shell.
Je viens de tester un autre contournement qui a l'air de marcher:
mettre un System.Threading.Thread.sleep(100) ou même 200 avant de récupérer l'Handle ou l'Id.
Sinon je n'ai pas fait de test réseau c'est hors de mes connaîssances actuelles.
Si tu peux m'envoyer ton code modifié en MP,j'y jetterai un oeil histoire de m'instruire.
Je pense pouvoir faire bientot une mise à joue de la source avec fonction "Ecrire dans l'application"(par code).
A+
16 juil. 2007 à 09:44
mais je n'arrive pas a démarrer une application sur le réseau...
avec le shell, il ma lance une erreur "fileNotFoundException"
par contre en utilisant le Process.start, la pas d'erreur mais le SetParent ne marche plus :(
une idée?
merci ;)
15 juil. 2007 à 12:25
bravo
14 juil. 2007 à 23:31
Je n' ai pas excel, donc je ne peux pas faire de test. Je connais très peu VB2005 et les languages de moins de 10 ans et même plutôt 15.
(Je pianote en VB2005 depuis seulement 5 jours).
Pour écrire dans notepad avec le clavier pas de problème, mais impossible d'écrire en passant par le code !!!(je ne connais pas la solution).
Il y a apparemment un problème de handle mais je n'en suis pas sure du tout.
J'ai remarqué que une fois le programme capturé il apparaissait nulle part en child dans la form ou dans la textbox. C'est surement l'origine de ton problème.
J'espère qu'un esprit éclairé pourra nous aider à résoudre cette énigme.
Désolé de ne pouvoir d'aider .
A+
14 juil. 2007 à 12:40