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

Beiträge von eukalyptus

  • [GDI+/GDI/Sonstiges] VSync nachrüsten mit D2D

    • eukalyptus
    • 24. Mai 2016 um 08:10

    Sehr interessant!

    Alternativ hätte ich diese Version, welche nur mehr eine globale Variable verwendet und etwas schlanker ist:

    Code
    #include-once
    
    
    
    
    Global $__t_VSYNC
    
    
    
    
    Func _VSync_Startup()
    	If IsDllStruct($__t_VSYNC) Then Return True
    
    
    	$__t_VSYNC = DllStructCreate("struct; handle Dll; hwnd Gui; ptr Fac; ptr Tar; endstruct; ")
    	$__t_VSYNC.Dll = DllOpen('d2d1.dll') ; Direct2D Dll
    	If @error Or Not $__t_VSYNC.Dll Then Return SetError(1, 1, False)
    
    
    	$__t_VSYNC.Gui = GUICreate("VSync", 1, 1, 0, 0, 0x80000000) ; GUI mit der Größe 1x1px oben links im Bildschirm, unsichtbar
    
    
    	Local $tIID_ID2D1Factory = DllStructCreate("struct; ulong Data1; ushort Data2; ushort Data3; byte Data4[8]; endstruct; ")
    	DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", "{06152247-6f50-465a-9245-118bfd3b6007}", "struct*", $tIID_ID2D1Factory)
    	Local $aResult = DllCall($__t_VSYNC.Dll, "int", "D2D1CreateFactory", "uint", 0, "struct*", $tIID_ID2D1Factory, "uint*", 0, "ptr*", 0)
    	If @error Or $aResult[0] Or Not $aResult[4] Then
    		_VSync_Shutdown()
    		Return SetError(1, 2, False)
    	EndIf
    	$__t_VSYNC.Fac = $aResult[4]
    
    
    	Local $pHwndRenderTarget, $tRenderTargetProperties = DllStructCreate("struct; uint Type; uint PixelFormat; uint AlphaMode; float DpiX; float DpiY; uint Usage; uint MinLevel; endstruct; ")
    	Local $tHWNDRenderTargetProperties = DllStructCreate("struct; hwnd Hwnd; uint Width; uint Height; uint PresentOptions; endstruct; ")
    	$tHWNDRenderTargetProperties.Hwnd = $__t_VSYNC.Gui
    	$tHWNDRenderTargetProperties.Width = 1
    	$tHWNDRenderTargetProperties.Height = 1
    
    
    	Local $tObj = DllStructCreate("struct; ptr VTBL; endstruct; ", $__t_VSYNC.Fac)
    	Local $tCall = DllStructCreate("struct; ptr[15]; endstruct; ", $tObj.VTBL)
    	$aResult = DllCallAddress("int", DllStructGetData($tCall, 1, 15), "struct*", $__t_VSYNC.Fac, "struct*", $tRenderTargetProperties, "struct*", $tHWNDRenderTargetProperties, "ptr*", 0)
    	If @error Or $aResult[0] Or Not $aResult[4] Then
    		_VSync_Shutdown()
    		Return SetError(1, 3, False)
    	EndIf
    	$__t_VSYNC.Tar = $aResult[4]
    
    
    	Return $__t_VSYNC
    EndFunc   ;==>_VSync_Startup
    
    
    
    
    Func _VSync_Shutdown()
    	If Not IsDllStruct($__t_VSYNC) Then Return SetError(1, 1, False)
    	Local $tObj, $tCall, $aResult
    
    
    	If $__t_VSYNC.Tar Then
    		$tObj = DllStructCreate("struct; ptr VTBL; endstruct; ", $__t_VSYNC.Tar)
    		$tCall = DllStructCreate("struct; ptr[3]; endstruct; ", $tObj.VTBL)
    		$aResult = DllCallAddress("int", DllStructGetData($tCall, 1, 3), "struct*", $__t_VSYNC.Tar) ;Release
    	EndIf
    
    
    	If $__t_VSYNC.Fac Then
    		$tObj = DllStructCreate("struct; ptr VTBL; endstruct; ", $__t_VSYNC.Fac)
    		$tCall = DllStructCreate("struct; ptr[3]; endstruct; ", $tObj.VTBL)
    		$aResult = DllCallAddress("int", DllStructGetData($tCall, 1, 3), "struct*", $__t_VSYNC.Fac) ;Release
    	EndIf
    
    
    	GUIDelete($__t_VSYNC.Gui)
    	DllClose($__t_VSYNC.Dll)
    	$__t_VSYNC = Null
    	Return True
    EndFunc   ;==>_VSync_Shutdown
    
    
    
    
    Func _VSync_Wait()
    	If Not IsDllStruct($__t_VSYNC) Then Return SetError(1, 1, False)
    	Local $tObj = DllStructCreate("struct; ptr VTBL; endstruct; ", $__t_VSYNC.Tar)
    	Local $tCall = DllStructCreate("struct; ptr[50]; endstruct; ", $tObj.VTBL)
    	DllCallAddress("int", DllStructGetData($tCall, 1, 49), "struct*", $__t_VSYNC.Tar) ;BeginDraw
    	DllCallAddress("int", DllStructGetData($tCall, 1, 50), "struct*", $__t_VSYNC.Tar, "uint64*", 0, "uint64*", 0) ;EndDraw
    	Return True
    EndFunc   ;==>_VSync_Wait
    Alles anzeigen


    Um ganz auf globale Variablen zu verzichten, könnte man $__t_VSYNC auch als Return bzw. Byref übergeben...

  • AVI Compose Video UDF

    • eukalyptus
    • 13. Mai 2016 um 16:15
    Zitat von UEZ

    Super coooooool. :klatschen:

    Gibt es auch einen Frame Extractor? Könnte man benutzen, um z.B. GIF von Videos zu erzeugen.
    Kann man auch einen Video/Audio Codec benutzen?

    Das Test Video wird mit Media Player Classic gespiegelt angezeigt. WMP sieht's normal aus.


    FrameExtractor hinzugefügt -> Example 7
    Dazu muss natürlich ein passender Codec installiert sein.

    Die erstellten VIdeos sollten nun nicht mehr gespiegelt sein.

    VideoCompression:
    $iQuality Parameter von 1-100 ergibt ein komprimiertes Video im Video1-Codec
    $iQuality = -1 ergibt ein unkomprimiertes Video
    $bShowDialog = True öffnet das Codec-Fenster

    _AVIComp_CreateEx ermöglicht das Verwenden von anderen installierten Codecs - ist allerdings nicht mehr ganz so benutzerfreundlich.


    Evtl füge ich noch eine Funktion _AVIComp_Convert hinzu, welche dann mit ffmpeg von/zu dem gewünschten Format konvertiert, ohne dass ein Codec installiert sein muss.

  • AVI Compose Video UDF

    • eukalyptus
    • 11. Mai 2016 um 21:25

    Ich stelle euch hier meine neue UDF zum erstellen von AVI-Videos vor
    Ich hab versucht, es so einfach wie möglich zu gestalten: Siehe die 4 Beispiele ganz unten in AVIComp.au3


    Download: AVIComp.7z


    Hier noch ein etwas advancedteres Beispiel: Example.7z

    Viel Vergnügen und danke fürs Testen
    E

  • 3D Konzept in GDI+: Text Rotation auf Glaskugel / Globus Rotation

    • eukalyptus
    • 9. Mai 2016 um 09:35

    Da ist man mal einige Zeit nicht online und übersieht fast diese tollen Scripte :rock:

  • Revision 2016 - "The return of EvilBot"

    • eukalyptus
    • 31. März 2016 um 06:07

    Ohh - das könnte doch ein altes GDI+ Script von mir sein :thumbup:

  • Revision 2016 - "The return of EvilBot"

    • eukalyptus
    • 30. März 2016 um 02:45
    Zitat von Yaerox

    Bei UEZ fehlt mir aber der Schnurrbart auf dem Bild ;) Das Avatar ist einfach zu prägend...

    Mit dem Schnurrbart kann ich aushelfen - es gibt tatsächlich ein altes Bild von mir mit AutoIt-Shirt und Schnurrbart aus Mülltütenplastik:

    Spoiler anzeigen

    AutoIt.PNG


    Irgendwann bin ich bestimmt auch mal mit euch auf der Revision...

  • Icons extrahieren

    • eukalyptus
    • 22. März 2016 um 20:46
    AutoIt
    #include-once
    #include <WinAPI.au3>
    #include <WinAPIRes.au3>
    
    
    
    
    #include <Array.au3>
    
    
    
    
    
    
    Global $hGui = GUICreate("", 1000, 700)
    GUISetState()
    
    
    Global $hDC = _WinAPI_GetDC($hGui)
    
    
    
    
    Global $aIcons = _ExtractIcons("C:\Windows\System32\wucltux.dll")
    
    
    
    
    ConsoleWrite("+ IconCnt: " & $aIcons[0] & @CRLF)
    ;_ArrayDisplay($aIcons)
    
    
    Global $aIcon, $iX
    For $i=1 To $aIcons[0]
    	$aIcon = $aIcons[$i]
    	$iX = 10
    	For $j=1 To $aIcon[0][0]
    		ConsoleWrite("> " & $aIcon[$j][1] & "x" & $aIcon[$j][2] & " " & $aIcon[$j][3] & " " & $aIcon[$j][4] & @CRLF)
    		_WinAPI_DrawIconEx($hDC, $iX, ($i-1)*64 + 10, $aIcon[$j][0], $aIcon[$j][1], $aIcon[$j][2])
    		_WinAPI_DestroyIcon($aIcon[$j][0])
    		$iX += $aIcon[$j][2] + 10
    	Next
    Next
    
    
    
    
    
    
    
    
    While GUIGetMsg() <> -3
    WEnd
    
    
    
    
    _WinAPI_ReleaseDC($hGui, $hDC)
    
    
    
    
    
    
    
    
    Func _ExtractIcons($sIconFile)
    	Local $aIcnGrp[1]
    
    
    	Local $hInstance = _WinAPI_LoadLibraryEx($sIconFile, $LOAD_LIBRARY_AS_DATAFILE)
    	If @error Or Not $hInstance Then Return SetError(1, 1, $aIcnGrp)
    	Local $aResNames = _WinAPI_EnumResourceNames($hInstance, $RT_GROUP_ICON)
    	If @error Or Not IsArray($aResNames) Then Return SetError(1, 2, $aIcnGrp)
    
    
    	Local $hRes, $aRes[1]
    	For $i=1 To $aResNames[0]
    		$hRes = _WinAPI_FindResource($hInstance, $RT_GROUP_ICON, $aResNames[$i])
    		If @error Or Not $hRes Then ContinueLoop
    
    
    		$aRes[0]+=1
    		If $aRes[0] >= UBound($aRes) Then ReDim $aRes[$aRes[0]*2]
    		$aRes[$aRes[0]] = $hRes
    	Next
    	If $aRes[0] < 1 Then Return SetError(1, 3, $aIcnGrp)
    
    
    	ReDim $aIcnGrp[$aRes[0]+1]
    	$aIcnGrp[0] = $aRes[0]
    
    
    	Local $hData, $pData, $tData, $iData, $tIcon, $pTmp
    
    
    
    
    	Local $hGrp, $pGrp, $tGrp, $tEntry, $pEntry, $hIcn, $pIcn, $iIcn, $hIcon, $tSize
    	Local $aIcn[1][7] = [[0, "Width", "Height", "Bits", "Colors", "Planes", "ID"]]
    	For $i=1 To $aRes[0]
    		$hGrp = _WinAPI_LoadResource($hInstance, $aRes[$i])
    		If @error Or Not $hGrp Then ContinueLoop
    
    
    		$pGrp = _WinAPI_LockResource($hGrp)
    		$tGrp = DllStructCreate("ushort idReserved; ushort idType; ushort idCount; byte idEntries;", $pGrp)
    
    
    		ReDim $aIcn[DllStructGetData($tGrp, "idCount")+1][7]
    		$aIcn[0][0] = DllStructGetData($tGrp, "idCount")
    
    
    		$pEntry = DllStructGetPtr($tGrp, "idEntries")
    		For $j = 1 To DllStructGetData($tGrp, "idCount")
    			$tEntry = DllStructCreate("align 2; byte bWidth; byte bHeight; byte bColorCount; byte bReserved; ushort wPlanes; ushort wBitCount; uint dwBytesInRes; ushort nId;", $pEntry)
    
    
    			$aIcn[$j][1] = DllStructGetData($tEntry, "bWidth")
    			$aIcn[$j][2] = DllStructGetData($tEntry, "bHeight")
    			If $aIcn[$j][1] = 0 Then $aIcn[$j][1] = 256
    			If $aIcn[$j][2] = 0 Then $aIcn[$j][2] = 256
    
    
    			$hRes = _WinAPI_FindResource($hInstance, $RT_ICON, DllStructGetData($tEntry, "nId"))
    			If @error Or Not $hRes Then
    				For $k = 0 To 6
    					$aIcn[$j][$k] = ""
    				Next
    				ContinueLoop
    			EndIf
    
    
    			$aIcn[$j][3] = DllStructGetData($tEntry, "wBitCount")
    			$aIcn[$j][4] = DllStructGetData($tEntry, "bColorCount")
    			$aIcn[$j][5] = DllStructGetData($tEntry, "wPlanes")
    			$aIcn[$j][6] = DllStructGetData($tEntry, "nId")
    
    
    			$hIcn = _WinAPI_LoadResource($hInstance, $hRes)
    			$iIcn = _WinAPI_SizeOfResource($hInstance, $hRes)
    			$pIcn = _WinAPI_LockResource($hIcn)
    
    
    			$hIcon = _WinAPI_CreateIconFromResourceEx($pIcn, $iIcn)
    
    
    			$tSize = _WinAPI_GetIconDimension($hIcon)
    			ConsoleWrite("! " & DllStructGetData($tSize, 1) & @CRLF)
    
    
    			$aIcn[$j][0] = $hIcon
    
    
    			$pEntry += DllStructGetSize($tEntry)
    		Next
    
    
    		$aIcnGrp[$i] = $aIcn
    	Next
    
    
    	_WinAPI_FreeLibrary($hInstance)
    
    
    	Return $aIcnGrp
    EndFunc   ;==>_ExtractIconToFile
    Alles anzeigen
  • Icons extrahieren

    • eukalyptus
    • 22. März 2016 um 00:32
    AutoIt
    $pGrp = _WinAPI_LockResource($hGrp)
    $tGrp = DllStructCreate("ushort idReserved; ushort idType; ushort idCount; byte idEntries;", $pGrp)
    
    
    $pEntry = DllStructGetPtr($tGrp, "idEntries")
    For $j = 1 To DllStructGetData($tGrp, "idCount")
    	$tEntry = DllStructCreate("align 2; byte bWidth; byte bHeight; byte bColorCount; byte bReserved; ushort wPlanes; ushort wBitCount; uint dwBytesInRes; ushort nId;", $pEntry)
    
    
    	$pEntry += DllStructGetSize($tEntry)
    Next
    Alles anzeigen

    In den Bytes bWidth und bHeight gehen sich nur Werte aus zwischen 0..255 / 0x0..0xFF

    256 entsricht wieder 0 / 0x100!


    Ungetestet:
    Ein Icon mit 256x256 gibt es nur in 32Bit!?
    Also würde ich wBitCount auf den Wert 32 testen.

    Weiters glaube ich zu wissen, dass bei Icons 256x256px/32Bit die Bilddaten als PNG abgespeichert sind.
    Demnach müssten die Resourcedaten _WinAPI_FindResource($hInstance, $RT_ICON, DllStructGetData($tEntry, "nId"))
    mit einem PNG-Header beginnen.

    Wenn beides zutrifft, dann entspricht bWidth = 0 => 256


    Das mit dem PNG-Header kannst du dir wahrscheinlich sparen:

    AutoIt
    $hRes = _WinAPI_FindResource($hInstance, $RT_ICON, DllStructGetData($tEntry, "nId"))
    $hIcn = _WinAPI_LoadResource($hInstance, $hRes)
    $iIcn = _WinAPI_SizeOfResource($hInstance, $hRes)
    $pIcn = _WinAPI_LockResource($hIcn)
    $hIcon = _WinAPI_CreateIconFromResourceEx($pIcn, $iIcn)

    Danahc einfach mit _WinAPI_GetIconDimension die Größe auslesen...

  • Icons extrahieren

    • eukalyptus
    • 21. März 2016 um 11:23

    Weil 256 = 0x100 ist!?

  • SSE Shuffle Explorer V2

    • eukalyptus
    • 7. März 2016 um 19:13

    Das liegt wohl daran, dass pshufb anders funktioniert als, pshufd/lw/hw

    Das Ziel-Register wird geshuffelt lt. den Bytes im zweiten Register.
    Byte 1 im zweiten Register enthält den Index, von welchem Byte das neue erste Byte abstammen soll...

    AutoIt
    #AutoIt3Wrapper_UseX64=n
    
    
    ;#include "FASM.au3"
    ;Global $pASM = _FASM_StructCreateBCA16(_FASM_Compile("_ASM_TEST_32"))
    Global $pASM = __StructCreateBCA16("0x8B442408F30F6F088B442404F30F6F00660F3800C1F30F7F00C20800")
    
    
    
    
    #ASM _ASM_TEST_32
    #	use32
    
    
    #	mov eax, [esp+8] ;tShuffle
    #	movdqu xmm1, [eax]
    
    
    #	mov eax, [esp+4] ;tBytes
    #	movdqu xmm0, [eax]
    
    
    #	pshufb xmm0, xmm1
    
    
    #	movdqu [eax], xmm0
    
    
    #	ret 8
    #ASMEND
    
    
    
    
    ConsoleWrite("> " & _Shuffle("ABCDEFGHIJKLMNOP", "0x000102030405060708090A0B0C0D0E0F") & @CRLF)
    ConsoleWrite("> " & _Shuffle("ABCDEFGHIJKLMNOP", "0x00000000000000000000000000000000") & @CRLF)
    ConsoleWrite("> " & _Shuffle("ABCDEFGHIJKLMNOP", "0x01010101010101010101010101010101") & @CRLF)
    ConsoleWrite("> " & _Shuffle("ABCDEFGHIJKLMNOP", "0x0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F") & @CRLF)
    ConsoleWrite("> " & _Shuffle("ABCDEFGHIJKLMNOP", "0x00000000010101010202020203030303") & @CRLF)
    
    
    
    
    Func _Shuffle($bIN, $bShuffle)
    	Local $tInOut = DllStructCreate("char[16];")
    	Local $tShuffle = DllStructCreate("byte[16];")
    
    
    	DllStructSetData($tInOut, 1, $bIN)
    	DllStructSetData($tShuffle, 1, $bShuffle)
    
    
    	DllCallAddress("none", $pASM, "struct*", $tInOut, "struct*", $tShuffle)
    
    
    	Return DllStructGetData($tInOut, 1)
    EndFunc   ;==>_Shuffle
    
    
    
    
    
    
    Func __StructCreateBCA16($bBinaryCode)
    	Local $iSize = BinaryLen($bBinaryCode)
    	Local $aResult = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", $iSize + 16, "dword", 0x00001000, "dword", 0x00000040)
    	If @error Or Not $aResult[0] Then Return SetError(1, 0, False)
    	Local $pStruct = Number($aResult[0])
    	$pStruct = $pStruct + 16 - Mod($pStruct, 16)
    	Local $tStruct = DllStructCreate("byte[" & $iSize & "];", $pStruct)
    	DllStructSetData($tStruct, 1, $bBinaryCode)
    	Return $pStruct
    EndFunc   ;==>__StructCreateBCA16
    Alles anzeigen


    Im Shuffle-Explorer kannst du via Drag&Drop (oben anklicken, unten loslassen) die gewünschte Reihenfolge festlegen und dann siehst du in "xmm1 Source", welche Bytes im zweiten Register stehen müssen (Auf Byte-Ansicht stellen -> <B> klicken)


    E

  • WMI FileSystemWatcher - Methode .NextEvent() kann nicht manuell verlassen werden

    • eukalyptus
    • 2. März 2016 um 16:48

    NextEvent hat einen TimeOut-Parameter: Mit $objEvent = $colEvents.NextEvent(1000) wartet die Methode 1 Sekunde lang.

    Allerdings triggert sie danach auch einen TimeOut-Error, welcher mit einem Eventhandler abgefangen werden muss. (Sonst stürzt das Script ab...)
    Am besten das Beispiel zu ObjEvent hernehmen:
    $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")

  • CPU effektiver bei Script Ausführung einsetzten

    • eukalyptus
    • 1. März 2016 um 18:29

    Ich hab jetzt nicht alle Antworten gelesen, aber für den Wertebereich 0x00 - 0xFF gibts die Funktion _Crypt_GenRandom (wie Andy ja schon geschrieben hat...)

    AutoIt
    #include <Crypt.au3>
    
    
    $iBytes = 10000000
    $tBytes = DllStructCreate("byte[" & $iBytes & "];")
    
    
    $iTimer = TimerInit()
    _Crypt_GenRandom($tBytes, $iBytes)
    ConsoleWrite("! Time: " & TimerDiff($iTimer) & @CRLF)
    
    
    ConsoleWrite("> " & BinaryMid(DllStructGetData($tBytes, 1), 1, 128) & @CRLF)
    Alles anzeigen
  • Prüfe welche Maustaste die Primäre ist

    • eukalyptus
    • 22. Februar 2016 um 09:19
    AutoIt
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    
    
    Opt("GUIOnEventMode", 1)
    
    
    Global $hMouse_Proc_LL = DllCallbackRegister("_MouseHook_Proc_LL", "int", "int;ptr;ptr")
    Global $hMouse_Hook_LL
    
    
    Global $hGui = GUICreate("MouseBlock", 220, 80)
    GUISetOnEvent(-3, "_Exit")
    GUICtrlCreateCheckbox("Block Mouse", 10, 10, 100, 20)
    GUICtrlSetOnEvent(-1, "_BlockMouse")
    GUISetState()
    
    
    
    
    While Sleep(10)
    WEnd
    
    
    
    
    Func _MouseHook_Proc_LL($iCode, $wParam, $lParam)
    	If $iCode < 0 Then Return _WinAPI_CallNextHookEx($hMouse_Hook_LL, $iCode, $wParam, $lParam)
    
    
    	Switch $wParam
    		Case $WM_RBUTTONDOWN, $WM_RBUTTONUP
    			ToolTip("Secondary Mousebutton blocked...")
    			Return 1
    	EndSwitch
    
    
    	Return _WinAPI_CallNextHookEx($hMouse_Hook_LL, $iCode, $wParam, $lParam)
    EndFunc   ;==>_MouseHook_Proc_LL
    
    
    
    
    Func _BlockMouse()
    	If GUICtrlRead(@GUI_CtrlId) = 1 Then
    		$hMouse_Hook_LL = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hMouse_Proc_LL), _WinAPI_GetModuleHandle(0), 0)
    	Else
    		If $hMouse_Hook_LL Then _WinAPI_UnhookWindowsHookEx($hMouse_Hook_LL)
    		$hMouse_Hook_LL = 0
    	EndIf
    EndFunc   ;==>_BlockMouse
    
    
    
    
    Func _Exit()
    	If $hMouse_Hook_LL Then _WinAPI_UnhookWindowsHookEx($hMouse_Hook_LL)
    	DllCallbackFree($hMouse_Proc_LL)
    	Exit
    EndFunc   ;==>_Exit
    Alles anzeigen
  • RTF in TIFF konvertieren

    • eukalyptus
    • 20. Februar 2016 um 16:19

    RTF kann man mit RichEdit direkt rendern:

    AutoIt
    #include <GuiRichEdit.au3>
    #include <GDIPlus.au3>
    
    
    ;Opt("MustDeclareVars", 1)
    
    
    
    
    _GDIPlus_Startup()
    Global $aBitmap = _RTFtoIMAGE(@ScriptDir & "\Test.rtf")
    For $i = 1 To $aBitmap[0]
    	_GDIPlus_ImageSaveToFile($aBitmap[$i], @ScriptDir & "\Out_" & StringFormat("%02s", $i) & ".png")
    	_GDIPlus_BitmapDispose($aBitmap[$i])
    Next
    _GDIPlus_Shutdown()
    
    
    ShellExecute(@ScriptDir & "\Out_01.png")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Func _RTFtoIMAGE($sRTFFile, $fPageW = 210, $fPageH = 297, $fBorderLeft = 31.8, $fBorderTop = 31.8, $fBorderRight = 25.4, $fBorderBottom = 25.4, $fDPI = 300, $iBKColor = 0xFFFFFF)
    	;by Eukalyptus (autoit.de)
    	Local $hFile = FileOpen($sRTFFile, 512)
    	Local $sRTFString = FileRead($hFile)
    	FileClose($hFile)
    
    
    	Local $hGui = GUICreate("RTF->TIFF", 100, 80)
    	Local $hRichEdit = _GUICtrlRichEdit_Create($hGui, "", 0, 0, 100, 80, $ES_MULTILINE)
    	GUISetState(@SW_HIDE, $hGui)
    
    
    	_GUICtrlRichEdit_SetText($hRichEdit, $sRTFString)
    	_GUICtrlRichEdit_SetBkColor($hRichEdit, BitOR(BitShift(BitAND($iBKColor, 0xFF), -16), BitAND($iBKColor, 0x0000FF00), BitAND(BitShift($iBKColor, 16), 0xFF)))
    
    
    
    
    	Local $iBMP_W = Ceiling($fPageW / 25.4 * $fDPI)
    	Local $iBMP_H = Ceiling($fPageH / 25.4 * $fDPI)
    
    
    	Local $hDC = _WinAPI_GetDC($hRichEdit)
    	Local $hCDC = _WinAPI_CreateCompatibleDC($hDC)
    
    
    	Local $tFormat = DllStructCreate("hwnd DC; hwnd DCTarget; int Left; int Top; int Right; int Bottom; int PageLeft; int PageTop; int PageRight; int PageBottom; int Min; int Max;")
    	$tFormat.DC = $hCDC
    
    
    	Local $fMM = 1440 / 25.4
    	$tFormat.Left = $fBorderLeft * $fMM
    	$tFormat.Top = $fBorderTop * $fMM
    	$tFormat.Right = ($fPageW - $fBorderRight) * $fMM
    	$tFormat.Bottom = ($fPageH - $fBorderBottom) * $fMM
    
    
    	$tFormat.PageRight = $fPageW * $fMM
    	$tFormat.PageBottom = $fPageH * $fMM
    
    
    
    
    	Local $iHRes = _WinAPI_GetDeviceCaps($hCDC, 88)
    	Local $iVRes = _WinAPI_GetDeviceCaps($hCDC, 90)
    	_WinAPI_SetMapMode($hCDC, 8)
    	_WinAPI_SetWindowExt($hCDC, $iHRes, $iVRes)
    	DllCall("gdi32.dll", "bool", "SetViewportExtEx", "handle", $hCDC, "int", $fDPI, "int", $fDPI, "struct*", Null)
    
    
    	Local $hBMP = _WinAPI_CreateBitmap($iBMP_W, $iBMP_H, 1, 32)
    	Local $hOBJ = _WinAPI_SelectObject($hCDC, $hBMP)
    	Local $hBRSH = _WinAPI_CreateSolidBrush($iBKColor)
    
    
    
    
    	_SendMessage($hRichEdit, $EM_SETSEL, 0, -1)
    	_SendMessage($hRichEdit, $EM_EXGETSEL, 0, DllStructGetPtr($tFormat, "Min"), 0, "wparam", "struct*")
    
    
    	Local $aBitmap[1]
    	Local $iIndex, $iCnt = 0
    	While $tFormat.Min < $tFormat.Max
    		_WinAPI_FillRect($hCDC, DllStructGetPtr($tFormat, "PageLeft"), $hBRSH)
    		$iIndex = _SendMessage($hRichEdit, $EM_FORMATRANGE, True, $tFormat, 0, "wparam", "struct*", "int")
    		If $iIndex <= $tFormat.Min Then ExitLoop
    		$tFormat.Min = $iIndex
    		$iCnt += 1
    		ReDim $aBitmap[$iCnt + 1]
    		$aBitmap[$iCnt] = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
    		DllCall("gdiplus.dll", "int", "GdipBitmapSetResolution", "handle", $aBitmap[$iCnt], "float", $fDPI, "float", $fDPI)
    	WEnd
    	$aBitmap[0] = $iCnt
    
    
    	_WinAPI_SelectObject($hCDC, $hOBJ)
    	_WinAPI_DeleteObject($hBMP)
    	_WinAPI_DeleteDC($hCDC)
    	_WinAPI_ReleaseDC($hRichEdit, $hDC)
    	_WinAPI_DeleteObject($hBRSH)
    
    
    	_GUICtrlRichEdit_Destroy($hRichEdit)
    	GUIDelete($hGui)
    
    
    	Return $aBitmap
    EndFunc   ;==>_RTFtoIMAGE
    Alles anzeigen


    Die Bilder kannst du dann in dem gewünschten Format abspeichern, welches von GDI+ unterstützt wird (bmp, jpg, png, gif, tif)


    (Zum Laden einer .rtf Datei sollte man eigentlich _GUICtrlRichEdit_StreamFromFile verwenden, diese Funktion hat aber leider noch einen Bug. (erst ab nächster Stable behoben))

    E

  • Mikrofon Pegel ablesen

    • eukalyptus
    • 17. Februar 2016 um 23:02

    Oder so:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    ;#AutoIt3Wrapper_UseX64=y
    
    
    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)
    
    
    Global $hGui = GUICreate("MicPeak", 320, 100)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlCreateLabel("Left:", 10, 10, 50, 20, BitOR(0x0200, 0x0002))
    Global $cPG_Left = GUICtrlCreateProgress(70, 10, 200, 20)
    GUICtrlCreateLabel("Right:", 10, 40, 50, 20, BitOR(0x0200, 0x0002))
    Global $cPG_Right = GUICtrlCreateProgress(70, 40, 200, 20)
    GUISetState()
    
    
    Global $tMicLevel = _MicLevel_StartUp()
    
    
    Global $aPeak
    While Sleep(10)
    	$aPeak = _MicLevel_GetPeak($tMicLevel)
    
    
    		GUICtrlSetData($cPG_Left, $aPeak[0] * 100 + 1) ;Workaround ab Vindows Vista, damit Progress sofort den eingestellten Wert anzeigt
    		GUICtrlSetData($cPG_Right, $aPeak[1] * 100 + 1)
    
    
    	GUICtrlSetData($cPG_Left, $aPeak[0] * 100)
    	GUICtrlSetData($cPG_Right, $aPeak[1] * 100)
    WEnd
    
    
    
    
    
    
    Func _Exit()
    	_MicLevel_ShutDown($tMicLevel)
    	Exit
    EndFunc   ;==>_Exit
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Func _MicLevel_GetPeak($tMicLevel, $fFallOff = 0.84)
    	Local $aPeak[2]
    	If Not IsDllStruct($tMicLevel) Then Return SetError(1, 0, $aPeak)
    	$aPeak[0] = DllStructGetData($tMicLevel, "PeakL")
    	$aPeak[1] = DllStructGetData($tMicLevel, "PeakR")
    	DllStructSetData($tMicLevel, "PeakL", $aPeak[0] * $fFallOff)
    	DllStructSetData($tMicLevel, "PeakR", $aPeak[1] * $fFallOff)
    	$aPeak[0] /= 32768
    	$aPeak[1] /= 32768
    	If $aPeak[0] < 0.000030518 Then $aPeak[0] = 0.000030518
    	If $aPeak[1] < 0.000030518 Then $aPeak[1] = 0.000030518
    	$aPeak[0] = (20 * Log($aPeak[0]) / Log(10)) / 90.3089986991943 + 1
    	$aPeak[1] = (20 * Log($aPeak[1]) / Log(10)) / 90.3089986991943 + 1
    	Return $aPeak
    EndFunc   ;==>_MicLevel_GetPeak
    
    
    
    
    Func _MicLevel_StartUp($iUpdatePeriod = 40, $iSamplesPerSec = 44100)
    	If $iUpdatePeriod < 10 Then
    		$iUpdatePeriod = 10
    	ElseIf $iUpdatePeriod > 2000 Then
    		$iUpdatePeriod = 2000
    	EndIf
    	Local $iSamples = Ceiling($iUpdatePeriod * $iSamplesPerSec / 1000)
    	If Mod($iSamples, 4) Then $iSamples += 4 - Mod($iSamples, 4)
    
    
    	Local $tMicLevel = DllStructCreate("float PeakL; float PeakR; ptr AddBuffer; uint HDRSize; ptr ASM; handle Device; byte WaveHDR1[48]; byte WaveHDR2[48]; short Buffer1[" & $iSamples * 2 & "]; short Buffer2[" & $iSamples * 2 & "];")
    
    
    	Local $iBlockAlign = Floor(2 * (16 / 8))
    	Local $iAvgBytesPerSec = $iSamplesPerSec * $iBlockAlign
    	Local $tWaveFormatEx = DllStructCreate("struct; align 2; word FormatTag; word Channels; uint SamplesPerSec; uint AvgBytesPerSec; word BlockAlign; word BitsPerSample; word Size; endstruct;")
    	$tWaveFormatEx.FormatTag = 1
    	$tWaveFormatEx.Channels = 2
    	$tWaveFormatEx.SamplesPerSec = $iSamplesPerSec
    	$tWaveFormatEx.AvgBytesPerSec = $iAvgBytesPerSec
    	$tWaveFormatEx.BlockAlign = $iBlockAlign
    	$tWaveFormatEx.BitsPerSample = 16
    
    
    	Local $hWINMM = _WinAPI_GetModuleHandle("Winmm.dll")
    	$tMicLevel.AddBuffer = _WinAPI_GetProcAddress($hWINMM, "waveInAddBuffer")
    	Local $bASM
    	Switch @AutoItX64
    		Case True
    			$bASM = "0x53565781FAC003000075634C89C34C89CAB800000080660F6ED8660F70DB00F30F7E0B448B520C488B3A660F6E070F28D3660F60C0660F72E0100F5BC00F55D00F5FC84883C7044183EA047FDD660FD60BC7420C00000000C74218020000004C8B43104883EC20FF53084883C4205F5E5BC3"
    		Case Else
    			$bASM = "0x5356578B7424108B4424148B5C24188B54241C3DC00300007553B800000080660F6ED8660F70DB00F30F7E0B8B4A088B3A660F6E070F28D3660F60C0660F72E0100F5BC00F55D00F5FC883C70483E9047FDF660FD60BC7420800000000C74210020000008B430C505256FF53085F5E5BC21400"
    	EndSwitch
    	Local $iSize = BinaryLen($bASM)
    	Local $aResult = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", $iSize + 16, "dword", 0x00001000, "dword", 0x00000040)
    	If @error Or Not $aResult[0] Then Return SetError(1, 1, False)
    	$tMicLevel.ASM = $aResult[0]
    	Local $pASM = Number($aResult[0])
    	If Mod($pASM, 16) Then $pASM = $pASM + 16 - Mod($pASM, 16)
    	Local $tASM = DllStructCreate("byte[" & $iSize & "];", $pASM)
    	DllStructSetData($tASM, 1, $bASM)
    	DllCall("kernel32.dll", "bool", "VirtualProtect", "struct*", $pASM, "ulong_ptr", $iSize, "dword", 16, "dword*", 0)
    
    
    	$aResult = DllCall("Winmm.dll", "uint", "waveInOpen", "ptr*", 0, "uint", -1, "struct*", $tWaveFormatEx, "struct*", $tASM, "struct*", $tMicLevel, "uint", 0x30000)
    	If $aResult[0] Then Return SetError($aResult[0], 2, False)
    	$tMicLevel.Device = $aResult[1]
    
    
    	Local $tWaveHDR1 = DllStructCreate("struct; ptr Data; uint BufferLength; uint BytesRecorded; uint_ptr User; uint Flags; uint Loops; ptr Next; uint_ptr reserved; endstruct;", DllStructGetPtr($tMicLevel, "WaveHDR1"))
    	Local $tWaveHDR2 = DllStructCreate("struct; ptr Data; uint BufferLength; uint BytesRecorded; uint_ptr User; uint Flags; uint Loops; ptr Next; uint_ptr reserved; endstruct;", DllStructGetPtr($tMicLevel, "WaveHDR2"))
    	$tMicLevel.HDRSize = DllStructGetSize($tWaveHDR1)
    	$tWaveHDR1.Data = DllStructGetPtr($tMicLevel, "Buffer1")
    	$tWaveHDR1.BufferLength = $iSamples * 4
    	$tWaveHDR2.Data = DllStructGetPtr($tMicLevel, "Buffer2")
    	$tWaveHDR2.BufferLength = $iSamples * 4
    
    
    	$aResult = DllCall("Winmm.dll", "uint", "waveInPrepareHeader", "handle", $tMicLevel.Device, "struct*", $tWaveHDR1, "uint", $tMicLevel.HDRSize)
    	If $aResult[0] Then Return SetError($aResult[0], 3, False)
    	$aResult = DllCall("Winmm.dll", "uint", "waveInAddBuffer", "handle", $tMicLevel.Device, "struct*", $tWaveHDR1, "uint", $tMicLevel.HDRSize)
    	If $aResult[0] Then Return SetError($aResult[0], 4, False)
    	$aResult = DllCall("Winmm.dll", "uint", "waveInPrepareHeader", "handle", $tMicLevel.Device, "struct*", $tWaveHDR2, "uint", $tMicLevel.HDRSize)
    	If $aResult[0] Then Return SetError($aResult[0], 5, False)
    	$aResult = DllCall("Winmm.dll", "uint", "waveInAddBuffer", "handle", $tMicLevel.Device, "struct*", $tWaveHDR2, "uint", $tMicLevel.HDRSize)
    	If $aResult[0] Then Return SetError($aResult[0], 6, False)
    
    
    	$aResult = DllCall("Winmm.dll", "uint", "waveInStart", "handle", $tMicLevel.Device)
    	If $aResult[0] Then Return SetError($aResult[0], 7, False)
    
    
    	Return $tMicLevel
    EndFunc   ;==>_MicLevel_StartUp
    
    
    
    
    Func _MicLevel_ShutDown(ByRef $tMicLevel)
    	If Not IsDllStruct($tMicLevel) Then Return SetError(1, 0, False)
    	Local $iError = 0
    
    
    	$iError += DllCall("Winmm.dll", "uint", "waveInStop", "handle", $tMicLevel.Device)[0]
    	Local $tWaveHDR1 = DllStructCreate("struct; ptr Data; uint BufferLength; uint BytesRecorded; uint_ptr User; uint Flags; uint Loops; ptr Next; uint_ptr reserved; endstruct;", DllStructGetPtr($tMicLevel, "WaveHDR1"))
    	Local $tWaveHDR2 = DllStructCreate("struct; ptr Data; uint BufferLength; uint BytesRecorded; uint_ptr User; uint Flags; uint Loops; ptr Next; uint_ptr reserved; endstruct;", DllStructGetPtr($tMicLevel, "WaveHDR2"))
    	$tWaveHDR1.Flags = 0
    	$tWaveHDR2.Flags = 0
    	$iError += DllCall("Winmm.dll", "uint", "waveInUnprepareHeader", "handle", $tMicLevel.Device, "struct*", $tWaveHDR1, "uint", $tMicLevel.HDRSize)[0]
    	$iError += DllCall("Winmm.dll", "uint", "waveInUnprepareHeader", "handle", $tMicLevel.Device, "struct*", $tWaveHDR2, "uint", $tMicLevel.HDRSize)[0]
    	$iError += DllCall("Winmm.dll", "uint", "waveInReset", "handle", $tMicLevel.Device)[0]
    	$iError += DllCall("Winmm.dll", "uint", "waveInClose", "handle", $tMicLevel.Device)[0]
    
    
    	DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $tMicLevel.ASM, "ulong_ptr", 0, "dword", 0x00008000)
    
    
    	$tMicLevel = 0
    	Return SetError($iError, 0, $iError = 0)
    EndFunc   ;==>_MicLevel_ShutDown
    Alles anzeigen
  • Fokus bei Mausklick WM_CHILD

    • eukalyptus
    • 15. Februar 2016 um 20:29

    DANKE!
    Das hilft schonmal.

    Ich helf mir noch zusätzlich mit diesem Workaround:

    AutoIt
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>
    
    
    $hGui = GUICreate("Main", 800, 600)
    
    
    $hChild1 = GUICreate("Child 1", 300, 200, 10, 10, BitOR($WS_CHILD, $WS_CAPTION), 0, $hGui)
    $hChild2 = GUICreate("Child 2", 300, 200, 200, 210, BitOR($WS_CHILD, $WS_CAPTION), 0, $hGui)
    
    
    GUISetState(@SW_SHOW, $hGui)
    GUISetState(@SW_SHOW, $hChild1)
    GUISetState(@SW_SHOW, $hChild2)
    
    
    GUIRegisterMsg($WM_MOUSEACTIVATE, "WM_MOUSEACTIVATE")
    
    
    While GUIGetMsg() <> -3
    WEnd
    
    
    
    
    Func WM_MOUSEACTIVATE($hWnd, $iMsg, $wParam, $lParam)
    	Switch $hWnd
    		Case $hChild1, $hChild2
    			_SendMessage($hWnd, $WM_NCLBUTTONDOWN, $HTCAPTION, Null)
    
    
    	EndSwitch
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_MOUSEACTIVATE
    Alles anzeigen
  • Fokus bei Mausklick WM_CHILD

    • eukalyptus
    • 15. Februar 2016 um 18:40

    Hi

    Ich habe folgendes Problem:
    In einem Hauptfenster hab ich mehrere Child-Fenster.
    Wenn ich nun mit der Maus auf das Child-Fenster klicke, welches hinter dem anderen Child liegt, dann kommt es nicht in den Vordergrund.

    In den Vordergrund kommt es nur, wenn man auf die Titelleiste klickt.
    Und auch nur dann, wenn man kurz klickt! - Wenn man die Maustaste gedrückt hält und dann erst loslässt, bleibt das Fenster im Hintergrund.

    Was mach ich falsch?
    Oder kenn jemand einen Workaround?

    Hier der Code:

    AutoIt
    #include <WindowsConstants.au3>
    
    
    $hGui = GUICreate("Main", 800, 600)
    
    
    $hChild1 = GUICreate("Child 1", 300, 200, 10, 10, BitOR($WS_CHILD, $WS_CAPTION), 0, $hGui)
    $hChild2 = GUICreate("Child 2", 300, 200, 200, 210, BitOR($WS_CHILD, $WS_CAPTION), 0, $hGui)
    
    
    GUISetState(@SW_SHOW, $hGui)
    GUISetState(@SW_SHOW, $hChild1)
    GUISetState(@SW_SHOW, $hChild2)
    
    
    While GUIGetMsg() <> -3
    WEnd
    Alles anzeigen


    Vielen Dank!

  • StringRegExp Buchstaben Zahlen

    • eukalyptus
    • 12. Februar 2016 um 06:25
    AutoIt
    $sText = StringRegExpReplace($sText, "[^\w\s.,?!]", "")
  • Mit _GDIPlus_TextureCreate2 gefülltem Brush mit der Maus zeichnen

    • eukalyptus
    • 9. Februar 2016 um 00:15
    AutoIt
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    
    
    
    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)
    
    
    
    
    Global $iRX = 40
    Global $iRY = 25
    
    
    Global $iWidth = 600
    Global $iHeight = 647
    
    
    
    
    
    
    Global $hGDIPDLL = _GDIPlus_Startup()
    Global $hGui = GUICreate("", 600, 647)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    Global $hBmp_Buffer = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
    Global $hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext($hBmp_Buffer)
    _GDIPlus_GraphicsClear($hGfx_Buffer, 0xFF000000)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Buffer, 2)
    
    
    Global $hBrush
    _SetBrush()
    
    
    
    
    GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSEMOVE")
    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    GUISetState()
    
    
    
    
    
    
    
    
    While Sleep(100)
    WEnd
    
    
    
    
    
    
    Func _SetBrush()
    	Local $sFile = FileOpenDialog("Bild auswählen", "", "Bilder (*.jpg;*.png;*.bmp;*.tif)")
    	If @error Or Not FileExists($sFile) Then Return SetError(1, 0, False)
    
    
    	Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
    	If @error Or Not $hImage Then Return SetError(1, 1, False)
    
    
    	Local $iW = _GDIPlus_ImageGetWidth($hImage)
    	Local $iH = _GDIPlus_ImageGetHeight($hImage)
    
    
    	_GDIPlus_BrushDispose($hBrush)
    	$hBrush = _GDIPlus_TextureCreate2($hImage, 0, 0, $iW, $iH, 0)
    
    
    	Local $hMatrix = _GDIPlus_MatrixCreate()
    	_GDIPlus_MatrixScale($hMatrix, ($iRX * 2) / $iW, ($iRY * 2) / $iH)
    	DllCall($hGDIPDLL, "int", "GdipSetTextureTransform", "handle", $hBrush, "handle", $hMatrix)
    	_GDIPlus_MatrixDispose($hMatrix)
    
    
    	_GDIPlus_ImageDispose($hImage)
    EndFunc   ;==>_SetBrush
    
    
    
    
    
    
    
    
    
    
    
    
    Func WM_MOUSEMOVE($hWnd, $iMsg, $wParam, $lParam)
    	Local $iX = BitAND($lParam, 0x0000FFFF)
    	Local $iY = BitShift($lParam, 16)
    
    
    	Local Static $iTimer = TimerInit()
    
    
    	Switch $hWnd
    		Case $hGui
    			Switch BitAND($wParam, 0x0000FFFF)
    				Case 1
    					If TimerDiff($iTimer) > 50 Then
    						_GDIPlus_GraphicsTranslateTransform($hGfx_Buffer, $iX - $iRX, $iY - $iRX)
    						_GDIPlus_GraphicsFillEllipse($hGfx_Buffer, 0, 0, $iRX * 2, $iRY * 2, $hBrush)
    						_GDIPlus_GraphicsResetTransform($hGfx_Buffer)
    
    
    						_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp_Buffer, 0, 0)
    
    
    						$iTimer = TimerInit()
    					EndIf
    
    
    			EndSwitch
    
    
    	EndSwitch
    
    
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_MOUSEMOVE
    
    
    
    
    
    
    Func WM_PAINT($hWnd, $iMsg, $wParam, $lParam)
    	_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp_Buffer, 0, 0)
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_PAINT
    
    
    
    
    
    
    Func _Exit()
    	_GDIPlus_BrushDispose($hBrush)
    	_GDIPlus_GraphicsDispose($hGfx_Buffer)
    	_GDIPlus_BitmapDispose($hBmp_Buffer)
    	_GDIPlus_GraphicsDispose($hGraphics)
    	GUIDelete($hGui)
    	_GDIPlus_Shutdown()
    	Exit
    EndFunc   ;==>_Exit
    Alles anzeigen

    Alternativ könntest du auch eine ClipRegion verwenden - damit werden aber die Ränder der Grafiken nicht so smooth...

  • Alles gute Andy!

    • eukalyptus
    • 4. Februar 2016 um 19:28

    Alles Gute dem Geburtstagskind! :party1::part:

    Oder muss man jetzt schon "dem Jubilar" sagen? :D

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™