taskmanager übermalt fremdes fenster

  • hi hab ein script gebastetelt was ein fremdes fenster abspielt und einen eigenen rand herum zeichnet .hab jezt aber 4 probleme.wenn das eingebundene fenster ein anderes programm oder eine msgbox öffnet ist diese nicht im fenster.
    2.Mein größstest problem ist das wenn ich mit dem taskamager drüberfahrer das eingebeundene programmm übermalt wird da musss man dann wieder draufdrücken das man es wieder sieht.
    3.Es funktioniert bei Browsern nicht.
    4.Es funktioniert nicht wenn das programm versteckt gestartet wird.


    Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include "graphicdesigner2.au3"
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <WinAPI.au3>
    _GDIPlus_Startup()
    $pp = "-"
    $hPid = Run(@SystemDir & '\notepad.exe');, "", @SW_HIDE)
    While $pp = "-"
    _WinGetByPID($hpid)
    Sleep(100)
    WEnd
    WinSetState($pp,"",@sw_hide)
    WinWait($pp)
    $fensters = WinGetPos($pp)
    $gui = GUICreate("",$fensters[2]+8,$fensters[3]+46,0,0,$WS_POPUP,BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($fensters[2]+20,$fensters[3]+46, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    WinMove($pp,"",4,42)
    $hChild = WinGetHandle($pp)
    ;http://www.autoit.de/index.php?page…=27957&pageNo=2
    _WinAPI_SetParent($hChild, $gui)
    _WinAPI_SetWindowLong($hChild, $GWL_STYLE, $WS_POPUP)
    WinSetState($hChild, "", @SW_SHOW)
    GUISetState()
    While 1
    _designer_create_viereck(0,0,$fensters[2]+9,$fensters[3]+42,$fensters[2]+4,$fensters[3]+42,2,1,0xFF0AE07F)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$fensters[2]+10,30,$_designer_hbrush)
    _designer_wirte_text(0,5,$pp,15,0xFFFFFFFF,0,"Arial")
    ;$fileread = FileRead(@ScriptDir & "\Settings\desktophintergrund.wina")
    ;Sleep(1000)
    $maus = GUIGetCursorInfo($gui)
    If Not($maus = "") Then
    If _IsPressed(01) And $maus[0] >= $fensters[2]- 10 And $maus[1] >= $fensters[3] -10 Then _exit()
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0,$fensters[2]+20,$fensters[3]+46 )
    Sleep(10)
    WEnd

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

    Func _WinGetByPID($iPID)
    Local $aWList = WinList()
    For $iCC = 1 To $aWList[0][0]
    If WinGetProcess($aWList[$iCC][1]) = $iPID And _
    BitAND(WinGetState($aWList[$iCC][1]), 2) Then
    $pp = $aWList[$iCC][0]
    Return $aWList[$iCC][0]
    EndIf
    Next
    Return SetError(1, 0, 0)
    EndFunc

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

    Func _exit()
    _designer_shoutdown()
    _GDIPlus_GraphicsDispose($hgraphic)
    _GDIPlus_BitmapDispose($hbitmap)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    Graphicdesigner2:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <WinAPI.au3>

    Dim $_designer_hFont,$_designer_hFamily,$_designer_hFormat,$_designer_hBrush,$_designer_write_text_maxlenght = 0,$_designer_number = 0,$_designer_create_m[4]

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

    Func _designer_wirte_text($_designer_wirtetext_x,$_designer_wirtetext_y,$_designer_wirtetext_text,$_designer_wirtetext_high,$_designer_wirtetext_color,$_designer_wirtetext_format,$_designer_wirtetext_family)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($gui)
    $_designer_hBrush = _GDIPlus_BrushCreateSolid($_designer_wirtetext_color)
    $_designer_hFormat = _GDIPlus_StringFormatCreate()
    $_designer_hFamily = _GDIPlus_FontFamilyCreate($_designer_wirtetext_family)
    $_designer_hFont = _GDIPlus_FontCreate($_designer_hFamily, $_designer_wirtetext_high, $_designer_wirtetext_format)
    $tLayout = _GDIPlus_RectFCreate($_designer_wirtetext_x, $_designer_wirtetext_y, $_designer_write_text_maxlenght, 0)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $_designer_wirtetext_text, $_designer_hFont, $tLayout, $_designer_hFormat)
    _GDIPlus_GraphicsDrawStringEx($hbuffer, $_designer_wirtetext_text, $_designer_hFont, $aInfo[0], $_designer_hFormat, $_designer_hBrush)
    EndFunc

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

    Func _designer_wirte_text_maxlenght($_designer_write_text_maxlengh)
    $_designer_write_text_maxlenght = $_designer_write_text_maxlengh
    EndFunc

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

    Func _designer_shoutdown()
    _GDIPlus_FontDispose($_designer_hFont)
    _GDIPlus_FontFamilyDispose($_designer_hFamily)
    _GDIPlus_StringFormatDispose($_designer_hFormat)
    _GDIPlus_BrushDispose($_designer_hBrush)
    EndFunc

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

    Func _designer_create_viereck($_designer_create_rahmen_x,$_designer_create_rahmen_y,$_designer_create_rahmen_lenght,$_designer_create_rahmen_high,$_designer_create_rahmen_abstandx,$_designer_create_rahmen_abstandy,$_designer_create_rahmen_anzahlx,$_designer_create_rahmen_anzahly,$_designer_hbrus);_designer_create_viereck($_designer_create_viereck_x,$_designer_create_viereck_y,$_designer_create_viereck_lenght,$_designer_create_viereck_high,$_designer_hbrus)
    $_designer_hbrush = _GDIPlus_BrushCreateSolid($_designer_hbrus)
    For $assasds = 0 To $_designer_create_rahmen_anzahlx -1 Step 1
    _GDIPlus_GraphicsFillRect($hbuffer,$_designer_create_rahmen_x,$_designer_create_rahmen_y,4,$_designer_create_rahmen_high,$_designer_hbrush)
    $_designer_create_rahmen_x += $_designer_create_rahmen_abstandx
    Next
    For $assasds = 0 To $_designer_create_rahmen_anzahlx -1 Step 1
    $_designer_create_rahmen_x -= $_designer_create_rahmen_abstandx
    Next
    For $assasds = 0 To $_designer_create_rahmen_anzahly Step 1
    ;_GDIPlus_GraphicsFillRect($hbuffer,$_designer_create_rahmen_x,$_designer_create_rahmen_y,2,$_designer_create_rahmen_high,$_designer_hbrush)
    _GDIPlus_GraphicsFillRect($hbuffer,$_designer_create_rahmen_x,$_designer_create_rahmen_y,$_designer_create_rahmen_lenght,4,$_designer_hbrush)
    $_designer_create_rahmen_y += $_designer_create_rahmen_abstandy
    Next

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

    EndFunc

    Func _designer_create_m($_designer_create_m_x,$_designer_create_m_y,$_designer_create_m_lenght,$_designer_create_m_high,$_designer_create_m_abstandx,$_designer_create_m_abstandy,$_designer_hbrus)
    ;$_designer_create_m_anzahl = $_designer_create_m_high /= $_designer_create_m_abstandy *$_designer_create_m_lenght /= $_designer_create_m_abstandx
    $_designer_maus = GUIGetCursorInfo()
    $_designer_hbrush = _GDIPlus_BrushCreateSolid($_designer_hbrus)
    $_designer_maus_y = $_designer_create_m_y
    ;Dim $_designer_create_m[$_designer_number+1]
    For $assasds = 0 To $_designer_number+1
    $_designer_create_m[$assasds] = False
    Next
    $_designer_number = 0
    For $assasds = 0 To Int($_designer_create_m_high / $_designer_create_m_abstandy) -1
    $_designer_maus_x = $_designer_create_m_x
    For $assasds2 = 0 To Int($_designer_create_m_lenght/ $_designer_create_m_abstandx)-1;$_designer_create_m_anzahl
    $_designer_number +=1
    If $_designer_maus[0] > $_designer_maus_x And $_designer_maus[0] <= $_designer_maus_x+$_designer_create_m_abstandx And $_designer_maus[1] > $_designer_maus_y And $_designer_maus[1] <= $_designer_maus_y+$_designer_create_m_abstandy Then
    _GDIPlus_GraphicsFillRect($hbuffer,$_designer_maus_x,$_designer_maus_y,$_designer_create_m_abstandx,$_designer_create_m_abstandy,$_designer_hbrush)
    $_designer_create_m[$_designer_number] = True
    EndIf
    ;MsgBox(0,"",$_designer_maus_x & ":" & $_designer_maus_y)
    ;$a = Int($_designer_create_m_high / $_designer_create_m_abstandy)
    ;MsgBox(0,"",$a)
    ;_Exit()
    $_designer_maus_x += $_designer_create_m_abstandx
    Next
    $_designer_maus_y += $_designer_create_m_abstandy
    Next
    EndFunc

    [/autoit]
  • hab schon $WS_EX_TOPMOST.und wenn du meinst auf das eingebundene programm das geht nicht.

  • Das mit dem Rand hatten wir doch schonmal...
    2. Der TM ist so kontruiert das er immer über allen Fenstern liegt
    3. Mit WinsetOnTop() ist dein Problem gelöst

    4. Deinen Chatstream kann hier keiner lesen, auch wenn du keine Umlaute schreiben kannst, kannst du sehr wohl die Groß-/Kleinschriebung berücksichtigen, und deine Sätze ordentlich punktieren. Ich bin glaub ich mal nicht der erste der dir das sagt!

    MfG, campweb

  • was mit dem topmost mein fenster ist bereits über allen anderen aber der taskmanager ist auch über allen anderen und wenn ich ihn drüberschiebe und wieder weg ist die stelle da grau wo der taskmanager war.

  • mir ist egal das der taskmanager drüber ist aber wenn ich ihn weggschiebe ist alles wo der tasmagaer war grau.

  • Du hast doch eine Draw Funktion?
    Nimmst du GDI+? - Ja lol
    Also alles neu Zeichnen (mach dir ne Funktion, die dir das Abnimmt, die Rufst du auch am Start auf anstelle von 100 kleinen :thumbup: )

  • es geht nicht um gdi+ der rahmen ist gdi+ mit dem gibts auch kein problem hab ein problem mit der eingebeundenen exe.sieh dir einfach mal den screen an

  • das mach ich doch benutze jezt ja

    [autoit]

    _WinAPI_RedrawWindow

    [/autoit]

    aber die menüleitse wird trozdem nicht neu gezeichnet.

  • Muss kein GDI+ sein, das Ruft duie Funktion nur auf, wenn ein anderes Fenster draufliegt...
    Lies die Hilfe ma ;)