Pergunta

Eu quero fazer um formulário .NET como um formulário TopMost para outro aplicativo externo (não .NET relacionados, pura Win32) para que fique acima que Win32app, mas não o resto dos aplicativos em execução.

Eu tenho o cabo da Win32app (fornecida pelo próprio Win32app), e eu tentei Win32 SetParent () função , através de P / Invoke em C # , mas depois o meu Formulário .NET fica confinado no Win32app e não é isso que eu quero.

Foi útil?

Solução

Eu acho que você está procurando para P / Invoke SetWindowLongPtr(win32window, GWLP_HWNDPARENT, formhandle)

Google Search

Outras dicas

Sim! Eu já tenho um P / Invoke importação de SetWindowLongPtr (que é seguro x64). E com refletor Eu procurei sobre a propriedade Form.Owner (ou seja, o método get_Owner (valor Form)) e conseguiu alterar o proprietário com

SetWindowLongPtr(childHdl, -8, OwnerHdl)

Eu estava olhando o que a -8 (0xFFFFFFFFFFFFFFF8) significou antes que eu pudesse postar a solução aqui, mas Joel já referiu-lo.

Obrigado!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top