我想將.NET窗體作爲另一個外部應用程序的TopMost窗體(與.NET不相關,純Win32),因此它保持在Win32App之上,但不是其餘的Win32App應用正在運行如何使用其句柄更改窗口所有者
我有Win32App的處理(由Win32App本身提供),我試過Win32 SetParent() function,通過P/Invoke in C#,但是然後我的.NET窗體被限制在Win32App中,這不是我想要的。
我想將.NET窗體作爲另一個外部應用程序的TopMost窗體(與.NET不相關,純Win32),因此它保持在Win32App之上,但不是其餘的Win32App應用正在運行如何使用其句柄更改窗口所有者
我有Win32App的處理(由Win32App本身提供),我試過Win32 SetParent() function,通過P/Invoke in C#,但是然後我的.NET窗體被限制在Win32App中,這不是我想要的。
我想你要找的是P /調用SetWindowLongPtr(win32window, GWLP_HWNDPARENT, formhandle)
是的! 我已經有了SetWindowLongPtr(這是64位安全的)的P/Invoke導入。而使用反射我找遍於Form.Owner屬性(即get_Owner(表值)方法) 和管理與
SetWindowLongPtr(childHdl, -8, OwnerHdl)
我一直在尋找什麼-8(0xFFFFFFFFFFFFFFF8)之前,我可以的意思改變所有者在這裏發佈解決方案,但喬爾已經指出了。
謝謝!
問題是,我用「更改窗口所有者」單詞搜索而不是搜索「更改窗口父級」。 :) – 2008-09-25 14:00:34