Windows 10: Posicionar Window en un monitor especifico (Solucion)

Muy buenas tardes, en una aplicacion de escritorio en Windows 10 necesitaba posicionar una ventana en un monitor en particular (tengo 2) , despues de leer y probar un monton de ejemplos creo que lo medio entendi, los ajuste y ya me sirve. Lo comparto por si a alguien le sirve ya que casi me da un derrame a mi, creo que funciona solo con dos monitores y no se si sera la mejor forma de hacerlo y solo lo he probado en windows 10, pero por si les sirve

Considerar:

  1. Dependiendo como posiciones el segundo monitor graficamente (en el display settings) tendra diferentes valores la propiedad left y top, el width y heigh siempre seran los mismos salvo que cambies la resolucion del monitor

    Asi por ejemplo si posiciono el monitor justo a la derecha a mi me da estos valores

                             Left         Top       Widh      Heigh
    

Monitor 0 0 0 1920 1080
Monitor 1 1280 0 2133 1200

pero si el monitor graficamente lo arrastro y pongo a la izquierda del monitor 0

Monitor 1 -2133 0 2133 1200

  1. Pueden ver la cantidad de monitores con la funcion screencount

  2. Este Metodo se debe agregar a la ventana o extender el objeto ventana, recibe el numero de monitor (Variable pMonitor) y centra en ese monitor la ventana y la muestra

Dim X, Y As Integer

x = Screen(pMonitor).Width
y = screen(pMonitor).Height

// X sera el left del form

If X > self.Width Then
X = (x-self.Width) /2 -1
Else
x = Screen(pMonitor).left
End If

// Y sera el Top del form
If Y > self.Height Then
Y = (y - self.Height)/2 - 1
Else
y = Screen(pMonitor).top
End If

If pMonitor <> 0 Then
if screen(pMonitor).Left > 0 then
x = x + Screen(0).Width //ojo aqui debe ser en referencia a la screen 0 porque estoy a la derecha
ElseIF Screen(pMonitor).Left < 0 Then
x = x - Screen(pMonitor).Width //ojo aqui le resto mi propio ancho porque estoy a la izquierda
End If

If Screen(pMonitor).top > 0 Then
y = y + Screen(0).Height
ElseIF Screen(pMonitor).top < 0 THEN
y = y - Screen(pMonitor).Height
End If
end if

self.Left = X
Self.Top = Y
self.Show

Saludos y muy buen dia