GDI plus

  • Hai leute,

    ich habe jetzt angefangen mich mit GDI+ zu befassen!
    Bis jetzt habe ich immer auf Gui´s gezichnet!
    Kann man jetzt aber auch in den Vordergrund zeichen? ?( ?(
    also das die Zeichnung VOR allen fenstern ist!


    mfg Mr.Multibot

    Einmal editiert, zuletzt von MR.Multibot (2. Juli 2010 um 16:37)

  • Es gibt die möglichkeit mit der UDF von H2112, da wird eine transparente gui erstellt die das auslöst !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Kann man jetzt aber auch in den Vordergrund zeichen? ?( ?(
    also das die Zeichnung VOR allen fenstern ist!


    Meinst du auf dem Desktop ?

    Dann guck dir mal das an.

    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    $hDesktop = _WinAPI_GetDesktopWindow()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hDesktop)
    $hPen = _GDIPlus_PenCreate(0xff000000+0x000000,5)
    _GDIPlus_GraphicsDrawLine($hGraphic,200,200,500,500,$hPen)
    Sleep(1000)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]
  • Ja das ist schon das was ich meine:D

    noch eine Frage kann man verhindern das das gezeichnete verschwindet wen man irgendwo hinklickt===????

  • Is zwar nicht die beste Methode aber naja
    Schade ist das man GuiRegisterMsg nicht auf andere Handles anwenden kann.

    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    $hDesktop = _WinAPI_GetDesktopWindow()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hDesktop)
    $hPen = _GDIPlus_PenCreate(0xff000000+0x000000,5)
    _GDIPlus_GraphicsDrawLine($hGraphic,200,200,500,500,$hPen)

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

    AdlibRegister("Redraw",100)

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

    While Sleep(50)
    WEnd

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

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

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

    Func Redraw()
    _GDIPlus_GraphicsDrawLine($hGraphic,200,200,500,500,$hPen)
    EndFunc

    [/autoit]
  • Das Beispiel von Sprenger, bzw. das Prinzip klappt erst ab Vista, also nicht bei XP, da dort kein Fenster mit dem Namen "Desktop" existiert...

    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"

  • Bei mir klappts nicht 8|

    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"

  • Führe mal bitte folgendes Skript aus ^^:

    [autoit]

    $fenster=WinList()
    For $x=1 to $fenster[0][0]
    If StringInStr($fenster[$x][0], "Desktop") Then
    MsgBox(0, "", "Das Fenster Desktop existiert.")
    Exit
    EndIf
    Next
    MsgBox(0, "", "Okay, ich hab mich wohl doch geirrt, das Fenster Desktop existiert nicht.")

    [/autoit]
  • Ich geb mich geschlagen, hattest recht, aber das Script von Sprenger klappt trotzdem 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"

  • Das Beispiel von Sprenger, bzw. das Prinzip klappt erst ab Vista, also nicht bei XP, da dort kein Fenster mit dem Namen "Desktop" existiert...

    So müsste das auch auf XP Funzen

    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    $hDC = _WinAPI_GetDC(0)

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC)
    $hPen = _GDIPlus_PenCreate(0xff000000+0x000000,5)
    _GDIPlus_GraphicsDrawLine($hGraphic,200,200,500,500,$hPen)
    Sleep(5000)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    _WinAPI_ReleaseDC(_WinAPI_GetDesktopWindow(),$hDC)

    [/autoit]

    //Edit: Falsches Script gewesen.

  • Nein, es klappt immer noch nicht...

    Edit: nach dem Edit gings :thumbup:

    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"