Como alterar uma janela do proprietário usando sua alça
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.
Solução
Eu acho que você está procurando para P / Invoke SetWindowLongPtr(win32window, GWLP_HWNDPARENT, formhandle)
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!