質問

.NET フォームを別の外部アプリ (.NET 関連ではなく、純粋な Win32) の最上位フォームとして作成して、その Win32App の上に留まりますが、実行中の残りのアプリには残らないようにしたいと考えています。

Win32App のハンドル (Win32App 自体によって提供される) を持っているので、試してみました Win32 SetParent() 関数, 、 経由 C# での P/呼び出し, 、しかし、その後、私の.NETフォームはWin32Appに制限されるので、それは私が望んでいることではありません。

役に立ちましたか?

解決

あなたが探しているのはP/Invokeだと思います SetWindowLongPtr(win32window, GWLP_HWNDPARENT, formhandle)

Google検索

他のヒント

はい!SetWindowLongPtr の P/Invoke インポートは既にあります (x64 セーフです)。そして、Reflector を使用して、Form.Owner プロパティを検索しました (すなわち、get_owner(form value)メソッド)と所有者をで変更することができました

SetWindowLongPtr(childHdl, -8, OwnerHdl)

解決策をここに投稿する前に、-8 (0xFFFFFFFFFFFFFF8) が何を意味するのか調べていましたが、ジョエルがすでにそれを指摘していました。

ありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top