Ouvrir un exe dans un MDIParent [Résolu]

Signaler
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
-
Salut

est il possible d'ouvrir une appli en .exe dans mon MDIForm.vb ???

j'ai ecrie ça mais s'est pas bon.

Dim FormServ
As
New Shell(
"C:\Program Files\FileZilla\FileZilla.exe")FormServ.MdiParent =

MeFormServ.Show()

Avez vous une solution.

MANUANTIBES [:p]

10 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
j'aime pas voir ce genre de code, où les chemins sont en dur :s

Tu semble confondre Form et Application.

en programmation non .Net, il te faudrait retrouver le hWnd de la fenetre de FilleZilla, et utiliser l'API SetParent, pour 'souder' FileZilla dans ton application...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Merci Renfield pour la rapiditée de ta reponse

Mais c'est quoi le hWnd ?
Dans le dossier Program Files\FileZilla , il n'y a pas grand chose des exe et des dll.

Je sens que je vais laissé FileZilla s'ouvrir a coté.

Pour ma ligne de code avec le chemin en dur.
Je dois le mettre dans MYProject  , mais plus dans Paramètres ou Ressources ?

Que vaut il mieux ??

MANUANTIBES [:p]
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
en fait je crois que je n'ai pas le choix car coté code je ne vois pas Paramètres dans My...
J'ai du prendre Ressources.
Shell(My.Resources.Open_FileZilla)

Open_FileZilla   
est le nom de ma ressource et en valeur j'ai mis C:\Program Files\FileZilla\FileZilla.exe"

A+

MANUANTIBES [:p]
Messages postés
139
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
8 décembre 2008

Voilà, je viens de trouver une solution pour toi avec :

Dans un module :

Public Const GW_HWNDNEXT = 2
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, _
                        ByVal hWndNewParent As Long) As Long
Public Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, _
  ByVal wCmd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" _
  (ByVal hWnd As Long, lpdwprocessid As Long) As Long
Function ProcIDFromWnd(ByVal hWnd As Long) As Long
   Dim idProc As Long
   GetWindowThreadProcessId hWnd, idProc
   ProcIDFromWnd = idProc
End Function
Function GetWinHandle(hInstance As Long) As Long
   Dim tempHwnd As Long
   tempHwnd = FindWindow(vbNullString, vbNullString)
   Do Until tempHwnd = 0
      If GetParent(tempHwnd) = 0 Then
         If hInstance = ProcIDFromWnd(tempHwnd) Then
            GetWinHandle = tempHwnd
            Exit Do
         End If
      End If
      tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT)
   Loop
End Function

Dans ta fenêtre mère :

Private Sub MDIForm_Load()
    Dim hInst As Long, hWndApp As Long
    hInst = Shell("notepad.exe")
    hWndApp = GetWinHandle(hInst)
    SetParent hWndApp, Me.hWnd
End Sub

Bon courage et bonne chance
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Bonjour.
j'ai pris ta solution adamo901 parce que moi aussi j'aimerai faire comme manuantibes.
mais vb me fait une erreur sur cette ligne à cause de Me.hWnd
SetParent(hWndApp,

Me.hWnd)

l'erreur est celle-ci

'hWnd' is not a member of 'WindowsApplication1.MDIparent'. 

D'ou peut venir l'erreur ? il faut ajouter une référence ?

Drikce 06
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
c'est du code VB6, faut adapter ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Ha d'accord mais c'est bizzard parce qu'il y a que la dessus qu'il me met une erreur alors que d'habitude c'est pratiquement partout quand je récupère du vb6.
Je vais essayer de voir. merci.

 Drikce 06
Messages postés
139
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
8 décembre 2008

Ben j'ai pas remarqué que c'est du .NET.
Le code que j'ai founit est en VB6 et il fonctionne très bien.
J'ai pas vb2005 pour le moment mais si tu arrive à adapter ce code avec le Dot NET (Comme le suggère Renfield)  je pense qu'il fonctionnera bien.

Bonne chance!
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Sault Drikce06

As tu reussi, à integrer le code de Adamo dans ton appli .NET ?

Moi je n'ai pas reussi , j'ai refais son code dans une ancienne appli en vb6 ca marche super, mais pas ne .NET ou VB2005 express.

A+

MANUANTIBES [:p]
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Salut manuantibes !
Non je n'ai pas réussi. J'essaie de voir comment faire mais je galere énormément.
Alors pour l'instant j'ai laissé tomber. Je te tiens au courant si jamais j'y arrive.

 Drikce 06