Ouvrir une appli en .exe dans une form en vb2005

Soyez le premier à donner votre avis sur cette source.

Vue 10 316 fois - Téléchargée 1 104 fois

Description

Adamo901 a demandé "Si c'est possible, proposer un code en VB2005".
Je l'ai fait avec des petits plus.
En résumé: ouvrir un exe(notepad pour l'exemple),le mettre dans la fenêtre, le redimentionner et repositionner, suprimer la barre de titre, le mettre dans un textbox et le fermer pour pouvoir recommencer.

Conclusion :


Je suis novice en VB2005, je ne sais pas si mon code est très ... .mais pour moi ça marche bien et sans bug.
Merci par avance, pour vos avis et commentaires.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
96
Date d'inscription
mardi 18 août 2009
Statut
Membre
Dernière intervention
14 août 2013

Pas encore en 2005 mais très très bien
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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
Messages postés
5
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
21 octobre 2009

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


voilà !



Lvxie
La facilité et la légerté
http://www.lvxie.eg2.fr/
lvxie@hotmail.fr
Messages postés
383
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
1 décembre 2008

Malheureusement ca ne marhce pas non plus... Si quelqu'un à une idée qu'il n'hesite pas :)
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

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
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.