Attacher une fenêtre de formulaire à une autre fenêtre en C #

Je veux joindre un formulaire à l'autre de la fenêtre (d'un autre processus). J'essaie de le faire en utilisant

[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

setParentWindow(myWindowHwnd, newParentHwnd);

En faire mon formulaire est joint, mais est également invisible. Question "Fenêtre joindre .." résout ce problème pour une Fenêtre WPF, essentiellement par l'utilisation de

HwndSourceParameters parameters = new HwndSourceParameters();
...
HwndSource src = new HwndSource(parameters);

J'ai essayé de transférer à ma forme, mais je suis incapable de le faire (par exemple, comment gérer les src.RootVisual = (Visual)window.Content; ? -> Source complet).

Un autre commentaire dit, j'ai besoin de modifier le style de fenêtres:

Pour des raisons de compatibilité, SetParent ne modifie pas le WS_CHILD ou WS_POPUP styles de fenêtre de la fenêtre dont le parent est en cours de modification. Par conséquent, si hWndNewParent est NULL, vous devez également désactiver la WS_CHILD bits et définir la WS_POPUP style après l'appel de SetParent. A l'inverse, si hWndNewParent n'est pas NULLE, et la fenêtre était auparavant un enfant de l'ordinateur de bureau, vous devez effacer le WS_POPUP de style et de définir le style WS_CHILD avant d'appeler SetParent.

Ici je m'ennuie de la correspondante de l'API pour le faire, je peux le faire directement à partir de C# ou ai-je utiliser un autre DllImport de nouveau?

Le bien ou le mal - SetParent() de l'API win32 entre les différents processus conseille d'attacher des fenêtres dans différents processus à tous, mais au moins j'ai envie d'essayer.

Question:

Que serais-je faire pour obtenir la forme de la fenêtre visible? Si l'approche avec WS_Child est la bonne, comment pourrais-je le mettre? Ou est le WPF approche le chemin à parcourir, mais comment pourrais-je l'appliquer à un formulaire windows?

-- Conclusions (ajouté plus tard) --

Modifier le style de fenêtres d'une autre application à l'aide de winAPI montre comment modifier le style de C# /PInvoke

Trouver tous les styles de fenêtres ici, la syntaxe C# en bas.

-- Résultats en raison de la discussion avec Alan --

Je n'ai couru mon programme sur Win XP pour vérifier par recoupement (voir Alan réponse ci-dessous et les commentaires). Au moins je fais maintenant de voir quelque chose. Depuis, j'ai ajouté les coordonnées de Alan exemples, ma fenêtre maintenant brille à travers dans le bloc-notes lorsque vous passez sur l'autre fenêtre près du coin supérieur gauche. Vous pouvez toujours voir le texte tapé dans le bloc-notes que de superposition. Sous Win 7 (32), je ne vois rien du tout.

  1. Maintenant j'ai besoin de savoir si cela peut être écrite d'une manière stable, apparaissant sur Win 7.
  2. Néanmoins, je ne peux toujours pas cliquer sur les boutons sur mon formulaire, doit être résolu.

Attacher une fenêtre de formulaire à une autre fenêtre en C #

source d'informationauteur Horst Walter