Image auf Desktop malen-unsichtbar für Beamer

  • Hallo alle!
    Muss euch leider wieder was fragen...
    Ist es möglich ein Bild direkt so wie es ist auf den Desktop zu malen, das für einen Beamer nach Möglichkeit unsichtbar ist?
    Also ein Bild auf den Desktop malen und wenn ein Beamer angeschlossen ist sieht man es weiterhin auf dem PC, nicht jedoch auf dem Beamer.
    Ist das irgendwie möglich?

    Danke im Vorraus!
    Viele Grüße,
    stayawayk

  • Ich galub nicht.
    Aber du könntest den Beamer als 2. Bildschirm benutzen, und alles, was gezeigt werden soll da rein ziehen...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Schau dir mal UEZ's Rotating Letters (oder so) an

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • warum willst du keine gui
    die wird dan ja eh nich gesehen weil sie unsichtbar is
    und man kann durchklicken
    außer da wo du gemalt hast da nicht
    hier das bsp von H2112

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hWnd, $hGraphic, $hBitmap, $backbuffer
    Global $ScreenDc, $dc, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend, $tPoint, $pPoint, $gdibitmap
    Global $title = "GDI+ Beispiel: Transparentes Fenster", _
    $width = 150, _
    $height = 150

    [/autoit] [autoit][/autoit] [autoit]

    _StartUp()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawRoundedRect($backbuffer, 0, 0, $width - 1, $height - 1, 15)

    [/autoit] [autoit][/autoit] [autoit]

    _UpDate()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _StartUp()
    $hWnd = GUICreate($title, $width, $height, -1, -1, 0x80000000, BitOR(0x00000080, 0x00080000, 0x00000008))
    GUISetOnEvent(-3, "_ShutDown")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)

    [/autoit] [autoit][/autoit] [autoit]

    $ScreenDc = _WinAPI_GetDC($hWnd)
    $dc = _WinAPI_CreateCompatibleDC($ScreenDc)

    [/autoit] [autoit][/autoit] [autoit]

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $width)
    DllStructSetData($tSize, "Y", $height)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShutDown()
    _WinAPI_DeleteDC($dc)
    _WinAPI_ReleaseDC($hWnd, $ScreenDc)
    _GDIPlus_GraphicsDispose($backbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($hWnd)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _UpDate()
    $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($dc, $gdibitmap)
    _WinAPI_UpdateLayeredWindow($hWnd, $ScreenDc, 0, $pSize, $dc, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($gdibitmap)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_GraphicsDrawRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Pen = "")
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Pen)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY, $iX + $iWidth - $iRadius / 2, $iY, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX, $iY + $iRadius / 2, $iX, $iY + $iHeight - $iRadius / 2, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY + $iHeight, $iX + $iWidth - $iRadius / 2, $iY + $iHeight, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iWidth, $iY + $iRadius / 2, $iX + $iWidth, $iY + $iHeight - $iRadius / 2, $Pen)
    EndFunc

    [/autoit]
  • Danke euch allen, werd gleich lostesten!
    Ich will keine Gui, weil das Bild während einer PowerPointPräsentation erscheinen soll und für den der die Präsentation "weiterklickt" soll eine Vorschau auf dem Bildschirm zu sehen sein. Klappt soweit, bis auf die Vorschau selber ;) Eine Gui ist während der Präsentation dann "minimiert", leider
    Werd gleich testen!

  • Ich verstehe immer noch nciht, warum dies nicht gehen sollte:

    [autoit]

    $hGraphic=_GDIPlus_GraphicsCreateFromHWND(WinGetHandle("Desktop"))

    [/autoit]


    Ich kenn mich zwar nicht mit Gdi+ aus, aber bei _GDIPlus_GraphicsCreateFromHWND muss man doch das Fenster Handle angeben, oder nicht? Und demnach müsste der Code doch gehen.

  • Ich verstehe immer noch nciht, warum dies nicht gehen sollte:

    AutoIt-QuellcodeCode kopieren

    [autoit]

    $hGraphic=_GDIPlus_GraphicsCreateFromHWND(WinGetHandle("Desktop"))

    [/autoit]

    $hGraphic=_GDIPlus_GraphicsCreateFromHWND(WinGetHandle("Desktop"))


    Ich kenn mich zwar nicht mit Gdi+ aus, aber bei _GDIPlus_GraphicsCreateFromHWND muss man doch das Fenster Handle angeben, oder nicht? Und demnach müsste der Code doch gehen.

    Hab ich auch nicht gesagt,dass es nicht funktioniert, bin gerade am testen und merk gerade das es wunderbar funktioniert!
    Danke!#
    Müsste das mit dem Beamer noch irgendwie lösen, dazu bräuchte ich aber einen Beamer, kann ich also nich testen!
    Danke euch allen!
    Problem gelöst!

  • Das klappt übrigens nur ab Vista.
    XP hat noch kein Fenster mit dem Namen "Desktop" und die Betriebssysteme davor schon mal recht nicht ^^

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Hat XP wirklich kein Desktop Fenster? Wenn jemand XP hat, bitte mal folgendes Skript ausführen:

    [autoit]

    $test=WinList()
    For $x=0 to $test[0][0]
    If StringInStr($test[$x][0], "Desktop")= true Then MsgBox(0, "", "Das Fenster Desktop existiert")
    Next

    [/autoit]


    Wenn die MsgBox kommt, existiert das Fenster nämlich doch.