Já precisei verificar se estava no monitor principal ou não, ou seja em aplicações com mais de 2 monitores ainda tenho somente o retorno de TRUE p/ monitor principal e FALSE p/ quaisquer outros monitores. Para isso criei um executável em c++.
#include "wtypes.h"
BOOL main()
{
HMONITOR monitor = MonitorFromWindow( GetForegroundWindow(),
MONITOR_DEFAULTTONEAREST );
MONITORINFO info;
info.cbSize = sizeof( MONITORINFO );
GetMonitorInfo( monitor, (LPMONITORINFO) &info );
return (BOOL) info.dwFlags;
}
No Elipse:
Sub button_Click()
Dim return
Dim objShell : Set objShell = CreateObject("WScript.Shell")
' Caminho p/ o executavel.
return = objShell.Run("c:\is_main_monitor.exe", 0, True)
If ( CBool(return) ) Then
' Monitor principal.
Else
' Monitor NAO principal.
End If
End Sub
Link p/ download do .exe: https://goo.gl/zy3cVh
* Não testado em aplicações com mais de 2 monitores.
** Se sua aplicação no Elipse rodar “janelada” ou vc executar o código através de uma popup que esteja ocupando as áreas de duas telas, o retorno será do monitor onde estiver contida a maior área da janela.