Bonjour,
Je cherche à intégrer une application externe dans un winform en c# avec Visual Studio 2010. Je veux créer un bouton à partir duquel on peut lancer putty ou autres applications. Je souhaite l’intégrer dans une ma winforms
Merci d'avance
Bonjour,
Je cherche à intégrer une application externe dans un winform en c# avec Visual Studio 2010. Je veux créer un bouton à partir duquel on peut lancer putty ou autres applications. Je souhaite l’intégrer dans une ma winforms
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.Diagnostics.Process.Start("putty.exe");
Merci, déja fait,
mais comment je peux intégrer l'application lancée dans ma winforms?
oui,
avec un splitContainer, car j'ai réussi à afficher d'autres winforms dans le panel 2 du splitContainer
Merci
Bonjour,
SVP comment je peux intégrer mon application externe dans un panel de ma winforms??![]()
En utilisant l'Api SetParent
Ici
Voilà
ça n'a pas marché, l'exe s'affiche toujours en dehors de la form
je l'ai essayé depuis hier
y a t'il une propriété à modifier ou autre chose à faire???
Merci pour l'aide
Bonjour,
J'ai téléchargé une application d'ici qui doit normalement marché mais dommage j'ai eu le même problème: deux fenêtres séparées (ma form et la page d'IE)
Vraiment je comprend pas pourquoi? Est ce qu'il y a une propriété à modifier ou quoi?
Merci d'avance
bonjour
effectivement quand on met iexplore.exe,il ouvre iexplore mais dans une fenetre independante.
par contre si je mets notepad.exe ou wordpad.exe il s'ouvre bien dans le control fourni.
donc un bug quelque part ....pour iexplore malgre que l'auteur le donne comme exemple.
bon code....
Bonjour,
Et si je veux intégrer ma propre application développée en MFC(MDI) dans ma Form, alors je peux pas le faire??
Merci
salut, je ne connais plus les noms de fonctions par coeur, mais tu peux lancer un process sans afficher la fenêtre du shell. ensuite tu peux rediriger la sortie (texte) vers non pas le shell mais vers une memorystream (ou autre) que tu peux afficher dans un textbox (par exemple) (la fonction s'appelle Console.SetOut() il me semble).
maintenant je ne sais pas si le texte de Putty pourra être redirigé...
Maintenant je sais approximativement le problèmemais j'ai pas pu encore le résoudre:
Il faut tout d'abord ajouter cette ligne avant le SetParent(...)(Suivez Ce lien en détails)
Pour afficher le exe dans le panel, il faut absolument ajouter cette lignesinon l'application externe s'affiche en dehors de la form
Code : Sélectionner tout - Visualiser dans une fenêtre à part newProcess->WaitForInputIdle();
Le problème maintenant est que si j'intègre une autre application programmée en 2010(application MFC MDI), l'application s'affiche à l'extérieur
or pour une autre application en 2008(application MFC MDI) c bon
Je sais pas exactement quel est le problème???
Merci
bonjour,
cette fonction Api doit etre appele lors de l'appel à l'Api windows CreateProcess .
Si un processus parent cree un processus enfant ,pour interagir avec le processus enfant il faut tester la valeur de la fonction WaitForInputIdle pour savoir si le processus enfant(notre exe.name en l'occurence) a termine son initialisation et peut interagir avec le processus parent.
Nota-Bene(doc msdn): une application console ou une application sans -queue de message -retourne immediatement et n'attends pas la fin de l''initialisation du processus child.Ce sont des applications sans fenetres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 'appel a WaitForInputIdle avec parametres DWORD WINAPI WaitForInputIdle( __in HANDLE hProcess, __in DWORD dwMilliseconds ); ' valeur de retour: '-0 success '-WAIT_TIMEOUT le delai specifie (2eme param ) est depasse '- WAIT_FAILED survenance d'une erreur et on ne peut pas interagir.
Maintenant effectivement l'auteur du controle a procede comme suit:
-son controle -qui joue le role d'un processus parent-recoit en param le nom du processus enfant
-il cree un processus enfant
-il appele sur ce processus enfant waitforinputidel sans parametre de delai d'attent ni handle process.
-il ne teste pas la valeur de retour renvoye pour voir si l'appel s'est deroule sans erreur.
-il demande directement le handle de fenetre principale du processus enfant.
-il lui affecte comme parent notre controle.
Aussi je pense qu'il faut un "if" sur p.waitforinputidle pour connaitre la valeur de retour et le succes ou l'echec de l'appel avant d'appeler SetParent.
Par ailleurs est-ce que Iexplore.exe possede une queue de message en propre ou bien c'est la fenetre html qui prend en charge la queue de message,car il reagit comme une application console.
tiens nous au courant de tes peripeties ....
bon code..
bonne soiree..........
Bonjour,
Merci MABROUKI pour l'explication
Maintenant mon problème n'est plus avec le IExplorer car j'ai réussi à l'intégrer,
mais ce que je veux maintenant est d'intégrer une autre application MFC MDI développée en VS 2010 (intégrer l'exe bien sûre).
Avec les applications développées en 2010 ayant un style Windows7 ou bien Office 2007, l'intégration n'aura pas lieu
Avec d'autres styles comme par exemple le style office 2003, il y aura intégration
Et franchement je n'est trouvé aucune explication à ça
Merci
bonjour,il faut voir aussi avec dependency walker(depends.exe),les fichiers dll à redistribuer avec l'application peut etre que ca vient de ca.
bon code...
Bonjour,
l'intégration n'aura pas lieu non seulement avec les applications de style office 2007 ou windows 7, mais aussi pour une application "automation server"
je veux bien savoir pourquoi parfois il y a intégration et parfois non
ça dépend de l'exe ou bien de mon application![]()
Merci d'avance
Partager