IE Rand ausblenden

  • Hallo,

    ich bastle mir gerade eine schöne GUI und bin sogleich auf ein nerviges Problem gestoßen.
    Egal welche Seite ich im IE Objekt anzeigen lasse wird der Scrollbalken angezeigt bzw. auch wenn er nicht aktiv ist. Dazu habe ich das IE Objekt in ein Child gelegt, sodass ich es problemlos auf meiner GUI platzieren kann. Da wird jedoch der untere und rechte Rand angezeigt und den bekomme ich leider auch nicht ausgeblendet.

    Hier einfach mal der Code :D

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <Array.au3>

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

    _GDIPlus_Startup()
    $oPage = _IECreateEmbedded()

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

    $hGUI = GUICreate("hans", 450, 610, (@DesktopWidth / 2) - 400, -1, $WS_POPUP, $WS_EX_LAYERED); + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD, $hGUI)
    $hImage = _GDIPlus_ImageLoadFromFile("bg.png")
    SetBitmap($hGUI, $hImage, 0xFF)
    GUISetBkColor(0, $hGUI_child)
    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hGUI_child)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)

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

    _GUICtrlCreateIEObject(Default, $oPage, 500, 400, 0, 0, "http://fc09.deviantart.net/fs71/f/2011/323/3/8/autoit_icon_by_cacgolf-d4go7hg.png", 0)

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

    While 1
    _Funktion()
    WEnd

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

    Func _Funktion()
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit

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

    EndSwitch

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

    EndFunc ;==>_Funktion

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

    Func SetBitmap($hGUI, $hImage, $iOpacity = 255)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, $hGUI, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc ;==>SetBitmap

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func _GUICtrlCreateIEObject($iGui, $iObject, $iWidth, $iHeight, $iLeft, $iTop, $iUrl = "", $iWait = 1)
    $iIEGui = GUICreate("IE_" & Random(1, 100, 1), 0, 0, $iLeft, $iTop, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
    $GUIActiveX = GUICtrlCreateObj($iObject, -2, -2, $iWidth, $iHeight)
    GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
    _IENavigate($iObject, $iUrl, $iWait)
    GUISetState(@SW_SHOW, $iIEGui)
    Return SetError(0, $iIEGui, $GUIActiveX)
    EndFunc ;==>_GUICtrlCreateIEObject

    [/autoit]

    Jemand ne Idee wie ich das lösen könnte?
    Für generelle Vorschläge meines Codes bin ich auch offen :P

    MfG Freaky

  • Die Scrollbars kannst du ganz einfach mit

    [autoit]

    $ie.document.body.scroll = "no"
    $ie.document.body.style.overflow = "hidden"

    [/autoit]

    deaktivieren.


    Super danke :)
    Der Teil ist dann schon mal erledigt :D
    Jetzt habe ich leider noch diesen doofen Rand (siehe Bild) :(

    Da es in einem Child ist habe ich versucht die Größe des IE Objektes 2px größer zu machen, sodass die ausserhalb des sichtbaren Bereiches liegt.
    Leider ist die Größe des Childes komplett irrelevant :(

  • Was ist das denn für ein Bild was du immer anhängst. Wenn ich das Script ausführe kommt nur das AutoIt Zeichen. Ist das eine dir eigene HTML datei? Dann musst du einfach die bearbeiten..

    Lg Phil-IT

  • Was ist das denn für ein Bild was du immer anhängst. Wenn ich das Script ausführe kommt nur das AutoIt Zeichen. Ist das eine dir eigene HTML datei? Dann musst du einfach die bearbeiten..

    Lg Phil-IT


    In dem ersten Post ist es das Hintergrundbild welches ich als Beispiel für mein Script genommen habe und das zweite ist zur Verdeutlichung was mein Problem genau ist.

    Zitat

    Ist das eine dir eigene HTML datei?


    Der Teil ergibt kein Sinn, egal wie ich dein Satz hin und her drehe.

    Zitat

    Dann musst du einfach die bearbeiten..


    Wenn du mein Problem richtig gelesen hättest, dann würdest du wissen, dass der HTML Code nicht mein Problem ist sondern der IE Objekt Rand.
    Wenn du schon versuchst zu helfen, dann lies doch mein Problem bitte richtig durch, denn so eine Hilfe brauche ich nicht.

  • Der Satz gibt schon Sinn, aber nochmal für dich, ich wollte wissen, ob du die HTML Datei die du dort anzeigen willst, auf deinem PC besitzt. Weil wenn das der Fall ist dann wäre es einfach zu lösen. Da das Problem ja ganz offensichtlich nicht am IE oder an AutoIt liegt sondern einfach an der Homepage. Wenn du eine andere (z.B. "http://www.google.de" ;))) nimmst, dann ist der border auch weg. Ich habe am Anfang dein vollständiges Problem wirklich nicht verstanden, aber ich habe schon gestern genau das gemeint was ich jetzt meine. Also tausch einfach mal die Homepage aus und du wirst sehen, dass der Rand weg ist. Also liegt es ganz einfach am HTML Code.

    Lg Phil.