Hallo,
ich möchte in meiner Form ein kleines IE Fenster reinbauen.
Aber ich möchte das es kein Rand hat, da es nicht zu meinem Design passt.
Wie bekomme ich den Rand weg?
Und wie kann ich z.B. Rechtsklick blockieren?
mfg Freaky
Hallo,
ich möchte in meiner Form ein kleines IE Fenster reinbauen.
Aber ich möchte das es kein Rand hat, da es nicht zu meinem Design passt.
Wie bekomme ich den Rand weg?
Und wie kann ich z.B. Rechtsklick blockieren?
mfg Freaky
Erstelle das IE-Object auf einer Childgui. Die Childgui muß nur kleiner als der IE sein, so das die Scrollbars nicht angezeigt werden.
Schau mal hier: [ offen ] IE Object Scrollbalken deaktivieren
Den Rand vom _IECreateEmbedded bekommst du afair nicht weg. Für die Rechte-Maustaste kannst du versuchen für diese beiden Events
[autoit]$GUI_EVENT_SECONDARYDOWN
$GUI_EVENT_SECONDARYUP
eine Dummy-Funktion in der MsgLoop-Schleife zu implementieren, das es klappt bezweifle ich aber,
mfg autoBert
Danke euch beiden, habe das jetzt mit dem rechtsklick in der HTML Datei geregelt.
So zurück zum Rand und der Scrollleiste.
Ich habe mir den einen Thread angeguckt und gesehen das ich eine zweite Form machen soll und die Scrolleiste aus der Form gehen soll.
Aber komischweise funktioniert das bei mir nicht ![]()
Hallo freaky,
also bei nir klappt's (auch mit transparentem Hintergrundbild)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <IE.au3>
#include <GDIpProgress.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
Global $sImagePfad = @ScriptDir & "\", $i
If Not FileExists($sImagePfad & "beetle3.png") Then InetGet("http://www.autoit.de/index.php?page=Attachment&attachmentID=11994&h=0f539727a8792db143f431db6e1d5b5f4b1ab20a", $sImagePfad & "beetle3.png", 1, 0)
_GDIPlus_Startup()
; Load PNG image
$hImage = _GDIPlus_ImageLoadFromFile($sImagePfad & "Beetle3.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
ConsoleWrite($iWidth & " / " & $iHeight)
; Create GUI
$hGUI = GUICreate("Show PNG", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0x01, $hGUI)
$Progress1 = _ProgressCreate(180, $iHeight - 45, 220, 27)
_ProgressSetColors($Progress1, 0x09B8F8, 0x09B8F8, 0xFFFFFF, 0xFFFFFF)
_ProgressSetFont($Progress1, "Courier New", 14)
_ProgressMarquee($Progress1)
GUISetState()
_IEErrorHandlerRegister()
_WinAPI_SetLayeredWindowAttributes($hGUI, 0x01, 0xFF, 3)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
$oIE = _IECreateEmbedded()
$hGuiIE = GUICreate("IE", 200, 130, 195, 110, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $hGUI)
$GUIActiveX = GUICtrlCreateObj($oIE, -18, -18, 236, 166)
GUISetState(@SW_SHOW, $hGuiIE)
_IENavigate($oIE, "http://autoit.de/index.php?page=Thread&postID=200042#post200042")
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
AdlibRegister("_IncProgress", 1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndSwitch
WEnd
; Clean up resources
AdlibUnRegister("_IncProgress")
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
;_ProgressDelete($Progress1) ;schädlich Programm lässt sich nicht schliessen
_GDIPlus_Shutdown()
Exit
Func _IncProgress()
If $i < 100 Then $i += 1
; _ProgressSet($Progress1, $i)
EndFunc ;==>_IncProgress
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINT
mfg autoBert
Danke, dein Beispiel funktioniert supper.
Habe mal kurtz eine kleine Funktion geschrieben, aber es funktioniert nicht ![]()
Func _GUICtrlCreateIEObject ($iGui, $iObject,$iLeft,$iTop,$iWidth,$iHeight,$iUrl = "", $iWait = 1)
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iLeft, $iTop, $iWidth, $iHeight, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, $iLeft, $iTop,$iWidth,$iHeight)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState (@SW_SHOW,$iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc
versuch es so:
[autoit]$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iLeft, $iTop, $iWidth, $iHeight, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, -18, -18,$iWidth+36,$iHeight+36)
Edit: Postionierung des IEs eingefügt,
mfg azroBert
Hmm, funktioniert irgend wie immer noch nicht ![]()
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <IE.au3>
#include <GDIpProgress.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
Global $sImagePfad = @ScriptDir & "\", $i
If Not FileExists($sImagePfad & "beetle3.png") Then InetGet("http://www.autoit.de/index.php?page=Attachment&attachmentID=11994&h=0f539727a8792db143f431db6e1d5b5f4b1ab20a", $sImagePfad & "beetle3.png", 1, 0)
_GDIPlus_Startup()
; Load PNG image
$hImage = _GDIPlus_ImageLoadFromFile($sImagePfad & "Beetle3.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
; Create GUI
$hGUI = GUICreate("Show PNG", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0x01, $hGUI)
GUISetState()
_IEErrorHandlerRegister()
_WinAPI_SetLayeredWindowAttributes($hGUI, 0x01, 0xFF, 3)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
$oIE = _IECreateEmbedded()
_GUICtrlCreateIEObject ($hGUI,$oIE,200, 130, 195, 110,"http://google.de",1)
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
AdlibRegister("_IncProgress", 1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndSwitch
WEnd
; Clean up resources
AdlibUnRegister("_IncProgress")
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
;_ProgressDelete($Progress1) ;schädlich Programm lässt sich nicht schliessen
_GDIPlus_Shutdown()
Exit
Func _IncProgress()
If $i < 100 Then $i += 1
; _ProgressSet($Progress1, $i)
EndFunc ;==>_IncProgress
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINT
Func _GUICtrlCreateIEObject ($iGui, $iObject,$iLeft,$iTop,$iWidth,$iHeight,$iUrl = "", $iWait = 1)
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iLeft, $iTop, $iWidth, $iHeight, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, $iLeft, $iTop,$iWidth,$iHeight)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState (@SW_SHOW,$iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc
Hallo freaky,
wenn du es so imscreibst funktioniert es:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <IE.au3>
#include <GDIpProgress.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
Global $sImagePfad = @ScriptDir & "\", $i
If Not FileExists($sImagePfad & "beetle3.png") Then InetGet("http://www.autoit.de/index.php?page=Attachment&attachmentID=11994&h=0f539727a8792db143f431db6e1d5b5f4b1ab20a", $sImagePfad & "beetle3.png", 1, 0)
_GDIPlus_Startup()
; Load PNG image
$hImage = _GDIPlus_ImageLoadFromFile($sImagePfad & "Beetle3.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
; Create GUI
$hGUI = GUICreate("Show PNG", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0x01, $hGUI)
GUISetState()
_IEErrorHandlerRegister()
_WinAPI_SetLayeredWindowAttributes($hGUI, 0x01, 0xFF, 3)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
$oIE = _IECreateEmbedded()
_GUICtrlCreateIEObject ($hGUI,$oIE,200, 130, 195, 110,"http://google.de",1)
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
AdlibRegister("_IncProgress", 1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndSwitch
WEnd
; Clean up resources
AdlibUnRegister("_IncProgress")
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
;_ProgressDelete($Progress1) ;schädlich Programm lässt sich nicht schliessen
_GDIPlus_Shutdown()
Exit
Func _IncProgress()
If $i < 100 Then $i += 1
; _ProgressSet($Progress1, $i)
EndFunc ;==>_IncProgress
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINT
Func _GUICtrlCreateIEObject ($iGui, $iObject,$iWidth,$iHeight,$iLeft,$iTop,$iUrl = "", $iWait = 1)
;$iWidth, $iHeight,$iLeft + $iTop beziehen sich auf die GUI
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iWidth, $iHeight,$iLeft, $iTop, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, 0, 0,$iWidth+18,$iHeight+18)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState (@SW_SHOW,$iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc
du musst beachten dass GuiCreate zuerst Breite, Höhe und danach links, oben haben möchte, bei GuiCtrlCreateObj ist es aber zuerst links, oben und danach Breite Höhe. Desweiteren ist beim Object links und oben auf 0 zu setzen und die Breite und auch die Höhe müssen um 18 grösser sein als die Höge und Breite der GUI, bei 18 kann es sein dass du andere werte benötigst, da ich derzeit in sehr starker Vergrösserung arbeite (siehe [gelöst] Darstellngsproblem in Scite),
mfg autoBert
Danke, jetzt funktioniert es links und oben den Rand weg zu bekommen.
Aber komischerweise wird das Fenster vergrößert in meiner Form wenn ich bei Width und Height ein +Zahl dran mache.
/Edit:
Könntest du eventuell deine PN Funkton wieder aktivieren?
Würde dir dann die ganze Source von meinem Script schiken.
Möchte halt nicht das es dann irgend wo wieder im Internet landet ![]()
Hallo freaky,
die beschrienen Änderungen habe ich schon in die Func eingearbeitet:
[autoit]Func _GUICtrlCreateIEObject ($iGui, $iObject,$iWidth,$iHeight,$iLeft,$iTop,$iUrl = "", $iWait = 1)
;$iWidth, $iHeight,$iLeft + $iTop beziehen sich auf die GUI
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iWidth, $iHeight,$iLeft, $iTop, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, 0, -0,$iWidth+18,$iHeight+18)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState (@SW_SHOW,$iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc
das Skript aus vorherigem Post erzeugt folgende Gui:
mfg autoBert
Schon klar, in deinem Beispiel funktioniert es super. Aber in meinem Script geht es leider nur teilweise.
Deswegen habe ich auch den Text oben editiert und ein zweiten Text hingeschrieben ![]()
Hallo freaky,
in deinem per PN zugesandten Skript, bekomme ich auch kein Bild zu sehen, würde mich auch wundern. Da ich an dem skript erkenne dass es auf einem Beispiel von UEZ aufbaut, solltest du noch einmal bei diesem stand anfangen und dort deine Änderungen einbauen. Den IE habe ich getetest, funktioniert auch in UEZ Skript:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <GDIpProgress.au3>
#include <IE.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
Global $iImagePfad = @ScriptDir & "\Images\", $i
_GDIPlus_StartUp()
; Load PNG image
$hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "bg.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
; Create GUI
$hGUI = GUICreate("Show PNG", $iWidth, $iHeight, 0,0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
$hGUI_child = GUICreate("", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0, $hGUI_child)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI_child)
SetTransparentBitmap($hGUI, $hImage) ;diese Zeile fehlt bei dir (ist aber nicht ausschlaggebend)
_WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI_child)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0) ;diese Zeile fehlt bei dir sehr wichtig ohne geht gar nichts
$oIE = _IECreateEmbedded()
_GUICtrlCreateIEObject ($hGUI_child,$oIE,200, 130, 195, 110,"http://google.de",1) ;hier verwendest du DEFAULT anstelle $hGUI_CHILD könnte auch ein Fehler sein
$Progress1 = _ProgressCreate(20, $iHeight-35, $iWidth-40, 27)
_ProgressSetColors($Progress1, 0x09B8F8, 0x09B8F8, 0xFFFFFF, 0xFFFFFF)
_ProgressSetFont($Progress1, "Courier New", 14)
GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
;~ GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
AdlibRegister("_IncProgress",1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
;~ _GDIPlus_ImageDispose($hImage)
_ProgressDelete($Progress1)
_GDIPlus_ShutDown()
Exit
Func _IncProgress()
if $i < 100 Then $i+=1
_ProgressSet($Progress1, $i)
EndFunc
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc
Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndFunc ;==>_WM_LBUTTONDOWN
Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
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
Func _GUICtrlCreateIEObject ($iGui, $iObject,$iWidth,$iHeight,$iLeft,$iTop,$iUrl = "", $iWait = 1)
;$iWidth, $iHeight,$iLeft + $iTop beziehen sich auf die GUI
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), $iWidth, $iHeight,$iLeft, $iTop, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, 0, 0,$iWidth+18,$iHeight+18)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState (@SW_SHOW,$iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc
ich habe im obigen Skript von UEZ ein paar Kommentare hinterlassen, wenn du die beachtest solltest du dein Skriot zum laufen bekommen,
mfg autoBert
SetTransparentBitmap($hGUI, $hImage)
[/autoit]
Das habe ich, nur bei mir heißt der Befehl SetBitmap oder so ähnlich.
Und vielen Danke, ich werde mir das genau angucken und mein Script überarbeiten. Und mal gucken ob es dann geht ![]()
Wenn nicht, dann melde ich mich wieder.