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. UEZ

Beiträge von UEZ

  • [GDI+] Programmumschaltungs(Alt-Tab)-GUI nachprogrammieren

    • UEZ
    • 30. Oktober 2012 um 00:49

    Hmm, ich arbeite ausschließlich unter Win7 X64, wobei standardmäßig x86 Code ausgeführt wird. Vielleicht liegt's ja daran, dass es bei mir funzt.

    Die Anordnung der Bilder in der GUI ist noch buggy, aber jetzt habe ich keine Lust mehr, das zu fixen.

    Vielleicht irgend wann mal...

    Gruß,
    UEZ

  • [GDI+] Programmumschaltungs(Alt-Tab)-GUI nachprogrammieren

    • UEZ
    • 30. Oktober 2012 um 00:35

    Hier ein "Fast Hack" und nicht voll getestet:

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ 2012 build 2012-10-30
    #AutoIt3Wrapper_Compile_Both=n
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
    #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
    #AutoIt3Wrapper_UseUPX=y
    #AutoIt3Wrapper_UPX_Parameters=--best --lzma
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <GDIPlus.au3>
    #include <File.au3>
    #include <Constants.au3>
    #include <Array.au3>

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

    Opt('MustDeclareVars', 1)

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

    If Not _WinAPI_DwmIsCompositionEnabled() Then Exit MsgBox(16, 'Error', 'Require Windows Vista or later with enabled Aero theme.')

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

    _GDIPlus_Startup()

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

    Global Const $iW = 128, $iH = 128, $iSpace = 32, $iDW = Max(@DesktopWidth * 0.3, @DesktopWidth * 0.9), $iFont = 12, $iDeltaFrame = 8

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

    Global $sPathKey = "HKLM64\SOFTWARE\AutoIt v3\AutoIt\"
    If @OSArch = "x64" Then $sPathKey = "HKLM\SOFTWARE\Wow6432Node\AutoIt v3\AutoIt\"
    Global $sPath = RegRead($sPathKey, "InstallDir") & "\Examples\GUI\"

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

    Global $aList = CreateImageArray($sPath, $iW, $iH)
    If @error Then Exit MsgBox(16, "Error", "No images found")

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

    Global $iImages = UBound($aList)
    Global $iColum = Floor($iDW / ($iW + $iSpace))
    Global $iRow = Ceiling($iImages / $iColum)

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

    Global Const $STM_SETIMAGE = 0x0172
    Global $iGUI_W = Min($iDW, $iImages * ($iSpace + $iW)), $iGUI_H = $iRow * ($iSpace + $iH) + 1.5 * $iFont + $iDeltaFrame * 5
    Global $hGUI = GUICreate("Alt+Tab Preview Like Window by UEZ 2012 beta", $iGUI_W, $iGUI_H, -1, -1, 0, $WS_EX_DLGMODALFRAME)
    GUISetBkColor(0)
    _WinAPI_DwmExtendFrameIntoClientArea($hGUI)
    Global $iLabel = GUICtrlCreateLabel("", 0, 0, $iGUI_W, $iFont * 1.75, $SS_CENTER)
    GUICtrlSetBkColor(-1, -2)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, $iFont, 400, 0, "Tahoma", 5)

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

    Global $j = 0, $x = 0, $y = 0, $hHBITMAP, $iYPos

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

    Do
    $iYPos = 1.5 * $iFont + $iSpace / 2 + $y * ($iH + $iSpace)
    $aList[$j][1] = GUICtrlCreateLabel("", -$iDeltaFrame + $iSpace / 2 + $x * ($iSpace + $iW), -$iDeltaFrame + $iYPos, $iW + $iDeltaFrame * 2, $iH + $iDeltaFrame * 2, Default, Default)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetBkColor(-1, 0x0)
    $aList[$j][2] = GUICtrlCreatePic("", $iSpace / 2 + $x * ($iSpace + $iW), $iYPos, $iW, $iH, Default, Default)
    $aList[$j][3] = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aList[$j][0])
    _WinAPI_DeleteObject(GUICtrlSendMsg($aList[$j][2], $STM_SETIMAGE, $IMAGE_BITMAP, $aList[$j][3]))
    $aList[$j][5] = 0
    $x = Mod($x + 1, $iColum)
    If Not $x Then $y = Mod($y + 1, $iRow)
    $j += 1
    Until $j = UBound($aList)
    GUISetState()

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

    Global $aChk
    Do
    If WinActive($hGUI) Then
    $aChk = GUIGetCursorInfo($hGUI)
    Hover($aChk[4], $aList, $aChk[2])
    EndIf
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    GUIDelete()

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

    ;release ressources
    For $j = 0 To UBound($aList) - 1
    _WinAPI_DeleteObject($aList[$j][3])
    _GDIPlus_BitmapDispose($aList[$j][0])
    Next
    _GDIPlus_Shutdown()
    Exit

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

    Func Hover($idCtrl, ByRef $array, $bPrimDown = False)
    Local Static $iElement
    Local $k
    For $k = 0 To UBound($array) - 1
    If $array[$k][2] = $idCtrl Then
    If $bPrimDown = 1 Then
    ShellExecute($array[$k][4])
    $bPrimDown = False
    Sleep(500)
    EndIf
    If $iElement <> $idCtrl Then ;check to avoid flickering
    GUICtrlSetData($iLabel, $array[$k][4])
    GUICtrlSetBkColor($array[$k][1], 0x101050)
    GUICtrlSetStyle($aList[$k][1], Default, $WS_EX_STATICEDGE)
    $iElement = $idCtrl
    $array[$k][5] = 1
    EndIf
    Else
    If $array[$k][5] = 1 Then ;check to avoid flickering
    GUICtrlSetBkColor($array[$k][1], 0x0)
    GUICtrlSetStyle($aList[$k][1], Default, 0)
    $array[$k][5] = 0
    $iElement = -1
    EndIf
    EndIf
    Next
    EndFunc ;==>Hover

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

    Func Min($a, $b)
    If $a < $b Then Return $a
    Return $b
    EndFunc ;==>Min

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

    Func Max($a, $b)
    If $a > $b Then Return $a
    Return $b
    EndFunc ;==>Max

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

    Func CreateImageArray($sPath, $iW_TN = 128, $iH_TN = 128)
    Local $aFiles = _FileListToArray($sPath, "*", 1)
    If Not IsArray($aFiles) Then Return SetError(1, 0, 0)
    Local $sExt = "JPG|BMP|GIF|PNG|"
    Local $i = 0
    While $i < UBound($aFiles) - 1
    If Not StringInStr($sExt, StringRight($aFiles[$i], 3)) Then
    _ArrayDelete($aFiles, $i)
    Else
    $i += 1
    EndIf
    WEnd
    Local $iUB = UBound($aFiles) - 1
    If Not $iUB Then Return SetError(2, 0, 0)
    Local $aResult[$iUB + 1][6], $hImage, $hBmp, $hCtxt, $iW, $iH, $w, $h, $f
    For $i = 0 To $iUB
    $aResult[$i][4] = $sPath & $aFiles[$i]
    $hImage = _GDIPlus_ImageLoadFromFile($aResult[$i][4])
    $iW = _GDIPlus_ImageGetWidth($hImage)
    $iH = _GDIPlus_ImageGetHeight($hImage)

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

    $hBmp = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_TN, "int", $iH_TN, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
    $aResult[$i][0] = $hBmp[6]
    $hCtxt = _GDIPlus_ImageGetGraphicsContext($aResult[$i][0])

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

    If $iW < $iW_TN And $iH < $iH_TN Then
    _GDIPlus_GraphicsDrawImageRect($hCtxt, $hImage, $iW_TN / 2 - $iW / 2, $iH_TN / 2 - $iH / 2, $iW, $iH)
    Else
    If $iW > $iH Then
    $f = $iW / $iW_TN
    Else
    $f = $iH / $iH_TN
    EndIf
    $w = Int($iW / $f)
    $h = Int($iH / $f)
    _GDIPlus_GraphicsDrawImageRect($hCtxt, $hImage, $iW_TN / 2 - $w / 2, $iH_TN / 2 - $h / 2, $w, $h)
    EndIf
    _GDIPlus_GraphicsDispose($hCtxt)
    _GDIPlus_ImageDispose($hImage)
    Next
    Return $aResult
    EndFunc ;==>CreateImageArray

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

    Func _WinAPI_DwmExtendFrameIntoClientArea($hWnd, $tMARGINS = 0)
    If Not IsDllStruct($tMARGINS) Then
    $tMARGINS = _WinAPI_CreateMargins(-1, -1, -1, -1)
    EndIf
    Local $Ret = DllCall('dwmapi.dll', 'uint', 'DwmExtendFrameIntoClientArea', 'hwnd', $hWnd, 'ptr', DllStructGetPtr($tMARGINS))
    If @error Then
    Return SetError(1, 0, 0)
    Else
    If $Ret[0] Then
    Return SetError(1, $Ret[0], 0)
    EndIf
    EndIf
    Return 1
    EndFunc ;==>_WinAPI_DwmExtendFrameIntoClientArea

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

    Func _WinAPI_CreateMargins($iLeftWidth, $iRightWidth, $iTopHeight, $iBottomHeight)
    Local $tMARGINS = DllStructCreate($tagMARGINS)
    DllStructSetData($tMARGINS, 1, $iLeftWidth)
    DllStructSetData($tMARGINS, 2, $iRightWidth)
    DllStructSetData($tMARGINS, 3, $iTopHeight)
    DllStructSetData($tMARGINS, 4, $iBottomHeight)
    Return $tMARGINS
    EndFunc ;==>_WinAPI_CreateMargins

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

    Func _WinAPI_DwmIsCompositionEnabled()
    Local $Ret = DllCall('dwmapi.dll', 'uint', 'DwmIsCompositionEnabled', 'int*', 0)
    If @error Then
    Return SetError(1, 0, 0)
    Else
    If $Ret[0] Then
    Return SetError(1, $Ret[0], 0)
    EndIf
    EndIf
    Return $Ret[1]
    EndFunc ;==>_WinAPI_DwmIsCompositionEnabled

    [/autoit]

    Gruß,
    UEZ

  • Ladebalken im Batch Programmieren an einer If schleife hängend geht das?

    • UEZ
    • 29. Oktober 2012 um 16:28

    Vielleicht so was hier?:

    Code
    @setlocal
    @echo off
    echo.
    echo Pinging 127.0.0.1 ...
    echo.
    for /l %%i in (1,1,5) do call :Progress %%i
    echo.
    echo.
    echo Done.
    goto :EOF
    
    
    :Progress
    echo.|set /p = "*"
    ping 127.0.0.1 -n 3 >NUL: 2^>^&1
    goto :EOF
    
    
    endlocal
    Alles anzeigen

    Gruß,
    UEZ

  • Operation Ungleich, was mache ich falsch

    • UEZ
    • 29. Oktober 2012 um 15:21

    Um x Zahlen zu prüfen, ob mind. eine doppelt vorkommt, würde ich nicht If ... Then benutzen, so wie in dem Beispiel, sondern würde die Zahl in ein Array schreiben, das Array sortieren und einfach die Zahl z.B. aufsteigen prüfen.
    Z.B. so was hier:

    [autoit]


    #include <Array.au3>
    Global $aZahlen[6]

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

    Do
    For $i = 0 To 5
    $aZahlen[$i] = Random(1, 49, 1)
    Next
    Until Check($aZahlen)
    _ArrayDisplay($aZahlen)

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

    Func Check($aZahlen)
    _ArraySort($aZahlen)
    Local $i = 0
    Do
    If $aZahlen[$i] = $aZahlen[$i + 1] Then Return 0
    $i += 1
    Until $i = UBound($aZahlen) - 1
    Return 1
    EndFunc

    [/autoit]


    Gruß,
    UEZ

  • Operation Ungleich, was mache ich falsch

    • UEZ
    • 29. Oktober 2012 um 14:41

    Probiere es mal damit:

    [autoit]


    While 1
    $Zahl1 = Random(1, 3, 1)
    $Zahl2 = Random(1, 3, 1)
    $Zahl3 = Random(1, 3, 1)

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

    Sleep(10)
    If $Zahl1 <> $Zahl2 And $Zahl1 <> $Zahl3 And $Zahl2 <> $Zahl3 Then
    MsgBox(0,"","Zahl 1 und 2 und 3 sind ungleich" & @CRLF & $Zahl1 & ":" & $Zahl2 & ":" & $Zahl3 & ":")
    ExitLoop
    EndIf
    WEnd

    [/autoit]

    Gruß,
    UEZ

  • Geschwindigkeit (AutoIt, Blitz3D(BlitzBasic), FreeBASIC, Java, Python, Lua, Ruby, ActionScript)

    • UEZ
    • 27. Oktober 2012 um 19:25

    Ich kann mich hier nur Andy anschließen und wie er sagte, muss man erstmal die Rahmenbedingungen für die Tests abstecken und dann die Vergleiche machen.
    Ich persönlich wäre nicht in der Lage in all den oben gelisteten Sprachen zu coden.

    Ich gebe auch BugFix recht, dass man kritische Bereiche bzgl. der Laufzeit optimieren kann, z.B. mit ASM oder DLL's per FreeBasic erstellen und mit AutoIt benutzen.

    Diese Flexibilität ist das Geniale an AutoIt, wobei die anderen Sprachen dies auch beherrschen...


    Gruß,
    UEZ

  • guigetcrusorinfo einschränkung?

    • UEZ
    • 26. Oktober 2012 um 10:51

    Willst du abfragen, ob du mit der Maus auf ein Control klickst? Wenn ja, dann ist dies sicherlich nicht der eleganteste Weg!

    Gruß,
    UEZ

  • Threads mit 3 Monaten Inaktivität sperren

    • UEZ
    • 25. Oktober 2012 um 15:46

    Ich kann mich nur water anschließen. Warum mehr Aufwand betreiben? Was habt ihr gegen alte Threads? Und wann ist alt? Für mich wäre z.B. ein Thread alt, wenn dieser vor mehr als 5 Jahren eröffnet worden wäre, aber immer noch kein Grund ihn zu locken, wenn der Inhalt eben passt.

    Es macht keinen Sinn einen Thread auszugraben, wenn der Inhalt nicht mehr aktuell ist, sprich der Source Code von einer Uralt Version ist.

    Gruß,
    UEZ

  • Threads mit 3 Monaten Inaktivität sperren

    • UEZ
    • 25. Oktober 2012 um 11:40

    Richtig.

    Gruß,
    UEZ

  • Threads mit 3 Monaten Inaktivität sperren

    • UEZ
    • 25. Oktober 2012 um 11:31

    Ich persönlich freue mich auch auf Feedback von meinen älteren Threads!

    Deshalb wäre ich nicht dafür.

    Gruß,
    UEZ

  • GDI: Nur Pixel einer Farbe wiedergeben

    • UEZ
    • 24. Oktober 2012 um 20:46

    Stimmt, da war doch noch was... :P

    Gruß,
    UEZ

  • GDI: Nur Pixel einer Farbe wiedergeben

    • UEZ
    • 24. Oktober 2012 um 14:14

    Probiere es mal damit:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172

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

    Global $hImage = _GDIPlus_ImageLoadFromFile(StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\logo4.gif"))
    Global Const $iW = _GDIPlus_ImageGetWidth($hImage)
    Global Const $iH = _GDIPlus_ImageGetHeight($hImage)

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

    Global Const $hBmpCtxt = _GDIPlus_ImageGetGraphicsContext($hImage)

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

    _GDIPlus_GraphicsDrawString($hBmpCtxt, "TEST", 10, $iH / 6, "Arial", $iH / 2)
    Global $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)

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

    Global Const $hGUI = GUICreate("Vorher", $iW, $iH)
    Global Const $idPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap))
    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

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

    _GDIPlus_BitmapMask($hImage, "0xFF000000")

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

    _WinAPI_DeleteObject($hHBitmap)

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

    $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap))
    WinSetTitle($hGUI, "", "Nachher")

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

    Do
    Until GUIGetMsg() = -3

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

    _WinAPI_DeleteObject($hHBitmap)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_GraphicsDispose($hBmpCtxt)
    GUIDelete()
    Exit

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

    Func _GDIPlus_BitmapMask(ByRef $hBitmap, $sColor, $iMaskColor = 0xFFFFFFFF)
    Local $iX, $iY, $aResult
    For $iY = 0 To $iH
    For $iX = 0 To $iW
    $aResult = DllCall($ghGDIPDll, "uint", "GdipBitmapGetPixel", "handle", $hBitmap, "int", $iX, "int", $iY, "uint*", 0)
    If $aResult[4] <> $sColor Then DllCall($ghGDIPDll, "uint", "GdipBitmapSetPixel", "handle", $hBitmap, "int", $iX, "int", $iY, "uint", $iMaskColor)
    Next
    Next
    EndFunc

    [/autoit]

    Ist nicht die schnellste Lösung... Eigentlich was für ASM :D

    Gruß,
    UEZ

  • [GDI+] Programmumschaltungs(Alt-Tab)-GUI nachprogrammieren

    • UEZ
    • 20. Oktober 2012 um 22:51

    Das Problem ist, dass du von minimierten Fenstern kein Screenshot erstellen kannst. Windows scheint die Fenster alle vorher zu cachen!

    Ferner kannst du die DWM Thumbnail Funktion benutzen (siehe die _WinAPI_DwmUpdateThumbnailProperties.au3 Funktion aus der WinAPIEx.au3).

    Gruß,
    UEZ

  • WMI - Dienst beenden/neu starten über remote

    • UEZ
    • 17. Oktober 2012 um 17:50

    Kommst diese Fehlermeldung, wenn du dein Skript direkt startest oder wenn der Task Scheduler dies tut? Ferner musst du unter Windows 2008 einen RegKey setzen, damit du den Task mit Benutzerinformationen starten kannst.

    Code
    2147943712 Task Scheduler
    When trying to get the Task Scheduler to Run whether user is logged on or not. 
    
    
    After entering the credentials the following error is logged 2147943712
    
    
    
    
    
    
    To fix this up Change the following Registry key to value 0x0
    
    
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa 
    Value Name: disabledomaincreds 
    Value Type: REG_DWORD 
    Values: 0 (allow domain credentials to be stored)
    Alles anzeigen

    Du kannst dich nur mir Domänen Benutzerinformation an einem DC anmelden - lokale Accounts gibt es nicht mehr.

    Ich schmeiße mal meine VM DC an und werde mal dein Problem versuchen nachzustellen.

    Gruß,
    UEZ

  • WMI - Dienst beenden/neu starten über remote

    • UEZ
    • 16. Oktober 2012 um 11:21

    Die Fehlermeldung ist aber eindeutig!

    Zitat


    2012-10-15 23:50:18 : We intercepted a COM Error !

    err.description is: Zugriff verweigert
    err.windescription: Zugriff verweigert

    err.number is: 80020009

    Du musst einmal den Task Scheduler mit einem Account ausführen (i.d.R. ein Service Account) und das Skript muss nach dem Start durch den Task Scheduler die Verbindung zu WMI über das Login, was du mitgibst, erstellen.
    Laut der Fehlermeldung machst du irgendwas falsch!

    Ich denken, dass du die Login Anmeldeinformation in deinem Skript fest eingebunden hast oder?

    Gruß,
    UEZ

  • WMI - Dienst beenden/neu starten über remote

    • UEZ
    • 16. Oktober 2012 um 10:22

    "Zugriff verweigert" -> checke mal die Berechtigungen auf dem Server bzw. ob dein Acoount auf dem Server Zugriff auf den Client hat. Funktioniert DNS?

    Gruß,
    UEZ

  • Skalieren und SetBitmap

    • UEZ
    • 12. Oktober 2012 um 09:32

    Probiere es mal damit:

    Spoiler anzeigen
    [autoit]


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

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

    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 2)

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

    Global Const $AC_SRC_ALPHA = 1

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

    Global $hGui = GUICreate("Visu", 400, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlCreateButton("Zoom Out", 20, 20, 80, 25)
    GUICtrlSetOnEvent(-1, "_ZoomOut")
    GUISetState()

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

    _GDIPlus_Startup()
    Global $hImage = _GDIPlus_ImageLoadFromFile("Rect.png")
    Global $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage)
    $hImage = Scale_Image($hImage, $iW, $iH)
    Global $iPosX = 100, $iPosY = 100
    Global $hGuiChild = GUICreate("", $iW, $iH, $iPosX, $iPosY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGui)
    SetBitmap($hGuiChild, $hImage, 255)
    _GDIPlus_ImageDispose($hImage)
    _WinAPI_DeleteObject($hImage)
    GUISetState()

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

    Global $fDeltaX = _WinAPI_GetSystemMetrics(7), $fDeltaY = _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics(4)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ZoomOut()
    Local $_hImage = _GDIPlus_ImageLoadFromFile("Rect.png")
    Local $_fScale = 1.0
    Local $newW, $newH, $aPos, $aSize
    For $i = 250 To 0 Step -10
    $_fScale -= 0.02
    $newW = _GDIPlus_ImageGetWidth($_hImage) * $_fScale
    $newH = _GDIPlus_ImageGetHeight($_hImage) * $_fScale
    $_hImageNew = Scale_Image($_hImage, $newW, $newH)
    SetBitmap($hGuiChild, $_hImageNew, $i)
    $aPos = WinGetPos($hGui)
    WinMove($hGuiChild, "", $iPosX + $fDeltaX + $aPos[0] + ($iW - $newW) / 2, $iPosY + $fDeltaY + $aPos[1] + ($iH - $newH) / 2)
    Sleep(20)
    Next
    _GDIPlus_ImageDispose($_hImage)
    _WinAPI_DeleteObject($_hImage)
    EndFunc

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

    Func _Exit()
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func Scale_Image($hImage, $newW, $newH)
    Local $newImage = _GDIPlus_BitmapCreateFromScan0($newW, $newH)
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($newImage)
    _GDIPlus_GraphicsSetInterpolationMode($hContext, 7)
    _GDIPlus_GraphicsDrawImageRect($hContext, $hImage, 0, 0, $newW, $newH)
    _GDIPlus_GraphicsDispose($hContext)
    Return SetError(0, 0, $newImage)
    EndFunc

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

    Func _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aResult[6]
    EndFunc ;==>_GDIPlus_BitmapCreateFromScan0

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

    Func _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hGraphics, "int", $iInterpolationMode)
    If @error Then Return SetError(@error, @extended, False)
    Return $aResult[0] = 0
    EndFunc ;==>_GDIPlus_GraphicsSetInterpolationMode

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

    Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

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

    $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", $AC_SRC_ALPHA)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 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]

    Gruß,
    UEZ

  • Alles Gute! progandy wird 22!

    • UEZ
    • 11. Oktober 2012 um 21:16

    Bevor der Tag zu Ende geht, schließe ich mich den Vorrednern an und wünsche alles gute zum Geburtstag, Gesundheit und viel Erfolg im Studium.

    Gruß,
    UEZ

  • Kfz-Kennzeichen

    • UEZ
    • 10. Oktober 2012 um 09:16

    Hi Oscar,

    nettes, kleines Tool!

    Cool wäre es, wenn man noch den mittleren und letzten Teil des Kennzeichens ändern könnte. Man könnte sich "schöne" Kennzeichnen basteln, wie z.B. BO ND 007.

    Gruß,
    UEZ

  • Water hat Geburtstag!!!

    • UEZ
    • 8. Oktober 2012 um 15:49

    Auch auf dieser Seite ein Happy Birthday und alles Gute!

    Gruß,
    UEZ

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™