Powerpoint auf externem Bildschirm anzeigen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von theowik.

    Powerpoint auf externem Bildschirm anzeigen

    hallo zusammen :)

    ich habe eine frage:

    ich würde gerne aus meinem programm heraus eine ppt aufrufen (d.h. direkt die Präsentation starten) und auf einem angeschlossenen externen Bildschirm anzeigen lassen.

    Frage: wie geht das ungefähr?

    mein ansatz: eine eigene form auf den externen bildschirm legen und Powerpoint dort als "Child" hineinlegen. bekomme das leider nicht hin.

    danke schonmal :)
    @timmi31061: Fast gut, aber nur fast.

    timmi31061 schrieb:

    Um die Form dann auf den anderen Bildschirm zu schieben,
    @theowik: sieh Dir Methoden und Properties der Screen-Klasse an. Gugt Ihr hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @theowik:
    Verwende die SetWindowPos-API:
    Hier die nötigen Deklarationen (schön mit XML-Doku :) :(

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Setzt ein Fenster, dem das in <paramref name="hWnd">hWnd</paramref> angegebene Handle gehört, auf eine in <paramref name="X">X</paramref> und <paramref name="Y">Y</paramref> angegebene Position und die in <paramref name="hWndInsertAfter">hWndInsertAfter</paramref> angegebene Ebene, unter Berücksichtigung der in <paramref name="uFlags">uFlags</paramref> angegebenen Bedingungen.
    3. ''' </summary>
    4. ''' <param name="hWnd">Das Handle des Fensters.</param>
    5. ''' <param name="hWndInsertAfter">Die Angabe darüber, in welche Z-Ebene das Fenster verschoben werden soll.</param>
    6. ''' <param name="X">Die X-Position des Fensters.</param>
    7. ''' <param name="Y">Die Y-Position des Fensters.</param>
    8. ''' <param name="cx">Die Breite des Fensters.</param>
    9. ''' <param name="cy">Die Höhe des Fensters.</param>
    10. ''' <param name="uFlags">Zusätzliche Parameter. Werden mit Or kombiniert.</param>
    11. <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
    12. Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInteger) As Boolean
    13. End Function
    14. ''' <summary>
    15. ''' Gibt Bedingungen für die SetWindowPos-Funktion an.
    16. ''' </summary>
    17. Public Enum uFlags As UInteger
    18. ''' <summary>
    19. ''' Retains the current Z order (ignores the hWndInsertAfter parameter).
    20. ''' </summary>
    21. SWP_NOZORDER = &H40
    22. ''' <summary>
    23. ''' Displays the window.
    24. ''' </summary>
    25. SWP_SHOWWINDOW = &H40
    26. End Enum

    Ich hab hier auch extra nur die uFlags-Werte im Enum gelassen, die Du brauchst.

    Aufgerufen wird das Ganze über:

    VB.NET-Quellcode

    1. SetWindowPos(HandleDesPowerPointFensters, IntPtr.Zero, X, Y, W, H, uFlags.SWP_NOZORDER Or uFlags.SWP_SHOWWINDOW)

    Wobei X und Y die linke obere Ecke und W und H die Größe des entsprechenden Bildschirms angeben. Diese bekommst Du über Screen.AllScreens(EntsprechenderIndex).Bounds.
    Durch angeben von SWP_NOZORDER bleibt das Zielfenster in der selben Z-Position. Dadurch sparen wir uns die Angabe von hWndInsertAfter. Bei SWP_SHOWWINDOW bin ich mir nicht sicher, ob es nötig ist. Probier mal es weg zu lassen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @theowik:
    Kannst Du das etwas genauer beschreiben? Was funktioniert genau nicht?
    Und könntest Du den relevanten Code gleich mit posten?
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils