Lancer une application en tant que mdichild d'une application déjà ouverte
tcourbet
Messages postés9Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention10 février 2010
-
10 févr. 2010 à 12:56
tcourbet
Messages postés9Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention10 février 2010
-
11 févr. 2010 à 15:16
Bonjour,
Je souhaiterais pouvoir créer une application qui se lance en tant que mdichild d'une application déjà lancée dont je sais qu'elle est une mdiparent et dont je connais le titre de la fenêtre.
J'essaie de récupérer le handle de la fenêtre du parent et de le définir en tant que mdiparent de mon formulaire enfant
Je m'oriente vers la solution Lib "user32" avec les fonctions setparent, getwindow, ... mais je n'y arrive pas.
Je développe sous visual studio 2008 en vb.net
Si quelqu'un a déjà fait ça...
A voir également:
Lancer une application en tant que mdichild d'une application déjà ouverte
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 févr. 2010 à 14:03
Bonjour,
Et quel code as-tu écrit ? (déclarations incluses)
Si tu as les deux handles, je ne vois pas où est la difficulté, en ce qui concerne l'utilisation de la fonction SetParent ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
tcourbet
Messages postés9Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention10 février 2010 10 févr. 2010 à 15:11
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub New()
InitializeComponent()
Dim nom_fenetre As String = "<le titre de la fenêtre parente>"
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 févr. 2010 à 16:49
Déjà,
Les Long en VB.Net, doivent s'exprimer en Integer ....
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 févr. 2010 à 21:59
1) il est absolument normal qu'entre deux utilisation/ouverture , le handle de ta fenêtre ne soit pas le même ! Ce handle est attribué par Windows à l'ouverture d'une fenêtre et ne reste le même qu'en tant que la fenêtre reste ouverte ! Un hautre handle lui est attribué à l'ouverture suivante ...
2) je ne comprends pas ce qui te conduit à utiliser ainsi (à l'envers) la fonction SetParent, dont le premier paramètre (celui de la fenêtre accueillie) est généralement celui de l'application en cours (celle qui utilise le code que tu as écrit) et le second celui de la fenêtre d'accueil (où tu n'as par définition rien écrit comme code). (Or, tu sembles vouloir faire l'inverse)...
Quelle peut bien être la finalité d'une telle tentative ?
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
tcourbet
Messages postés9Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention10 février 2010 11 févr. 2010 à 11:39
La valeur change à chaque test sans fermeture de la fenêtre. je mets mon programme en pause et je teste dans le debugger
Pourquoi faire l'inverse ? Parce que je veux intégrer mon application dans une application existante pour la rendre transparente pour l'utilisateur.
En l'occurence, c'est une application SAGE de Gestion commerciale. L'application permet de lancer des programmes externes et je voudrait que ces programmes se lancent dans le logiciel SAGE. Je l'ai vu tourner donc je sais que c'est possible mais je n'ai pas pu demander comment c'était fait. Je sais juste que c'est en récupérant le handle de la fenêtre SAGE et en l'utilisant en tant que parent. Je suppose qu'on doit pouvoir le faire dans des applis telles que Word ou Excel aussi.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 11 févr. 2010 à 13:16
Et moi, je suppose que le code était mis dans l'application d'accueil et non dans celle dont la fenêtre doit s'insérer dans celle de l'application d'accueil ...
Mais je me trompe peut-être ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
tcourbet
Messages postés9Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention10 février 2010 11 févr. 2010 à 15:16
Non c'est sûr et certain que ce n'est pas dans l'application d'accueil. Celui qui a fait ça est un développeur de chez SAGE mais il n'a pas touché à l'application d'accueil (Appli standard vendu à des milliers d'exemplaires). Il m'a dit que c'était avec le handle de la fenêtre. Je vais encore chercher sinon j'essaierai de le recontacter pour savoir s'il peut m'aiguiller.