1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Freaky

Beiträge von Freaky

  • nur Hover über sichtbaren Teil

    • Freaky
    • 11. März 2015 um 13:16

    Hallo,

    ich bastel mir gerade eine schöne GUI zusammen und dazu gehört auch natürlich ein Hover bei Buttons.
    Jetzt bin ich zu einem Punkt gekommen um den Hover effekt zu verschönern.

    Wenn man die Maus über das Bild (den Button) fährt, dann ändert es sich zu dem Hoverbild. Das passiert auch, wenn man über den transparenten Teil fährt.
    Da ich aber ein Button erstellen möchte habe ich den Cursor auch ändern lassen. Dieser ändert sich aber erst dann, wenn man die Maus über einen sichtbaren Teil fährt und nicht über den transparenten Teil.
    Dadurch kam mir der Gedanken, dass es doch bestimmt möglich ist den Hover auch erst dann auftauchen zu lassen, wenn die Maus erst den sichtbaren Teil trift.
    Ich vermute, dass es möglich ist, weil, wenn ich abfrage ob der Button bzw. das Bild geklickt wurde, dann reagiert es erst, wenn man auf den sichtbaren Teil drückt.
    Nun habe ich die ganze Zeit rumprobiert aber bekomme es nicht hin :(

    Spoiler anzeigen
    [autoit]

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

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

    Global $hGUI
    Global $aHover[1], $iHover = False

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

    _GDIPlus_Startup()

    [/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)

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

    $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)
    $hButton = _GUICtrlCreateImageButton($hGUI, "start.png", "start_hover.png", 750, 600)

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

    While 1
    _Funktion()
    WEnd

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

    Func _Funktion()
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $hButton
    SetBitmap($aHover[0][1], $aHover[0][3], 0xFF)
    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 _GUICheckHoverButtons()
    $hover = False

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

    For $i = 0 To UBound($aHover) - 1
    $aMouse = GUIGetCursorInfo($aHover[$i][1])
    ToolTip($aMouse[4], 0, 20, $aHover[$i][1])
    If ($aMouse[4] > 0 And $aHover[$i][4] = False) Then
    SetBitmap($aHover[$i][1], $aHover[$i][3], 0xFF)
    $aHover[$i][4] = True
    ElseIf ($aMouse[4] == 0 And $aHover[$i][4] = True) Then
    SetBitmap($aHover[$i][1], $aHover[$i][2], 0xFF)
    $aHover[$i][4] = False
    EndIf
    Next
    EndFunc ;==>_GUICheckHoverButtons

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

    Func _GUICtrlCreateImageButton($gui_parent, $image, $image_hover, $left, $top)
    $hImage = _GDIPlus_ImageLoadFromFile($image)
    $hImageHover = _GDIPlus_ImageLoadFromFile($image_hover)
    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)
    $gui = GUICreate("Button_" & Random(1, 9999), $width, $height, $left, $top, $WS_POPUP, $WS_EX_LAYERED, $gui_parent)
    GUISetCursor(0, 1, $gui)
    $GUIActiveX = GUICtrlCreateLabel("", -1, -1, $width + 1, $height + 1)
    GUICtrlSetCursor(-1, 0)
    SetBitmap($gui, $hImage, 0xFF)
    GUISetState(@SW_SHOW, $gui)
    $handle = SetError(0, $gui, $GUIActiveX);
    ;~ MsgBox(0,"", $handle)

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

    ReDim $aHover[UBound($aHover)][5];
    $aHover[UBound($aHover) - 1][0] = $handle
    $aHover[UBound($aHover) - 1][1] = $gui
    $aHover[UBound($aHover) - 1][2] = $hImage
    $aHover[UBound($aHover) - 1][3] = $hImageHover
    $aHover[UBound($aHover) - 1][4] = False;

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

    If ($iHover == False) Then
    AdlibRegister("_GUICheckHoverButtons", 200);
    $iHover = True
    EndIf

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

    Return $handle
    EndFunc ;==>_GUICtrlCreateImageButton

    [/autoit]

    Hat jemand eine Idee für mein Problem?

  • IE Rand ausblenden

    • Freaky
    • 11. März 2015 um 12:55
    Zitat von 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.

  • IE Rand ausblenden

    • Freaky
    • 8. März 2015 um 13:52
    Zitat von alpines

    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 :(

  • IE Rand ausblenden

    • Freaky
    • 8. März 2015 um 13:30

    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

  • Klammern Verschachtelung

    • Freaky
    • 29. Januar 2015 um 21:47

    Habe das Beispiel oben etwas erweitert.
    Jetzt würde es auf die aller este Klammer zutreffen, auf die zweite leider ja nicht mehr :(

  • Klammern Verschachtelung

    • Freaky
    • 29. Januar 2015 um 21:38

    Die Idee war gar nicht mal so doof :D
    Dies habe ich auch getan, leider besteht diese aus zich Funktionen und mich würde es auch für zukünftige Projekte interessieren und wie es z.B. SciTE mit den Klammern macht.

  • Klammern Verschachtelung

    • Freaky
    • 29. Januar 2015 um 21:19

    Hi,

    ich habe ein JSON Code den ich mit RegExp unterteilen möchte. Leider machen mir die Klammern zuschaffen.

    Code
    {"a":{"0":"b","1":["d","e"],"c":{"0":"f","g":"h"}},"0":"i","j":"k","l":{"0":"m","n":"o","p":{"q":"r"}}}


    Ich bekomme es einfach nicht hin, dass RegExp selbständig erkennt welche offene Klammer zu welcher geschlossenen Klammer passt.
    Kennt jemand euch eine Lösung zu so einem Problem?
    Und nein ich möchte keine Alternativen hören ausser die mir zeigen wie ich solche Klammern lösen kann :D

    mfg, Freaky

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 17:09

    Ich dachte jetzt eher an etwas Simples :D

    Ich habe das mal mit dem Taschenrechner versucht nachzubauen und kam auf folgendes:
    Man guckt sich die Breite & Länge des Bildes an, wenn eins davon größer ist als die Breite bzw. Länge vom Bildschirm, dann wird die Breite bzw. Länge des Bildschirmes durch die Breite bzw. Länge des Bildes geteilt. Dieser Faktor wird dann bei der anderen Seite angewendet und schon hat man das Bild in der Größe der Breite bzw. Länge des Bildschirmes und dann den Rest.

    Leider wird bei mir hiermit nichts angezeigt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global $sImageDir = "./images", $iTimerChange = 10000, $iTimer = 9999999000

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

    $Form1 = GUICreate("Form1", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x000000)
    $Pic1 = GUICtrlCreatePic("", 0, 0, @DesktopWidth, @DesktopHeight)
    GUISetState(@SW_SHOW)

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

    While 1
    SetImage()
    Buttons()
    WEnd

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

    Func SetImage()
    if FileExists ($sImageDir) Then
    $aImages = _FileListToArray ($sImageDir, "*.jpg");
    if (UBound($aImages) > 0) Then
    For $i = 1 To UBound ($aImages)-1
    While 1
    Buttons()
    If (TimerDiff($iTimer) >= $iTimerChange) Then
    $hImage = _GDIPlus_ImageLoadFromFile($sImageDir & "/" & $aImages[$i])
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)

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

    if ($iX > $iY And $iX > @DesktopWidth) Then
    $iCalc = $iX / @DesktopWidth
    ;~ MsgBox (0,"",@DesktopHeight / 2 - $iY / $iCalc / 2)
    GUICtrlSetPos ($Pic1, @DesktopWidth, @DesktopHeight / 2 - $iY / $iCalc / 2, @DesktopWidth, $iY)
    ElseIf ($iY > $iX And $iY > @DesktopHeight) Then
    $iCalc = $iY / @DesktopHeight
    ;~ MsgBox (0,"",@DesktopWidth / 2 - $iX / $iCalc / 2 & " x " & @DesktopHeight)
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / $iCalc / 2, @DesktopHeight, $iX / $iCalc, @DesktopHeight)
    Else
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / 2, @DesktopHeight / 2 - $iY / 2, $iX, $iY)
    EndIf

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

    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);

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

    ExitLoop
    EndIf
    WEnd
    $iTimer = TimerInit()
    Next
    EndIf
    EndIf
    ;~ exit;
    EndFunc

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

    Func Buttons()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    EndFunc

    [/autoit]

    /Edit:
    Okay, es funktioniert doch :D
    Habe es etwas aufgeräumt. Komischerweise kann ich das Bild nach _GDIPlus_ImageLoadFromFile nicht mehr einbinden :(

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global $sImageDir = "./images", $iTimerChange = 10000, $iTimer = 9999999000

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

    $Form1 = GUICreate("Form1", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x000000)
    $Pic1 = GUICtrlCreatePic("", 0, 0, @DesktopWidth, @DesktopHeight)
    GUISetState(@SW_SHOW)

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

    While 1
    SetImage()
    Buttons()
    WEnd

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

    Func SetImage()
    if FileExists ($sImageDir) Then
    $aImages = _FileListToArray ($sImageDir, "*.jpg");
    if (UBound($aImages) > 0) Then
    For $i = 1 To UBound ($aImages)-1
    While 1
    Buttons()
    If (TimerDiff($iTimer) >= $iTimerChange) Then
    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);
    $hImage = _GDIPlus_ImageLoadFromFile($sImageDir & "/" & $aImages[$i])
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)

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

    if ($iX > $iY And $iX > @DesktopWidth) Then
    $iCalc = $iX / @DesktopWidth
    $iX = @DesktopWidth
    $iY = $iY / $iCalc
    ElseIf ($iY > $iX And $iY > @DesktopHeight) Then
    $iCalc = $iY / @DesktopHeight
    $iX = $iX / $iCalc
    $iY = @DesktopHeight
    EndIf

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

    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / 2, @DesktopHeight / 2 - $iY / 2, $iX, $iY)

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

    ExitLoop
    EndIf
    WEnd
    $iTimer = TimerInit()
    Next
    EndIf
    EndIf
    ;~ exit;
    EndFunc

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

    Func Buttons()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    EndFunc

    [/autoit]

    Wenn man das jetzt ausprobiert, merkt man schnell, dass die Bilder teilweise echt unscharf sind. Gibt es dafür eine Lösung?

    /Edit2:
    Neues Problem: Die Bilder die bereits 1x aufgerufen worden sind, können kein zweites mal angezeigt werden :(
    Ich vermute das liegt an _GDIPlus_ImageLoadFromFile, wie kann ich den die Verbindung trennen?

    /Edit3:
    Das Problem mit dem erneuten einlesen habe ich hiermit gelöst: _GDIPlus_ImageDispose($hImage)
    Ein anderes Problem ist, dass AutoIt extrem lange braucht um Bilder einzulesen. Dadurch wird vorherige Bild "zerstört", wenn die Größe anders ist und dies sieht man dann ca. 1-2 Sekunden.

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 15:29

    Danke schaue ich mir gleich an :)

    Ich habe aber gerade ein anderes Problem was ich mit meinem logischen Denken nicht hinbekomme :D
    Mein Bild hat die Größe 3264 x 4928 Pixel. Mein Desktop jedoch nur 1440 x 900 Pixel.
    Wie bekomme ich jetzt das Bild auf diese Größe, sodass es nicht "verkrüppelt" ist am Ende?
    Das sollte aber auch mit Bildern funktionieren wo die Größe umgekehrt ist, also 4928 x 3264

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 15:13

    Genau, habe an $WS_POPUP gedacht :D (ist ja ne Variable :P, ja ich weiß, dass es ein Style ist :D)

    @alpines
    Das würde ich eh anstatt der WinAPI Befehle benutzen :)
    Dankeschön :)

    Öhm mir kam gerade noch ein Gedanke.
    Ist es möglich, wenn ich gerade die Bilder tausche, dass eins verblasst und eins so auftaucht? Also dass es nicht so abrubt auftaucht.

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 14:43

    Genau das meinte ich :D
    Ob ich das eventuell umgehen könnte vll mit irgend einem Befehl, aber anscheinend ja nicht :D

    Der Tipp für Vollbild einer GUI wäre auch noch nett :)

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 14:23

    Dankeschön. Ich werde mich mit den Bildergrößen auseinander setzen.

    Zum Fenster ... ich werde das Fenster als Vollbild haben und möchte dann in dem Fenster das Bild genau zentriert in der Mitte anzeigen lassen.
    Ich könnte jetzt natürlich max. Länge vom Fenster durch 2 teilen minus max. Länge vom Bild durch 2 teilen und so die Mitten bestimmen (natürlich das selbe noch mit der Höhe) aber geht das nicht vielleicht sogar etwas leichter?

    ps: Weiß jemand die Variable für Vollbild auswendig? :D

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 13:12

    Ja, das ist mir bewust.
    Aber hab mal 2 Monitore an, mach die Diashow auf einem an und auf dem zweiten Monitor pack mal mehr Bilder in den Ordner rein. Du wirst sehen, dass die Diashow die Bilder nicht mit einschliesst. Diese werden ignoriert.

  • Diashow Bilder richtig anzeigen

    • Freaky
    • 23. Januar 2015 um 12:55

    Moin,

    ich wurde von einer Freundin gebeten im Internet mal zu gucken ob es ein Diashow Programm gibt, was einfach alle Bilder aus einem Ordner anzeigt. Hierbei sollte es aber so sein, dass wenn neue Bilder hinzu kommen, dass diese automatisch mit benutzt werden.

    Habe leider nichts im Internet gefunden und wollte daher eben was eigenes erstellen.
    Den Grundgedanken habe ich schon mal, einfach alle Bilder jedes mal einlesen und in einer Gui anzeigen lassen.

    Jetzt zur Frage.
    Bilder können Wagerecht und Senkrecht gemacht werden, sprich die Größen sind anders.
    Wie kann ich die Größe von einem Bild einlesen und es genau in der Mitte einer nicht definierbaren GUI (sprich habe keine feste Größe des Fensters) anzeigen zu lassen?

    MfG
    Freaky

  • BitXOR rückwerts

    • Freaky
    • 13. Oktober 2014 um 16:29

    Muss man denn immer nach dem Hintergrund fragen? :P

    Naja ich habe 2 Funktionen, eine zum entschlüsseln und eine zum verschlüsseln. Diese arbeiten aber mit normalen Strings. Mit den String mit welchen ich Arbeite kommt aber AutoIt nicht klar und baue diese Funktionen in Binär um und dabei ist mir halt dieser Fehler ins Auge gesprungen den ich versuche zu beheben :)

  • BitXOR rückwerts

    • Freaky
    • 13. Oktober 2014 um 16:22

    Moin,

    ich habe folgendes Script:

    [autoit]

    $var = Asc("a") ; -> 97
    $temp = BitXOR($var - 0xF, 0xC3)

    [/autoit]

    Ich möchte jetzt auf $temp wieder $var machen, leider kommt bei mir dann 99 raus.

    [autoit]

    $var = Asc("a") ; -> 97
    $temp = BitXOR($var - 0xF, 0xC3)
    $temp = BitXOR($temp + 0xF, 0xC3)
    MsgBox (0,"",$var & @CRLF & $temp)

    [/autoit]


    Wenn ich aber 0xF und 0xC3 beim zweiten anpasse, dann stimmt das ganze wiederum bei z.B. b bzw. 98 nicht mehr.

    Weiß da jemand weitert?

  • Binary zu ASCII Array

    • Freaky
    • 13. Oktober 2014 um 15:25

    Ich möchte aber kein "z" raushaben, sondern ein "122" :D

    Aber ich habe es gerade durch zufall rausbekommen, muss beim Binären das 0x entfernen und dann Dec benutzen :D

  • Binary zu ASCII Array

    • Freaky
    • 13. Oktober 2014 um 14:52

    Moin,

    ich bin auf der Suche nach einer Möglichkeit 0x7A (ist ein z) zu 122 umzuwandeln.
    Ich darf aber 0x7A nicht zu z umwandeln und dann Asc benutzen da "meine" Zeichen von AutoIt falsch verstanden werden und ich somit Binär arbeiten muss.

    Gibt es da eine Möglichkeit?

    MfG,
    Freaky

  • Netzwerkadapter de & aktivieren

    • Freaky
    • 2. September 2014 um 15:06

    Vielen Dank.
    Beides funktioniert bestens :)

    Weiß einer von euch vielleicht sogar wie ich es in den Autostart bekomme, sodass ich nicht extra die Adminrechte geben muss bzw. dass es sich die automatisch nimmt? :/

  • Netzwerkadapter de & aktivieren

    • Freaky
    • 1. September 2014 um 16:55

    Moin,

    ich bin schon etwas länger nach einer Lösung für mein Problem. Leider habe ich dazu nichts gefunden und wollte mir mein Lösungsweg mit AutoIt etwas vereinfachen :)

    Problem

    Jedes mal, wenn ich mein Laptop (MacBook Pro, Win8 64bit) anmache, dann verbindet mein WLAN zum Router ... aber ich habe kein Internet. Um das Problem zu lösen muss ich den WLAN Adapter deaktivieren und aktivieren. Dann funktioniert alles wieder super.
    Sachen wie neue Treiber etc. habe ich bereits probiert.

    Folgendes habe ich bereits gefunden und probiert:

    [autoit]

    #RequireAdmin
    Local Const $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20

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

    _WinWMI_NetworkAdapter_SetState("WiFi", "Disable")
    ;~ _WinWMI_NetworkAdapter_SetState("WiFi", "Enable")

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

    Func _WinWMI_NetworkAdapter_SetState(Const $sAdapterName, Const $sSetState, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = '" & $sAdapterName & "'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($oList) = 0 Or Not IsAdmin() Then Return SetError(-2, @error, 0)
    For $oItem In $oList
    Local $errorlevel = 1
    If $sSetState = "Disable" Then $errorlevel = $oItem.Disable()
    If $sSetState = "Enable" Then $errorlevel = $oItem.Enable()
    If $errorlevel <> 0 Then Return SetError(-3, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_NetworkAdapter_SetState

    [/autoit]

    Wie ich auf den Namen "WiFi" komme:
    [Blockierte Grafik: http://picul.de/view/n-R]

    Mache ich da jetzt irgend etwas vollkommen falsch oder habe ich da einfach irgendetwas missverstanden?

    Ich würde mich eure Hilfe sehr freuen :)

    MfG,
    Freaky

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™