Secondary Screen Size auslesen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Werewolve.

    Secondary Screen Size auslesen

    Hallo,

    wie kann ich vom Secondary Screen die Größe herrausfinden?

    Für den Primary gibt es die tolle Funktion:

    VB.NET-Quellcode

    1. SystemInformation.PrimaryMonitorSize


    ich suche sowas wie:

    VB.NET-Quellcode

    1. SystemInformation.SecondaryMonitorSize


    !!



    MFG

    Werewolve
    Es gibt da eine Eigenschaft wo die Monitore Indiziert werden und man somit den Index des Monitor angeben muss. Wie die genau heißt weiß ich nicht mehr, schau dir mal die Namespaces an die dort angeboten werden.

    Irgnedwas mit .Monitors(1).ScreenSize oder so ähnlich halt. Ich denke vom Namen des Namespaces kann man auf die Funktion schließen.

    Edit: Habs gefunden

    VB.NET-Quellcode

    1. Screen.AllScreens(1).
    mmmh wie heiß den dann der genaue code wenn ich die die breite und höhe auslesen will, komme irgendwie nicht klar.

    bei Primary sieht das ja so aus:

    VB.NET-Quellcode

    1. SystemInformation.PrimaryMonitorSize.Width, SystemInformation.PrimaryMonitorSize.Height
    Noch ein Problem:

    Es gibt ja den Befehl "copyfromscreen" wie wende ich diese Funktion nur

    auf den "Secondary Screen" an? Also so das er nur nen Screen vom "zwei" Monitor macht?

    Die Größe hab ich ja jetzt!

    Gibt es keine Möglichkeit nur vom Zweiten Bildschirm einen Screenshot zu machen?

    Ist Verdammt Wichtig! :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()

    Sofern geht das genauso wie das Positionieren auf einem 2. Bildschirm. Wenn mal überlegt hättest, wenn normal über Druck ein Screen machst haste auch immer komplettes Bild von BEIDEN Monitoren.

    So wie kommt man nun den 2. Screen? Logisches Denken?

    Höhe? Ist bei beiden ja gleich.
    Breite? Wurde gesagt wie man die ausließt.

    So jetzt brauchen wir die Startposition, gewöhnlich die obere linke Ecke.

    Also entweder ist die Startposition Breite des Primary Screens oder Gesamtbreite minus Breite vom Secondary Screen. Logisch oder?

    Bei einem Screenshot aus VB heraus muss man ja soweit ich weiß X und Y Koordinate angeben sowie Breite und Höhe: nun

    wenn dies unsere Funktion ist ScreenShot(x,y,height,width)

    muss sie so aussehen

    ScreenShot(Screen.AllScreens(0).Bounds.Width + 1, 0, Screen.AllScreens(1).Bounds.Height, Screen.AllScreens(1).Bounds.Width

    war das so schwer? Ich denke das müsste so funktionieren!
    MMh geht leider nicht.

    Wenn man jetzt nen screen nur vom Primary macht dann sieht der code so aus:

    VB.NET-Quellcode

    1. Dim b As New Bitmap(SystemInformation.PrimaryMonitorSize.Width, SystemInformation.PrimaryMonitorSize.Height)
    2. Dim g As Graphics = Graphics.FromImage(b)
    3. g.CopyFromScreen(0, 0, 0, 0, b.Size)
    4. g.Dispose()
    5. b.Save(My.Computer.FileSystem.SpecialDirectories.Temp & "/screen.jpg", Imaging.ImageFormat.Jpeg)


    dein code müsste dann ja dann da rein:

    VB.NET-Quellcode

    1. g.CopyFromScreen(0, 0, 0, 0, b.Size)
    , aber dort sind 6 werte in deinem nur 4 was muss noch dazu?
    Ja ach wie schön das Visual Basic über sowas verfügt, was sich IntelliSense nennt.
    Man schreibt eine Funktion, dann öffnet sich so eine lustige Infobox wo die Parameter stehen die man an diese Funktion übergeben kann ... woaa ist das toll oder?

    und sry, aber wenn du nichtmal das hinbekommst, du hast alle Variablen die du benötigst sogar fast schon den kompletten Code. Jetzt musst du einfach mal ein bischel logisch denken und vorallem Verstehen, was du da überhaupt machst.
    Ich habe diese Funktion noch nie genutzt und erkenne trotzdem sofort was ich machen müsste um zu deinem Ziel zu kommen.
    Bilder
    • copyfromscreen.png

      9,33 kB, 957×181, 220 mal angesehen
    Hab das jetzt mal darein gebastelt:

    VB.NET-Quellcode

    1. Dim a As New Point(SystemInformation.PrimaryMonitorSize.Width + 1, 0)
    2. Dim d As New Point(Screen.AllScreens(1).Bounds.Height, Screen.AllScreens(1).Bounds.Width)
    3. Dim b As New Bitmap(SystemInformation.PrimaryMonitorSize.Width, SystemInformation.PrimaryMonitorSize.Height)
    4. Dim g As Graphics = Graphics.FromImage(b)
    5. g.CopyFromScreen(0, 0, 0, 0, b.Size)
    6. g.Dispose()
    7. b.Save(My.Computer.FileSystem.SpecialDirectories.Temp & "/screen.jpg", Imaging.ImageFormat.Jpeg)
    8. b.Dispose()
    9. Dim s As New Bitmap(My.Computer.Screen.AllScreens(1).Bounds.Width, My.Computer.Screen.AllScreens(1).Bounds.Height)
    10. Dim y as Graphics = Graphics.FromImage(s)
    11. y.CopyFromScreen(a, d, s.Size)
    12. y.Dispose()
    13. s.Save(My.Computer.FileSystem.SpecialDirectories.Temp & "/screen2.jpg", Imaging.ImageFormat.Jpeg)
    14. s.Dispose()


    Diese Funktion soll beide bildschirme jeweils in eine Datei speichern. Vom Primary Screen klappt das auch vom Secondary ist der Screen einfach schwarz! Warum?

    Keine Doppelposts bitte.
    Gruss
    mikeb69

    @mike69 ok werd ich tun
    !

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Werewolve“ ()