Ouvrir un exe dans un MDIParent

Résolu
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 - 29 juin 2006 à 10:41
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 - 30 juin 2006 à 10:05
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 juin 2006 à 11:00
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
3
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
29 juin 2006 à 11:12
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]
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
29 juin 2006 à 11:24
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]
0
adamo901 Messages postés 139 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 8 décembre 2008
29 juin 2006 à 13:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
29 juin 2006 à 14:31
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 juin 2006 à 14:48
c'est du code VB6, faut adapter ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
29 juin 2006 à 14:56
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
0
adamo901 Messages postés 139 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 8 décembre 2008
29 juin 2006 à 15:00
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!
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
30 juin 2006 à 10:02
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]
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 juin 2006 à 10:05
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
0
Rejoignez-nous