IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Executable dans un cadre


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2011
    Messages : 56
    Par défaut Executable dans un cadre
    Bonjour,
    Il y avait longtemps, j'avait vu une source qui permettait d'afficher un executable dans un un cadre (je pense que c'est un panel). Depuis que j'ai formaté mon disque dur, je n'ai plus le lien. J'ai effectué de nombreuses recherches mais rien ne correspond a ce que je veut. Connaissez-vous une source similaire SVP ? Merci d'avance et bonne soirée.

  2. #2
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    euh ....

    tu peut préciser ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2011
    Messages : 56
    Par défaut Détails
    Pas de problèmes
    J'aimerais savoir comment on affiche le contenu d'un exe externe compilé à l'interieur d'un cadre dans mon programme en vb.net .
    Voici un montage photo que j'ai fait:



    J'éspère que c'est plus clair

    Bonne soirée

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est assez simple en fait... il faut récupérer le handle de la fenêtre de l'application, et définir le contrôle "hote" comme parent de cette fenêtre, à l'aide de l'API SetParent

    Petit exemple vite fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Public Class AppHostForm
    	Inherits Form
    	Private _hostPanel As Panel
     
    	Public Sub New()
    		_hostPanel = New Panel()
    		_hostPanel.Size = New Size(ClientSize.Width - 50, ClientSize.Height - 50)
    		_hostPanel.Location = New Point(25, 25)
    		_hostPanel.BackColor = Color.Black
    		_hostPanel.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right Or AnchorStyles.Left Or AnchorStyles.Top
    		Me.Controls.Add(_hostPanel)
     
    		Dim btn As New Button()
    		btn.Text = "Run app"
    		AddHandler btn.Click, AddressOf btn_Click
    		Me.Controls.Add(btn)
    	End Sub
     
    	Private Sub btn_Click(sender As Object, e As EventArgs)
    		Dim dialog = New OpenFileDialog()
    		dialog.Filter = "Exécutable|*.exe"
    		If dialog.ShowDialog() = DialogResult.OK Then
    			Dim proc = Process.Start(dialog.FileName)
    			proc.WaitForInputIdle()
    			If proc.MainWindowHandle <> IntPtr.Zero Then
    				SetParent(proc.MainWindowHandle, _hostPanel.Handle)
    			End If
    		End If
    	End Sub
    	<DllImport("user32")> _
    	Private Shared Function SetParent(child As IntPtr, newParent As IntPtr) As IntPtr
    	End Function
    End Class

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2011
    Messages : 56
    Par défaut
    Merci mais il me lance le programme selectionné par l'openfiledialog normalement

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Dev222 Voir le message
    Merci mais il me lance le programme selectionné par l'openfiledialog normalement
    Je comprends pas ce que tu veux dire... Oui, il lance le programme sélectionné dans le dialog. Ce n'est pas ce que tu veux ?

    EDIT: ah ok, j'ai compris... j'avais testé avec notepad et ça marchait, mais je viens de retester avec la calculatrice et ça ne marche plus... je vais voir ce qu'on peut y faire

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, je pensais que WaitForInputIdle attendrait jusqu'à ce que la fenêtre soit affichée, mais apparemment ce n'est pas le cas...

    Rajoute ça après proc.WaitForInputIdle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Dim count As Integer = 0
                While count < 10 AndAlso proc.MainWindowHandle = IntPtr.Zero
                    count = count + 1
                    Thread.Sleep(200)
                    proc.WaitForInputIdle()
                End While
    Ca permet d'attendre un peu que la fenêtre ait apparu... tu peux augmenter le nombre d'essais si besoin

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2011
    Messages : 56
    Par défaut OK
    Merci beaucoup, je test !

    EDIT: C'est bien mais ce n'est pas trop ce que je voulait (je suis difficile ^^)
    Je voudrais qu'il n'y ai pas les bordures et boutons fermer, réduire et agrandir et que l'application soit affichée dans tout le cadre
    Est-ce possible ?

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour l'agrandir, tu peux utiliser l'API ShowWindow avec le flag SW_MAXIMIZE
    Pour supprimer les bordures, il faut utiliser l'API SetWindowLong, avec GWL_STYLE comme id. Je ne sais pas exactement quelles valeurs il faut passer, regarde les différents styles possibles ici

    Pour savoir comment déclarer ces fonctions en VB.NET, regarde sur ce site

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2011
    Messages : 56
    Par défaut
    Encore merci et bonne journée ! Je pense que le sujet est résolu une fois pour toutes !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Utilisation de XML avec PHP dans le cadre d'un site
    Par nicolas66 dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 06/11/2005, 22h39
  2. [Applet] probleme d'execution dans le navigateur
    Par adilou1981 dans le forum Applets
    Réponses: 5
    Dernier message: 02/07/2005, 15h02
  3. un executable dans le fichier ressource
    Par joebilou dans le forum Windows
    Réponses: 4
    Dernier message: 28/06/2005, 11h18
  4. Comment écrire sur une image, dans un cadre ?
    Par Nutrino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/05/2005, 00h55
  5. [JNI] execution dans un JAR
    Par bibx dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 10/12/2004, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo