Multiple Monitors, Keuze bij openen

Status
Niet open voor verdere reacties.

1107972

Gebruiker
Lid geworden
5 mei 2004
Berichten
186
Hallo,

Ik werk met een setup met 3 monitoren waarvan één monitor een touchscreen heeft. Nu ben ik een excelbestand/programma aan het maken wat ontworpen is om met de touchscreen te bedienen. Nu is mijn vraag of het mogelijk is om met VBA standaard te kunnen instellen in wel scherm het programma geopend moet worden. Het gaat dusmij vooral om de code waarmee je kan switchen naar bijvoorbeeld Monitor 3.

Heb al geprobeerd met macro openen en dan de functie van Ultramon, Switch To Other Monitor. Maar helaas wordt dit niet opgenomen.

Alle suggesties zijn welkom en alvast bedankt.
 
Ik denk dat dit iets kan zijn voor Application.SendKeys, alhoewel dit zo min mogelijk gebruikt moet worden over het algemeen. Maar beter dat dan superveel en moeilijke code te gaan zoeken.

Wigi
 
Thanks voor het meedenken WiGi. Helaas heeft ultramon niet de optie om een hot key in te snellen voor het openen in monitor 1,2 of 3. Maar juist om het programma te sturen naar het volgende te scherm. Wil je dus dat dit gaat werken dan moet je ook weten in wel monitor je hem opent.

Ben even gaan kijken op de site van Ultramon zelf en zie nu dat ik dat veel eerder had moeten doen. Je kan daar een shortcut maken voor een programma of bestand waarin je aangeeft in wel monitor het geopend moet worden en gemaximaliseerd of niet.

Daarnaast zag ik ook nog dat er iets van VB scripting mogelijk is voor Ultramon. Echter wat ik zo snel kon vinden kwam het er weer op neer dat je niet kan kiezen in welke monitor je het wil naar verplaatsen. Al kan je er wel achter komen op op welk monitor het scherm zich bevind. In het slechte geval krijg je dan dat je het eerst op 2 andere schermen ziet en dan pas op het juiste scherm. Ook niet echt ideaal dus.

Hier nog een link voor een volgende die met deze vraag komt en toch gebruik wil maken van scripting: http://www.realtimesoft.com/ultramon/tour/scripting.asp
 
Als deze code werkt zou het met 3 monitors zo kunnen:

als je monitor1 wil aktiveren
Code:
Sub monitor1()
  With CreateObject("UltraMon.System")
    for j=1 to 3
      with .monitors(j)
        if .enabled=true then .savepositions &H7
        .enabled=iif(j=1,true,false)
        .applymonitorchanges
        if j=1 then .restoremonitorchanges
        if j<>1 then RestorePositions &H7
      end with
    next
  end with
End Sub
als je monitor2 wil aktiveren
Code:
Sub monitor2()
  With CreateObject("UltraMon.System")
    for j=1 to 3
      with .monitors(j)
        if .enabled=true then .savepositions &H7
        .enabled=iif(j=2,true,false)
        .applymonitorchanges
        if j=2 then .restoremonitorchanges
        if j<>2 then RestorePositions &H7
      end with
    next
  end with
End Sub
als je monitor3 wil aktiveren
Code:
Sub monitor3()
  With CreateObject("UltraMon.System")
    for j=1 to 3
      with .monitors(j)
        if .enabled=true then .savepositions &H7
        .enabled=iif(j=3,true,false)
        .applymonitorchanges
        if j=3 then .restoremonitorchanges
        if j<>3 then RestorePositions &H7
      end with
    next
  end with
End Sub
 
Ik heb het gelijk even geprobeerd voor de macro voor monitor 3 maar het werkt nog niet. Eerst krijg ik gelijk een Compileerfout, sub of function is niet gedefineerd. Dit heeft betrekking op RestorePositions. Hier heb ik een punt voor gezet en daarna kreeg ik de melding niet meer. Daarna liep de macro vast op de derde regel.

Code:
Sub monitor3()
  With CreateObject("UltraMon.System")
    for j=1 to 3
      [COLOR="Red"][B]with .monitors(j)[/B][/COLOR]
        if .enabled=true then .savepositions &H7
        .enabled=iif(j=3,true,false)
        .applymonitorchanges
        if j=3 then .restoremonitorchanges
        if j<>3 then .RestorePositions &H7
      end with
    next
  end with
End Sub
 
Mogelijke oplossing:

Code:
Sub monitor3()
  With CreateObject("UltraMon.System")
    for j=1 to 3
      with .monitors([COLOR="Blue"]format[/COLOR](j))
        if .enabled=true then .savepositions &H7
        .enabled=iif(j=3,true,false)
        .applymonitorchanges
        if j=3 then .restoremonitorchanges
        if j<>3 then .RestorePositions &H7
      end with
    next
  end with
End Sub
 
Krijg nu weer iets verder in de code een foutmelding. Maar ik weet niet of je het is opgevallen maar in principe is de vraag gewoon opgelost voor mij. Ik zal je niet tegenhouden als het verder wilt proberen als je het leuk vind maar misschien wil je ook nog wel andere dingen doen.

Heb met rood de volgende fout aangegeven, Fout 438: Deze eigenschap of methode word niet ondersteund door dit object

Sub monitor3()
With CreateObject("UltraMon.System")
For j = 1 To 3
With .monitors(Format(j))
If .Enabled = True Then .savepositions &H7
.Enabled = IIf(j = 3, True, False)
.applymonitorchanges
If j = 3 Then .restoremonitorchanges
If j <> 3 Then .RestorePositions &H7
End With
Next
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan