Domanda

Voglio creare un modulo .NET come modulo principale per un'altra app esterna (non relativa a .NET, pura Win32) in modo che rimanga al di sopra di quella Win32App, ma non il resto delle app in esecuzione.

Ho l'handle di Win32App (fornito dalla stessa Win32App) e ho provato Win32 SetParent () funzione , tramite P / Invoke in C # , ma il mio .NET Form viene confinato in Win32App e non è quello che voglio.

È stato utile?

Soluzione

Penso che tu stia cercando è P / Invoke SetWindowLongPtr (win32window, GWLP_HWNDPARENT, formhandle)

Ricerca Google

Altri suggerimenti

Sì! Ho già un'importazione P / Invoke di SetWindowLongPtr (che è x64 sicuro). E usando Reflector ho cercato la proprietà Form.Owner (ovvero il metodo get_Owner (valore del modulo)) e sono riuscito a cambiare il proprietario con

SetWindowLongPtr(childHdl, -8, OwnerHdl)

Stavo cercando cosa significasse -8 (0xFFFFFFFFFFFFFFF8) prima di poter pubblicare la soluzione qui, ma Joel l'ha già sottolineato.

Grazie!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top