Pregunta

Quiero hacer un formulario .NET como el formulario más alto para otra aplicación externa (no relacionada con .NET, simplemente Win32), por lo que se mantiene por encima de Win32App, pero no el resto de las aplicaciones que se ejecutan.

Tengo el identificador de Win32App (proporcionado por Win32App), y probé Win32 SetParent () función , a través de P / Invocar en C # , pero luego mi formulario .NET se limita a Win32App y eso no es lo que quiero.

¿Fue útil?

Solución

Creo que lo que estás buscando es P / Invoke SetWindowLongPtr (win32window, GWLP_HWNDPARENT, formhandle)

Búsqueda de Google

Otros consejos

¡Sí! Ya tengo una importación P / Invoke de SetWindowLongPtr (que es segura para x64). Y usando Reflector busqué en la propiedad Form.Owner (es decir, el método get_Owner (valor del formulario)) y logró cambiar el propietario con

SetWindowLongPtr(childHdl, -8, OwnerHdl)

Estaba buscando lo que significaba el -8 (0xFFFFFFFFFFFFFFFFFF8) antes de poder publicar la solución aquí, pero Joel ya lo ha señalado.

¡Gracias!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top