SetParent() - Incorporer un processus dans un form
Bonjour,
Voici le problème :
J'ai besoin d'intégrer un logiciel développé en Java, dans un logiciel développé en .NET.
Appelons le processus Java "Xprocess" et le logiciel .NET "sandbox"
Pour ce faire, je lance le logiciel Java comme processus :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Private XProcess As Diagnostics.Process = New Process()
...
'Je lui donne des arguments qui influent sur le programme java
XProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
XProcess = Process.Start(Ruta_Vargen, ARGUMENT_CONTROL & "=true" & ARGUMENT_CLIENT_PORT & "=15000" &
ARGUMENT_CLIENT_NAME & "=" & PROGEN_CLIENT_NAME &
ARGUMENT_INTERNAL_FRAME & "=true" &
ARGUMENT_MULTIPLE_LOAD & "=false")
XProcess.WaitForInputIdle() |
Une fois le XProcess démarré je l'incorpore dans un "Panel" provenant de mon logiciel "sandbox"
Code:
1 2 3 4 5 6 7 8 9 10
| While (XProcess.MainWindowHandle = IntPtr.Zero Or string.IsNullOrEmpty(XProcess.MainWindowTitle))
Thread.Sleep(10)
XProcess.Refresh()
lngStyle = GetWindowLong(XProcess.MainWindowHandle, GWL_STYLE)
lngStyle = ((lngStyle And Not WS_POPUP) Or WS_CHILD)
SetWindowLong(XProcess.MainWindowHandle, GWL_STYLE, lngStyle)
SetParent(XProcess.MainWindowHandle, Panel.Handle)
End While |
Tout se déroule comme prévu, le XProcess se place comme enfant du "Panel" (une sorte de MDI ici). Le problème se présente comme ceci :
Lorsque je clique sur mon logiciel "XProcess" afin de travailler, (sur un bouton, un TextBox... bref n’importe quel composant), "XProcess" prend le focus, et le rend directement à mon logiciel "sandbox".
Par conséquent je ne peux pas travailler avec le logiciel "XProcess".
Pour information : il y a 1 mois environ, les PC utilisaient la JVM 1.6 de java. Nous venons d'installer la 1.7.
En 1.6 je n'ai jamais rencontré ce problème. Avec la nouvelle version je n'arrive pas à garder le focus sur le processus.
Seul, le logiciel Java fonctionne parfaitement, mais une fois embarqué dans l'interface .NET, impossible de l'utiliser.
PS : Pourquoi vouloir incorporer Java a .NET ? N'étant pas chef du secteur informatique dans l'entreprise pour laquelle je travaille, il m'a été ordonné de garder une interface graphique en .NET.
Par la suite j'ai développé un logiciel en java (type Excel). On m'a ensuite demander de pouvoir utiliser les deux en même temps, incorporant le java dans le .NET, chose que j'ai faite, et qui maintenant, depuis le passage à la version 1.7 de Java, me pose problème.
Voilà plusieurs jours que je bloque sur ce problème.
Merci de votre aide.