私のWPFアプリケーションには複数のウィンドウがあります。これらのウィンドウのいくつかを別のプロセスのウィンドウにアタッチしたいと思います。私の問題は、ウィンドウをアタッチするとウィンドウが見えなくなることです。
私は次のコードでこれを試しています:
public static bool setParentWindow(IntPtr hWndChild, IntPtr hWndNewParent)
{
IntPtr previousParent = SetParent(hWndChild, hWndNewParent);
return (previousParent == null ? false : true);
}
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
setParentWindow(myWindowHwnd, newParentHwnd);
したがって、上記のコードはウィンドウを正常にアタッチしますが、残念ながらウィンドウは非表示になります。
これを行う理由は、アプリケーションの「ウィジェット」を作成してアプリケーションを拡張しようとしているためです。ウィジェットがフックされ、ユーザーに追加情報が表示されます。
どちらのウィンドウにも、WS_OVERLAPPEDWINDOW、WS_OVERLAPPED、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDRENのスタイルがあります。