Bonjour,

J'aimerais créer un programme avec une interface "moderne".
C'est à dire :

Sur la gauche de la fenêtre un groupbox contenant des boutons et au milieu quelque chose qui permet d'afficher un exécutable.
L'idée, c'est que chaque bouton contenu dans le groupbox est un "module", un exécutable externe, pour éviter les compilations super longues....

Le clic sur le bouton fait appel à l’exécutable dans la partie centrale de l'interface.

J'ai essayé avec un tabcontrol car j'aime bien l'idée de créer chaque fois un onglet qui contient l'exe en cours.... mais sans succès.

J'ai cherché pendant 2 jours sur le net, j'en suis à ceci :

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
Imports System.Diagnostics.Process
Imports System.Runtime.InteropServices
 
Public Class Accueil
    Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
    Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Private Const WM_SYSCOMMAND As Integer = 274
    Private Const SC_MAXIMIZE As Integer = 61488
    Private proc As Process = New Process()
 
    Private Sub QuitterToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles QuitterToolStripMenuItem.Click
        End
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        proc = Process.Start("chemin du programme à exécuter")
        proc.WaitForInputIdle()
        SetParent(proc.MainWindowHandle, TabControl1.Handle)
        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    End Sub
End Class
Ca fonctionne +/- donc je suppose que j'y suis presque.
Si je prends notepad par exemple, ça marche... même si ça ne s'ouvre pas dans un onglet.
Un autre exé s'ouvre mais toujours en pop-up comme une nouvelle appli.

Quelqu'un a-t-il une solution?
Ou bien ce genre d'interface n'est pas possible avec visual studio/ VB.net ?