Atualmente, os programas Windows - chamados app (lication) - podem salvar a posição de sua janela em um arquivo ou no registro. Se alguém souber onde estão esses dados, eles poderão ser editados manualmente no bloco de notas ou no editor de registro. (entradas incorretas do registro podem causar instabilidade ou erros do Windows)
A criação de uma maneira automatizada deve ser fácil para alguém com um pouco de habilidades de codificação e pode ser iniciada conforme necessário (ou seja, após a recolocação do monitor). Isso pode ser feito por um script de ação, arquivo .bat ou aplicativo nativo.
Os aplicativos em questão precisarão ser fechados antes disso, para que as posições desejadas sejam implementadas.
Outra possibilidade com o recurso "online" (não é necessário reiniciar o aplicativo) seria se o Windows permitir acessar uma janela de um processo por outro. Uma abordagem pode ser as funções SendMessage e WindowProc.
(Neste momento, não tenho certeza se isso se aplica apenas a threads do aplicativo pai ou pode ser feito por threads de outros aplicativos ... e, é claro, exige bons conhecimentos de programação para Windows)
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
Envia a mensagem especificada para uma janela ou janelas. [...] Se a janela especificada foi criada pelo thread de chamada, o procedimento da janela é chamado imediatamente como uma sub-rotina. Se a janela especificada foi criada por um encadeamento diferente, o sistema alterna para esse encadeamento e chama o procedimento de janela apropriado.
Mensagem WM_Move
https://docs.microsoft.com/en-us/windows/desktop/winmsg/wm-move
Enviado depois que uma janela foi movida.
Uma janela recebe essa mensagem através de sua função WindowProc.
https://msdn.microsoft.com/en-us/library/ms633573%28v=VS.85%29.aspx?f=255&MSPPError=-2147217396
Uma função definida pelo aplicativo que processa as mensagens enviadas para uma janela. [...]