Anwendung

  • Könnte mir nochmal jmd sage wie ich eine anwendung(fenter)in meine Gui bekomme ?!?!
    Danke

    Einmal editiert, zuletzt von Detroit49 (26. August 2010 um 15:39)

  • also ich habe ne mediaplayer auf und diese lichtspiele das möchte ich in 200x200 in meiner gui drinne haben ;)

  • na ich will halt verschiden anwendung die grade laufen dort anzeigen lassen und auf wunsch halt in original grösse zurückholen

  • Du willst also eine Minaturansicht der Anwendungen haben so wie es z.b. bei Windows 7 der Fall ist?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • jap genau so nur das es halt in meiner form ist


    Edit also mit winapi komme ich nicht klar ^^ sry

    Einmal editiert, zuletzt von Detroit49 (26. August 2010 um 10:53)

  • Definitiv nicht die beste Methode, aber es funktioniert:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GDIPlus.au3>
    #Include <Screencapture.au3>

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

    Opt("GUIOnEventMode", 1)

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

    #region ### START Koda GUI section ### Form=
    $hGUI_Main = GUICreate("Fenstervorschau", 495, 309, 610, 299, BitOR($WS_MINIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_GROUP, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_OnEventClose")
    GUISetOnEvent($GUI_EVENT_RESIZED, "_OnEventResized")
    ;~ $hGrph = GUICtrlCreateGraphic(24, 32, 441, 233)
    $hPic = GUICtrlCreatePic("", 24, 32, 441, 233, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM)
    $hbtn_Fwrd = GUICtrlCreateButton("Weiter", 392, 272, 75, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $hbtn_Back = GUICtrlCreateButton("Zurück", 24, 272, 75, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $hbtn_Activate = GUICtrlCreateButton("Aktivieren", 208, 272, 75, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $Label1 = GUICtrlCreateLabel("Fenstervorschau", 24, 8, 83, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    GUICtrlSetOnEvent($hbtn_Fwrd, "_NextWindow")
    GUICtrlSetOnEvent($hbtn_Back, "_PrevWindow")
    GUICtrlSetOnEvent($hbtn_Activate, "_WinActivate")

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

    Global $ahWndAll = WinList(), $ahWnd[1]
    For $i = 1 To $ahWndAll[0][0]
    If BitAND(WinGetState($ahWndAll[$i][1]), 2) And $ahWndAll[$i][0] <> "" And $ahWndAll[$i][0] <> "Start" And $ahWndAll[$i][0] <> "Program Manager" Then ; Nur sichtbare Fenster
    ReDim $ahWnd[UBound($ahWnd) + 1]
    $ahWnd[UBound($ahWnd) - 1] = $ahWndAll[$i][1]
    EndIf
    Next

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

    _ArrayDelete($ahWnd, 0)

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

    Global $index = 0, $max = UBound($ahWnd) - 1
    If $max = 0 Then
    GUICtrlSetState($hbtn_Fwrd, $GUI_DISABLE)
    GUICtrlSetState($hbtn_Back, $GUI_DISABLE)
    EndIf

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

    _UpdateGrph()

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

    While Sleep(50)
    WEnd

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

    Func _OnEventClose()
    FileDelete(@TempDir & "/Window.jpg")
    Exit
    EndFunc

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

    Func _OnEventResized()
    GUICtrlSetImage($hPic, @TempDir & "/Window.jpg")
    EndFunc

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

    Func _WinActivate()
    WinActivate($ahWnd[$index])
    EndFunc

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

    Func _NextWindow()
    $index += 1
    _UpdateGrph()
    If $index > 0 Then GUICtrlSetState($hbtn_Back, $GUI_ENABLE)
    If $index = $max Then GUICtrlSetState($hbtn_Fwrd, $GUI_DISABLE)
    EndFunc ;==>_NextWindow

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

    Func _PrevWindow()
    $index -= 1
    _UpdateGrph()
    If $index < $max Then GUICtrlSetState($hbtn_Fwrd, $GUI_ENABLE)
    If $index = 0 Then GUICtrlSetState($hbtn_Back, $GUI_DISABLE)
    EndFunc ;==>_PrevWindow

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

    Func _UpdateGrph()
    For $i = 0 To $max
    WinSetTrans($ahWnd[$i], "", 00)
    Next
    WinSetTrans($ahWnd[$index], "", 255)
    $hbmpWin = _ScreenCapture_CaptureWnd(@TempDir & "/Window.jpg", $ahWnd[$index])
    For $i = 0 To $max
    WinSetTrans($ahWnd[$i], "", 255)
    Next
    _OnEventResized()
    EndFunc ;==>_UpdateGrph

    [/autoit]

    In Windows 7 wird eine Miniaturansicht der Fenster bezüglich der Taskbartabs gespeichert, aber das wäre einen deut komplizierter das zu benutzen.
    In meinem Beispiel sieht es scheiße aus, aber funktioniert immerhin.

  • vielen dank so habe ich mir das vorgestellt
    jedoch das es sich im Live handelt und nicht um scrennshots
    aber sonst hast du mir seht geholfen

  • In dem Fall müsstest du mit der WinAPI bzw GDI arbeiten, um das Fenster (welches NICHT im Vordergrund oder ganz zu sehen ist) abbilden zu lassen und anschließend in ein Grafikelement (wie ich es auskommentiert hatte) auszugeben. Allerdings habe ich zu wenig Ahnung davon, um das zu verwirklichen, du müsstest als einen anderen fragen.