別の外部アプリ(.NET関連ではなく純粋なWin32)のTopMostフォームとして.NETフォームを作成して、そのWin32Appの上にとどまるようにしますが、実行中の残りのアプリは作りません。
私はWin32App(Win32App自体によって提供される)のハンドルを持っており、C#のP /Invokeを介してWin32SetParent ()関数を試しましたが、.NETフォームがWin32Appに限定され、それは私が望むものではありません。
別の外部アプリ(.NET関連ではなく純粋なWin32)のTopMostフォームとして.NETフォームを作成して、そのWin32Appの上にとどまるようにしますが、実行中の残りのアプリは作りません。
私はWin32App(Win32App自体によって提供される)のハンドルを持っており、C#のP /Invokeを介してWin32SetParent ()関数を試しましたが、.NETフォームがWin32Appに限定され、それは私が望むものではありません。
あなたが探しているのはP/Invokeだと思いますSetWindowLongPtr(win32window, GWLP_HWNDPARENT, formhandle)
はい!SetWindowLongPtr (x64 セーフ) の P/Invoke インポートが既にあります。そして、Reflector を使用して Form.Owner プロパティ (つまり get_Owner(Form value) メソッド) を検索し、所有者を変更することができました
SetWindowLongPtr(childHdl, -8, OwnerHdl)
ここに解決策を投稿する前に、-8 (0xFFFFFFFFFFFFFF8) の意味を調べていましたが、Joel は既に指摘しています。
ありがとう!