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

  • Funktionen werden zu Objekten - Das OCFGV-Paradigma - Eigene Objekte in 2 Zeilen

    • UEZ
    • 29. März 2013 um 13:47

    Sehr interessanter und cooler Ansatz! :thumbup:

    Danke und Gruß,
    UEZ

  • Eigene GUI basteln

    • UEZ
    • 29. März 2013 um 00:37

    Ich war so frei und habe autoBert's Beetle genommen, um eine Test GUI zu basteln.

    Spoiler anzeigen
    [autoit]


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

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

    Global Const $IMAGE_BITMAP = 0, $STM_SETIMAGE = 0x0172, $SC_DRAGMOVE = 0xF012

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

    _GDIPlus_Startup()
    Global Const $hHBITMAP = _GDIPlus_BMPFromMemory(_Beetle(), True)
    Global $aMask = _PixelCoordinates()
    Global Const $aSize = StringSplit($aMask[0], ",", 2)
    Global Const $iW = $aSize[0]
    Global Const $iH = $aSize[1]
    Global Const $hGUI = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP)
    Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
    GUICtrlSetState(-1, $GUI_DISABLE)
    _WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP))
    Global Const $iBtn = GUICtrlCreateButton("Exit", $iW / 2 - 24, $iH / 2 - 24, 48, 48)
    Global Const $iInp = GUICtrlCreateInput("Coded by UEZ", 185, $iH - 50, 200, 20)
    Global Const $hRegion = _WinAPI_GuiImageHole($hGUI, $aMask, 0, 0, $iW, $iH, 1, 0)
    GUISetState()

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    Do
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $iBtn
    ExitLoop
    EndSwitch
    Until False
    _WinAPI_DeleteObject($hHBITMAP)
    _GDIPlus_Shutdown()
    GUIDelete()
    Exit

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

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

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

    ;======================================================================================
    ; Function Name: _GDIPlus_BMPFromMemory
    ; Description: Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
    ;
    ; Parameters: $bImage: the binary string which contains any valid image which is supported by GDI+
    ; Optional: $hHBITMAP: if false a bitmap will be created, if true a hbitmap will be created
    ;
    ; Remark: hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
    ; Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
    ;
    ; Requirement(s): GDIPlus.au3, Memory.au3 and _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Return Value(s): Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
    ; Error: 0
    ; Error codes: 1: $bImage is not a binary string
    ; 2: unable to create stream on HGlobal
    ; 3: unable to create bitmap from stream
    ;
    ; Author(s): UEZ
    ; Additional Code: thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
    ; Yashied for _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Version: v0.98 Build 2012-08-29 Beta
    ;=======================================================================================
    Func _GDIPlus_BMPFromMemory($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
    "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
    Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
    EndIf
    Return $hBitmap
    EndFunc ;==>_GDIPlus_BMPFromMemory

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

    Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
    Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
    $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($aRet[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate( 'dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/…1(v=vs.85).aspx
    'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;' & _
    'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
    'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
    'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
    DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
    DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
    DllStructSetData($tBIHDR, 'bV5Planes', 1)
    DllStructSetData($tBIHDR, 'bV5BitCount', 32)
    DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
    DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
    DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
    DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
    DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
    DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
    DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
    DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
    DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    $hResult = $hResult[0]
    Else
    $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    $tData = 0
    $tBIHDR = 0
    Return $hResult
    EndFunc ;==>_WinAPI_BitmapCreateDIBFromBitmap

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

    ;Code below was generated by Perforator v0.9.3 build 2013-03-28 beta

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

    Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True)
    Local $size = WinGetPos(HWnd($hWnd))
    Local $iHwndWidth = $size[2]
    Local $iHwndHeight = $size[3]
    If $bCorrection Then
    $iX += _WinAPI_GetSystemMetrics(7)
    $iY += _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1
    EndIf
    Local $aM_Mask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', 0, 'long', 0)
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $iX, 'long', $iHwndHeight)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $iHwndWidth, 'long', $iY)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', $iX + $iWidth, 'long', 0, 'long', $iHwndWidth, 'long', $iHwndHeight)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', $iY + $iHeight, 'long', $iHwndWidth, 'long', $iHwndHeight)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    Local $i, $aBlock, $aRet, $hDLL = DllOpen('gdi32.dll')
    For $i = 1 To UBound($aPixelArray) - 1
    $aBlock = StringSplit($aPixelArray[$i], ',', 2)
    $aRet = DllCall($hDLL, 'long', 'CreateRectRgn', 'long', $iX + $aBlock[0] * $fScale, 'long', $iY + $aBlock[1] * $fScale, 'long', $iX + $aBlock[2] * $fScale, 'long', $iY + $aBlock[3] * $fScale)
    DllCall($hDLL, 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aRet[0], 'long', $aM_Mask[0], 'int', 2)
    _WinAPI_DeleteObject($aRet[0])
    Next
    DllClose($hDLL)
    DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $aM_Mask[0], 'int', 1)
    Return $aM_Mask[0]
    EndFunc ;==>_WinAPI_GuiImageHole

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

    Func _PixelCoordinates()
    #region pixel coordinates
    Local $sPixelRect
    $sPixelRect &= "556,255;418,2,422,5;419,1,421,2;420,0,421,1;415,5,420,8;416,4,418,5;417,3,418,4;420,5,421,6;412,9,416,12;413,7,415,9;414,6,415,7;416,8,418,10;415,8,416,9;418,8,419,9;409,12,414,15;410,11,412,12;411,10,412,11;416,10,417,11;414,12,415,14;406,15,410,20;407,14,409,15;408,13,409,14;410,15,412,17;412,15,413,16;402,20,407,23;404,18,406,20;405,17,406,18;410,17,411,18;403,19,404,20;407,20,409,21;399,23,404,27;400,22,402,23;401,21,402,22;407,21,408,22;404,23,406,25;396,27,401,31;397,26,399,27;398,25,399,26;404,25,405,26;401,27,403,28;392,31,398,34;394,29,396,31;395,28,396,29;401,28,402,29;393,30,394,31;398,31,400,32;398,32,399,33;389,35,394,39;390,34,397,35;391,33,392,34;394,35,396,37;396,35,397,36;385,39,391,43;387,37,389,39;388,36,389,37;394,37,395,38;386,38,387,39;391,39,393,40;382,43,387,48;384,40,385,43;391,40,392,42;383,42,384,43;387,43,389,45;389,43,390,44;212,59,399,231;277,45,317,59;290,44,297,45;367,48,383,59;380,45,382,48;381,44,382,45;387,45,388,47;261,47,277,59;266,46,277,47;317,46,331,59;371,47,380,48;379,46,380,47;331,47,344,59;250,49,261,59;256,48,261,49;344,48,356,59;383,48,385,50;385,48,386,49;356,50,367,59;356,49,360,50;363,49,367,50;239,51,250,59;245,50,250,51;383,50,384,51;231,53,239,59;234,52,239,53;383,54,387,59;383,53,384,54;227,54,231,59;221,56,227,59;224,55,227,56;387,55,390,59;390,56,393,59;219,57,221,59;393,57,395,59;215,58,219,59;395,58,397,59;158,93,212,229;200,66,212,93;208,61,212,66;209,60,212,61;399,90,457,231;399,65,412,90;399,61,403,65;399,60,401,61;205,63,208,66;206,62,208,63;403,62,405,65;405,63,408,65;203,64,205,66;408,64,410,65;202,65,203,66;412,70,422,90;412,67,416,70;412,66,414,67;191,72,200,93;197,68,200,72;198,67,200,68;416,68,418,70;195,69,197,72;418,69,420,70;192,71,195,72;194,70,195,71;422,74,431,90;422,71,425,74;425,72,427,74;183,77,191,93;188,74,191,77;189,73,191,74;427,73,429,74;186,75,188,77;431,77,437,90;431,75,433,77;185,76,186,77;433,76,435,77;177,81,183,93;181,78,183,81;437,80,442,90;437,78,439,80;178,80,181,81;"
    $sPixelRect &= "180,79,181,80;439,79,441,80;442,83,447,90;442,81,444,83;172,84,177,93;175,82,177,84;444,82,445,83;174,83,175,84;447,85,449,90;447,84,448,85;167,87,172,93;169,86,172,87;171,85,172,86;449,87,452,90;449,86,451,87;164,89,167,93;166,88,167,89;452,88,454,90;454,89,455,90;161,91,164,93;163,90,164,91;457,125,505,237;457,98,468,125;457,92,459,98;457,91,458,92;160,92,161,93;459,94,462,98;459,93,461,94;110,117,158,229;150,98,158,117;155,95,158,98;157,94,158,95;462,95,464,98;153,96,155,98;464,96,465,98;152,97,153,98;465,97,467,98;143,103,150,117;147,100,150,103;149,99,150,100;468,104,477,125;468,100,471,104;468,99,470,100;144,102,147,103;146,101,147,102;471,101,472,104;472,102,474,104;474,103,475,104;138,106,143,117;141,104,143,106;140,105,141,106;477,109,484,125;477,106,480,109;477,105,478,106;133,109,138,117;136,107,138,109;480,107,481,109;135,108,136,109;481,108,482,109;130,111,133,117;132,110,133,111;484,113,489,125;484,110,485,113;485,111,487,113;127,113,130,117;129,112,130,113;487,112,488,113;115,114,119,117;124,115,127,117;126,114,127,115;489,116,493,125;489,114,491,116;113,116,115,117;114,115,115,116;119,115,123,117;491,115,492,116;123,116,124,117;493,118,496,125;493,117,494,118;60,127,110,232;102,118,110,127;92,120,102,127;97,119,102,120;496,120,498,125;496,119,497,120;82,122,92,127;87,121,92,122;498,122,501,125;498,121,499,122;77,123,82,127;501,123,502,125;72,124,77,127;502,124,503,125;67,125,72,127;62,126,67,127;505,150,535,223;505,131,512,150;505,127,507,131;505,126,506,127;28,148,60,227;52,131,60,148;57,128,60,131;59,127,60,128;507,128,508,131;55,129,57,131;508,129,510,131;54,130,55,131;510,130,511,131;45,135,52,148;50,132,52,135;512,136,518,150;512,133,515,136;512,132,513,133;47,134,50,135;49,133,50,134;515,134,516,136;516,135,517,136;40,138,45,148;43,136,45,138;42,137,43,138;518,140,523,150;518,137,520,140;520,138,521,140;36,141,40,148;38,140,40,141;39,139,40,140;521,139,522,140;523,143,527,150;523,141,525,143;32,144,36,148;34,143,36,144;35,142,36,143;"
    $sPixelRect &= "525,142,526,143;527,145,530,150;527,144,528,145;30,146,32,148;31,145,32,146;530,147,532,150;530,146,531,147;29,147,30,148;532,148,533,150;9,171,28,222;22,156,28,171;26,151,28,156;27,149,28,151;533,149,534,150;535,168,554,211;535,155,539,168;535,151,536,155;24,153,26,156;25,152,26,153;536,153,537,155;23,154,24,156;537,154,538,155;18,161,22,171;20,158,22,161;21,157,22,158;539,159,542,168;539,157,540,159;540,158,541,159;19,160,20,161;542,162,545,168;542,161,543,162;15,165,18,171;16,163,18,165;17,162,18,163;545,164,548,168;545,163,546,164;548,165,550,168;13,167,15,171;14,166,15,167;550,166,551,168;551,167,553,168;11,169,13,171;12,168,13,169;554,179,556,202;554,169,555,179;10,170,11,171;2,179,9,210;6,174,9,179;7,173,9,174;8,172,9,173;4,176,6,179;5,175,6,176;3,177,4,179;0,182,2,194;1,180,2,182;1,194,2,202;554,202,555,207;5,210,9,219;4,210,5,216;3,210,4,213;535,211,548,217;548,211,552,213;552,211,553,212;548,213,550,215;550,213,551,214;548,215,549,216;535,217,542,220;542,217,546,218;542,218,544,219;6,219,9,220;8,220,9,221;535,220,538,222;538,220,540,221;16,222,28,226;11,222,16,224;10,222,11,223;535,222,536,223;505,223,532,224;13,224,16,225;505,224,510,227;510,224,511,225;523,224,527,225;21,226,28,228;18,226,21,227;33,227,50,230;28,227,33,229;50,227,52,228;59,227,60,230;58,227,59,228;505,227,508,231;508,227,509,229;27,228,28,229;50,228,51,229;110,229,139,243;139,229,152,234;152,229,156,231;156,229,157,230;160,229,212,231;152,231,154,232;428,231,457,243;417,231,428,236;412,231,417,233;410,231,412,232;505,231,507,233;77,232,110,250;66,232,77,240;62,232,66,236;61,232,62,234;152,232,153,233;415,233,417,235;414,233,415,234;505,233,506,235;139,234,146,238;146,234,149,236;149,234,150,235;64,236,66,238;63,236,64,237;146,236,148,237;422,236,428,239;420,236,422,238;419,236,420,237;457,237,488,253;488,237,499,243;499,237,503,239;503,237,504,238;65,238,66,239;139,238,144,240;144,238,145,239;425,239,428,241;424,239,425,240;499,239,501,241;501,239,502,240;70,240,77,244;68,240,70,242;"
    $sPixelRect &= "67,240,68,241;139,240,141,242;141,240,142,241;427,241,428,242;499,241,500,242;69,242,70,243;110,243,129,251;129,243,135,246;135,243,137,245;137,243,138,244;440,243,457,251;434,243,440,247;431,243,434,245;430,243,431,244;488,243,495,247;495,243,497,245;497,243,498,244;73,244,77,246;71,244,73,245;433,245,434,246;495,245,496,246;75,246,77,248;74,246,75,247;129,246,133,248;133,246,134,247;437,247,440,249;435,247,437,248;488,247,493,249;493,247,494,248;76,248,77,249;129,248,131,249;129,249,130,250;438,249,440,250;488,249,491,251;491,249,492,250;83,250,110,253;81,250,83,252;79,250,81,251;110,251,125,253;125,251,127,252;445,251,457,255;443,251,445,253;441,251,443,252;488,251,489,252;444,253,445,254;457,253,485,255;485,253,486,254"
    #endregion
    Local $aPixelRect = StringSplit($sPixelRect, ";", 2)
    Return $aPixelRect
    EndFunc ;==>_PixelCoordinates()

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

    ;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-03-27

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

    Func _Beetle($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Beetle
    $Beetle &= '/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDACodICUgGiolIiUvLSoyP2lEPzo6P4FcYUxpmYagnpaGk5GovfLNqLPltZGT0v/V5fr/////o8v///////L/////2wBDAS0vLz83P3xERHz/rpOu////////////////////////////////////////////////////////////////////wgARCAD/AiwDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECA//aAAwDAQACEAMQAAAB6gAAAAAAAAAAAAAAAAAAAAAAAADMm4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpFosAAAAAAAAAAAAAAAAAAAAAAAAAACCVbkJEJEAAEERXUAAAAAAAAAAAAAAAAAAAAAAAIlJpeDNfOpimZ0Tx1PQnzh6LzpPQnh0OpzXNs7THn6dgmMbGgUAAAAAAAAAAAAAAAAAAAAZJpmvVbc+FnThnBMBCRCRCRCRv1cvXHmSVO2A7dvNsejTDolynatkzgl3RMoAAAAAAAAAAAAAAAACtFkaRy2a86NSErISISISISWEiEjXq5unnfOmW5CVQkRaB1b+dtm9dJtm819crNnNvLYSgAAAAAAAAAAAADJL4ttSKVsZ16Yy5Ez3xVcUXFFxRcUXFFxRcW6MduWuGZnrmqwqmSsXgqsLdXHfGutE41TDqizPXmk6ETnQAAAAAAAkhMAqlpoEXGNN2pOWtI4uqMa688Jlz1nbecW4wdCOeOkczpk5XUOV1F5Z6Rz6aI5XRauZ0k5nSXmdI5p6BzugZ70nNlVFsrKm+d4JhQAAAABmmkY71EWFbESiSsXGNtKkK2pW1bJkMr8Wur1Z358unPTnNM9pOa9emmFOuMNoxNqWzTSaWFqwt2I2Y6FgAiq8tLWBKISKpUmOCX0I5OsAAATFUpXXLUbRaVJBEFmcl0CYCKaRUVEthvxaqndWpxrMdXPfI6JmsYdPN01ydnONuadYy01AJWJsuLbGubpx7dIGEI0glABGZqysXCstR5mvRyTXfPN1JAsEmfL2V1nLaZlEE44c5rkkheKjbGI9G/l9h0TEE56QM9OHTqthU6ozyLaZWNbZVi84XrenNvC2fNXbOVo2CVtWw4Ozj1e20xkrNomVYlHPWvJiCbVSNaDr44j1nnehFq2LhvERaCkREkoZth0jj388S3qL5Z2ehkyi2VNqxjSmb2dHl+kLwK8XZx7m1N0uda20Xm+U49HOTpz6GfRx99ODv4D0ImMAqtq2TGm62wki9LSpQYcNoGkXstfk0OzC3GdGGmhzb4xL6046xRZmidSGPDXqubpBBw4Wgt1Y62c0dtSlbzqc89KWvJ2ckV6uW8vpwFOLvy1M2srg66nNbQVrtMZ6hz22gng74LQQFlbVsAqJqk3iZXP0cMc8xaurDomzj16KWRzdNzk65pLz59GEu/f5fpwQpPF2TUeb6kXPB31rZetanDMJejK82Y9HP3S0lezlz3wrXLo5pYGXqTS1TlplZpOcl1BdSDRmNGY0ZjRmNGY0Zi1sxooL1gaqWled6PmFbVk2x6uQ26Mt7M6aXOC0arbn2yivp8m5dXSyuhnQEVuTOuyscuuJfL6+eLNt82pzunA6cLQOdObXbfplwtqsxbDBuMG4wbjBuMG4wbjBuMG4wbjBuMJ2GLYZNRlxelEeVPTzV0Rh0Wbcm+dZ9kRETHMV6+b0pZEoAAAAAFOD0oTy9ta1EWGNOmxz99pgFAAAAAAAAAAAAAAAAZ6Dzaerx2Y65wa1zgi1+4i5KAAB//8QAKBAAAgEDBAIDAQEBAAMAAAAAAQIAAxESECAhMRMyIjBAUEFgIzNC/9oACAEBAAEFAv6gN/8AhT8j/wAITALD/gyYBb/hCbQD+xcTIfWTYKLn+kWA'
    $Beetle &= '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'
    $Beetle &= 'exPOXbdilKUpSlKUpSlLlZe3fN//xAAoEAABBAIABgIDAQEBAAAAAAAAAREhMRAgIjAyQEFQUWECEmBxoYH/2gAIAQEABj8C9p9fwrePP8KyfwrJf8M637iy+W6n7L7OyEU8IdRa4orkwhJPj29HgstS1LUtS8ShW316+CcQXzF1n18E4jnrv8kZj1UdivJn1M4nsl50ekjtF9iydqvq6cpdGQ4kzK82iiiiiiiiiiis+DweMX3dll5+9L1ooooru7xS4vtK0ohT51XMD4XKL+KWdP8Awo6f+DqcP4wcaRpXo45s5XRvkUXCCCi4bCikLi8y55PJ5I7Hi5UdiuGw44uEEFF0U/JrLOLSXPJakCv57Fl7K0L5C4kpCmP18KfR5PoYUXDoSN+PJb51feyy9/8AeR9cuSOTY7HFiCySCyFOJCCy+x+NYU4tX5jJpWrLspY7jfAg7nUWIO51FiKdWOod9VG5DJrS9myZkjdl1UoZhRBmKHQQZVOogTC7/wDouf8ANGS95OHLeNK1svZ12nR8oKUVhB1QrCDudRI+F3kjd8xs6dlBKcltFKIQf4wzHSUJlBsLzm5ME5bkMu8kFaxlNJQorEoUUUTpCYdk7GdaJIEXCaLomVyuWU4T79Emi7yMmU7V/I+FXRO/XKLhx/JOKyycuy8OmPvEE6fqmjMUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUUUUUUUUUTn9V0gnD+cP2EZlCMRl/y9DJw5nEkJmRhuy+TpIT1cFHSfGI7KSFLLLLJX1HCVrHJ/8QAKxAAAgECBAUDBQEBAAAAAAAAAAERITEQQVFhIHGBkaEwsfFAUMHh8GDR/9oACAEBAAE/Ifuj3bS2vX/C2Gy78Fv8I5vPzegiBW/wkeY1iPq83r/hFrvktSLMa/3eUbA2ff01EOzN2Wn3NlDqK7olsuYTX7EQzd1NryRZRIsnb0WS2+ojJVjWrlZPuN0EJR4tFdpDRnPIenvY9gP4R8ofMHzB8gb8bdHPQjUpgWp+jkTs45iadnOE4MtNgkdxNO32xGAlzho1aRourGr9hyEvX0bvIXtvCXqKG3IQznmMWNCaqTnBjLsOwqNVxH2g3BJQSBDWg56EOT/7jHpXeR474VQUHpyHZ/8AQllsEXIZqDVcRZ9lShLkCSU/fG5c3evr3+R479BMnOep+/irmOQ6muJzb7C3FySxmdgpfwP2tB1+gu8jx/RVB1nYQkrHP7BrCeb69KG251xDS40fcWTwRjHBBBBBBB7Z43pvT39yJ+MVhpvU1/rdISb0EIZx1FrLuS3YSqXlhBBBBBBBBBBBBBBB7Z4ArIgggggjCCMHJ7kDFpNQx1asRCcqn1DoQ3IKf/AkyYyASSQh7fcElXuRpqMiNHAhySzPWNw3jeN43sajuR3I6M5Wc4lqJesnVHkzsNCKUFja/oz+DNgbCNhYybg30Sh8JyZ9x5K9/pG0rs2Xc2xsO5M4RUVWsJC8vNkkcpEPMpJpodiajb7nIKuiw2yNobQ2BsIhoiFp6Vr1U4HoiG/Y/giGcroJtkJ9e1yqyK6wRzl9TZ9hJLLCENuQouISa21XmJp24EULCakim9SE7iw+sko0wqSSbbzK1OYalXyCtlfJDaL3hkjoIVSgR1Fs0ew31NhibzYTT9SdUKr2Ia7jkainmRFuBpO6TEllT1v2hMZTb39NDJeotcVjM04lvIqm3uPEL+XDzDxTwi/lwaFrULUVEJAegzgyVhtoHOzMGFzNcJlCdBsHYOwZGqmvA3FyHdRCUW9Jxq1mNVKlqJpJTleizoCTTT3ErmssY9KJUtoZYqHXdWSXSZJOESJWppU8HE+OeMeDh+EdzxjoMf3Yi0qRrwTKW6Dcwgi121uNKjE3CFJy/j1EwZ5DTcHW1WaGSSuN1QrZjaSxUEhQiOBortI+aJcvcniebLPEKVSuQKF1kUMjZQNIiQqthnYKEISJLI8RngYM1WgwqXOxFidSfl1f'
    $Beetle &= 'D72OWhfohXnGwkuXRacTRXaQ05cOmWXhXS76jqvyXFIbzxTEESuM6uPcJRYWNIuzOY5YQQKwbQprElXTgYkyydsJbaGzdfYewqtxOEg3maEPInQxNFC5DWFUIZaEaEnY3HYz2EKoQ7m7kbjsbjsMoTc4+88ZpkIqS7xjkZK5HBc3XQtFGxV3IIIL2IU6UbkpqU6FyBDUNCWqTTLiRJDFYLhe9HXgTrN2GmrprFNtKN664pyIVLCyI3GdikJIlWuPEIpozsR+AsNs4LOoqKBHV2HI7GRYtpkfgJItD+IFracbY+88JlMMi2mo8GhESG8dw5svfFM7Jsh/4cDH1WghDVnwTvwNk/0EN+wnKlYzMrPfGlNK0MqSJ97jYDovYfya4wM7IgsXRQ664BCRO3cpCCEvPGFKaUG9K5MInSHJthylUlmQR3vh5A78FvV4Wwil4qsVXZwNSGLtq1JsKd2NWiLe5kSZIpq2xq67G44Tk5BQsDuRdJD+BLPwEqYc9dMV9iGNlx4fmVGqJKDk2WCbaURoYqFLOmHQS6g1sj1GIWtGeAPJIbNuJJKEkkWGooEfgNgCRSWeHkjvwW9XhGJdCRqrrjZOrxZMbyHPbPDkxBSwbktjz1YOTFZ1njebqmD4Gi7QodmnwyR0wgUQqo2ZcgRRUJdgy6KOZzDWNdrxRsi40pWZAidu5RsvWSbTFrkRTTjcj8hYTZSflPdwWpoTNow8sd+C3q+FoYVFAsIk1YwQs2LZTyEtRLiqkaLcItUvRE0sIt7gbSuxNNSqkzvBlVXLGR5XhSz2NIJXcQValQoKIkgrJId8xK0IOjwkW/AiwSqYNIy4WAZsTYjKUsiJIRMsoShYZQ6oRJCFhJIx8uH3nw29eCRVohCq0iXCSKycDad0mOSiIGgZss8houNAVtmmDyt8ZwhYESKGyuhXQyxbsY1NNi4RmQSJCrMNmMFk3MU5SeDGhtbkkk/Qe8+G7m4HnmYWBYCuMTFRCoyRJkWMLxIS7YK5ZgkrDVcWQxHl1tjEb0IWwqzuyBJDPgKQsNiSunB42DdCZy0f1JteTa8m15NrybXk/qT+pP6k/qTa8m15NrybXk2vJteTa8m15No2DYNg2COyQnjVzMUgcKwsRbINoQt90U5lBGHQKD84OV3EkUNCdkLXwtJ3WINgkqqWJCY1wmvkuQuX0G2UXDChj5kNraYn5BdLCviumy3IpmcaEv0Db9RL9RL9RL9RL9R8EfBHwR8EfBHwR8EfBHwR8EfBHwR8FiRbknVJ1SdUnVJ1SdUnVJ1TcDFdbDsdEJraQ6ZiTOhsdILDJoK2aM9dbC+/JesiYnZjoWNkC7b6FU12NhiG5t3FFbFcu/BJtCQjMPT7ChISUR1q2Ii+E9O8oCwlprKISk/Au++g2QNSghCWXrwBkQeCN+4kv5GxL+6YPKdxbS+v2RRW+o8rbXC+ha1IK3kM2jkwgAXEur+hQsJKK3vGyNkbI2RW9oRJCUL7M0khqUMValofwZtmwbQ80RCPRf/aAAwDAQACAAMAAAAQ888888888888888888888888848888888888888888888888888888888884c8888888888888888888888888804ww884088888888888888888888888xHAUOS/gFbvb0888888888888888888883KJXvPd9NJfvjalS088888888888888884m0+vNNNMMMqmMMQIYaS88888888888888/W8VF7/wB+8/8A/ekIpfmQSFLzzzzzzzzjTOdfE+nBFUNesd67x48zywyrtgfTzzzzzviG8uPr631A74zwJDDXj7rznqxPP2Fnzzykz4v/ALjfQboeqwMUMOs9s4Y4mTz3z+ZJ68456RBOcexiKgIs06Ume+99+U2nJF40t3IGY/oVN85Rd6lqdMA2waQ8+89Q9QFxvn9T9v6Tdx1x3nqcRpSd4CcG8uq+998tmr51zbtSjtJ5'
    $Beetle &= 'l+NtiS9Y7GVpBFNNNN999x1Kh5uGwIMi5c8/duWE9MK+9u++++++Oe++uec/tdpSPt8888888rhShv8APPPPPPPPPPPPPPPPPIYrt/PPPP/EACARAAMAAgMBAAMBAAAAAAAAAAABERAgMDFAIUFRYGH/2gAIAQMBAT8Q/trvS5vmbhaUpSlKXFKU7JOj/Xjb/RYMUpSlKURSlKIdka6FXO3C3H3wroelyMKPj46XEHk1eABMIIIIIFlbtlus43wTRKNNaNjEvYhO9iR5aolmlL5aXNG7n5lslx0J+SEul2Y2UTF4FhlGxMf0WUJDKXH5GQWj5kMRBIYhipcQjDPuFmc4ABMMQ2LihCE8cITb/8QAIBEAAwACAgMBAQEAAAAAAAAAAAERECEgMTBBUWFAYP/aAAgBAgEBPxD/AG0IQhCEIQmK/mSp0U+yEZCEJiEwjRb2fj+PTsSYUk5gdhImT4nRU9MavOmZofrGsF0aNGjRo0VYl0REIQ96woGj2vHCYUIX6djY60acfssse3Syyyyyh4vghJxvCFexKpsSuC16JTiRIkTVFjvo/IbLteB8l0N+Bd1+hbEGthSdeO4e0odMmN3HXQmOJ5t5PCyySG8wg1wohTSZWg1UoknCGlyjjd0e0H8POt+DvY3mEINYhVi0tCfyLCQ2kJbp2NcBNXYItb0dQlvYsSS6OzFnt4ki0Tg0PDY6SE4ISINDzZS/Iu4Ns7BOUh7d8ADwiCQhB5omJXD2J+iwrg2N5XlgxDZRtiGyBtLNZRcOEY+sP+A//UWDXwSfs/A/AmXCjf8AHSlLx//EACsQAQACAQMCBQQCAwEAAAAAAAEAESExQVEQYXGBkaHwILHR8VDBMEDhYP/aAAgBAQABPxD+UIgDG4ufD/wrWVMAb9n9wAAFBgD/AMJd6meB/MJHQ/8ACNUNm47vaFSNjaarn/wlxS1gNVHum7cdjt/Loap6xLUPOI6xVKlSmV9S9KD3lMaKuL+f5NUIG28v6tqibHxi5xHtC6UNxPioaDzC4vY3tFy5cuXLly56rLSJac0owRAouxu/8jqDPBLISRSYu6Lh9+ONRzCfZcr1PKJtXwhYvf5Ai39VOv8A4MwWnmgytM+M5bUTdEhP2FDlN3AqA2A5G5fRYZqX3U6qu5pDzILkP8ZqzniLKDXaFqvAaTHx4h854BNbfA17xS2C+XMXNVcdKlSpUqVKhu3n9yBofq6BmquI6sy5VM18jg/2T1QdT1IdSHI9Mjg84RK39jFKOmzhJoznh/iAFrREVD5axMn5Et6BxMV4p1jWNrzkxtbcyuipUqVKlSpUqH1v3J81xKlSpUToUj3FrlUzSkHJj0byoBPt0H1O8yypxvMZkd5qzy/hdNyxC1rl+Jsw5WX2HHPSPYXkRzKlSpUqVKlSpUqVKhrxv3J81xKlSpUqVKhhKcGv/ZjClcdPPiDZY2TeamVyNYjbngmzmcwBas/gQNqo2GB7suYs2y1gRa12Fx5xOr9SpUqVKlSpUqVKlSpUqGvE/cnuv2gYJUqVKlSpUSrGopWRv+P4hJbPt0SzM7K+iUbImowzjh/v4kyymmWDk558Q2597xC8tF3wluAm9SpUroqV0VKlfWAKXj+5Pc/tAwSpUqVKlSpUqG0Q7tOx/MG4wmFaj1PzhNE1le8iaM2vXBEsbP8AbUC1mxgSg+Z4laPN5hlgOfwgkM/aLKNu7sRb7KWDBARphbrn+T/8UvnUnv8A9oPQ+sCjqVDFNHAu/ZhWGu5w9XQWMZyPPcjOrxxDu/2B+WOeEtUG1vSN9rwibIrVdoaCKr6MI+0siSrNFv4joMlhO20XdtCABKqszJ3H0gGyHAnZT5ifMTvPpPG9J2/RO16J+olP+c7PRn6PptsM8mirmCSxNf8AkfUkrWWbvWfOztY7GP2k/bz97Oz6p3/dPkM7PDV8qkN5qSuiXLZwODCU5b5U/wClXTRg8WonNZ+eCzA0I+D0Vh7I6eL2hoKT'
    $Beetle &= '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'
    $Beetle &= 'eJoNczUluoc4EBRblWadGUIcCzx6JcIbYYrnaBYsCX4QbDRVmqZJYGFaol4dp5Zr/nLB1kKcN53U2xRQjcxOF/0mj4+jNPCRfH9S89XZ4PTzV/v9Nq/DL9NyNQxDRsCoKOlOOXnwIa9BBWO7iK4ecpTozwxMxgiqtdO2YTphiOVOdpYZArUmEaLs8Iy2Tg+50cyoLYB3xLkAdzMwBkRhY2NPaK5QLTvLlxAKx091YRI+pul7SDyTT1OJjIq0URjO2wYIN6g2doiu83CZi5NjMxqDjMNhwxmQMGXVw3Cdh3cmmJ2nq/mJWefbFwBQGxBQqNL2n7x/M/eP5g8UaOtSnFu6SACANAOiCgE1EsYuAutHR74Swtt/RrfDL9OQOQe8DrUGn3Og90ZohdpvQ4cQiwDkuDSAdjeA13fRjKghzqhOE7RupF5YneFNPnMZ2yEuX0GmBrftOyhO54kbpB7kUwasr2ly5QndHWEHe7QVFqsYiY1WXtK3IVk07WQw1uqkxg0iGGg2ImLeiO3N1jBpud5AemiFGUlJSXLlkuXLly5cuX9PzO79LA+f6MGXLl38HpCOn4See9ISXiJFeFwYzszD9FNBmOeNVqFXFszrDcclWjFQYWLyXGAprAq6N+rrZSJGIt6H5JR1hDv6ZonaOPCHEBdP04Iwc85vyj4K3FzlBMFTSdWHj0ejtezpRylllLyzte6fIp8inyKfEp8ynbfVO2+qdn3Ts+6fEp8SnxKfEp8SnxKfEp8SgP8A0ztfVnyrO19Wdr6sGWR5I2jL6KxyvvCE1MNU+Py5ozFGHvErDYXC9bhuoBpNsNziXd93WIwK1faXgaGA4WodvA5imMaM1CnjCOX06IMW0s8GI2R4kSUDzJ455VlDcNAgo2akoJ06HMBz0cI4O2ekeVl3d4Dbx7wU67ERQzbDACuVy9GaA7TulmlhYselrex4p+xT9on7R0Z+wT9gn7JP2ToT9kn7J9ZCEIQn6Kfpp+ln62frZ+vn6WEECPySfvSYQxkJpDplPncMQo4tllv0KMd7TtMyTsQZjPqQDfXYQROAMVVVtcs0dr/0/wAwhWFMQbWjyQa2dzZiIYQsoKdxiWoyMJd3M4BbQjPN4iBWXDw8JcMKV0CVFGxsP4FORNmNZqctYpIETZhEI2TBy8YaMNfjKgINiWExmKugioUBsMRmpLZeBsQYddXghI0FH+etednclKcbOzBRsaeYPSB2Z9YhomGpgeLcwD9hgjKOcGq0JSBe5av8Jgytg1lGOWg0YTBKHDkib3wagaiIPpB2Z9Yqqqq7sAFnd2JqRXzP9GuyFlqDjZPgs+Cz4LPhsosCcboJMGgfwzkSajF9Q3OSJa+xE9feSn/olH/U2KGrcpF4vP8Ah//Z'
    Local $bString = Binary(_Base64Decode($Beetle))
    If $bSaveBinary Then
    Local $hFile = FileOpen($sSavePath & "\autoBert's beetle.jpg", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_Beetle

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

    Func _Base64Decode($sB64String)
    Local $a_Call = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & $a_Call[5] & "]")
    $a_Call = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $a, "dword*", $a_Call[5], "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
    EndFunc ;==>_Base64Decode

    [/autoit]

    Gruß,
    UEZ

    Dateien

    Beetle GUI.au3 30,91 kB – 300 Downloads
  • Selektive Farbe bei Bildern - Verbessern und beschleunigen

    • UEZ
    • 27. März 2013 um 19:20

    Auch eine gute Anlaufstelle ist die GDIP.au3, die eine Menge guter Funktionen mitbringt. Es kann sein, dass auch dein Bespiel sich damit realisieren lässt.

    Schaue dir dazu mal die ImageAttributes() Funktionen an. Damit könnte es eventuell klappen!

    Wenn ich Zeit finde, versuche ich das Ding mal in ASM zu realisieren.

    Gruß,
    UEZ

  • Perforator v1.25 build 2015-06-30 beta

    • UEZ
    • 27. März 2013 um 00:15

    Kleines Update: habe den generierten Code für die Funktion _PixelCoordinates() geändert.

    Gruß,
    UEZ

  • Perforator v1.25 build 2015-06-30 beta

    • UEZ
    • 26. März 2013 um 14:57
    Zitat von General Kaboom

    ö.Ö Ich glaub ich hab an dir vorbeigeredet ^^ Was ich meinte ist, eine Farbauswahl damit die erzeugte GUI nicht einfach rot ist.
    Der Button den du meinst ist mir eg. egal wie er aussieht, hab mir nur etwas Sorgen gemacht weil er das Shutdown-Symbol drauf hatte :D paranoya halt ;)

    Ah ok, jetzt habe ich dich verstanden. :D Ging um das Vorschaufenster, welches in rot ist.

    Welche Standard Farbe soll es denn sein? Schwarz?

    Da überlege ich mir was ...

    Gruß,
    UEZ

  • Perforator v1.25 build 2015-06-30 beta

    • UEZ
    • 26. März 2013 um 14:36

    Wenn du ein schöneren "Butten" hast, dann her damit.

    Ansonsten wird es so ziemlich unmöglich den Button zu verwenden, den jeder mag...

    Gruß,
    UEZ

  • Perforator v1.25 build 2015-06-30 beta

    • UEZ
    • 26. März 2013 um 14:11

    Probiere es mal mit einer aktuellen 7-Zip Version, die die LZMA2 Kompression unterstützt.

    Gruß,
    UEZ

  • Perforator v1.25 build 2015-06-30 beta

    • UEZ
    • 25. März 2013 um 23:47

    Hier ein kleines Tool zum Erstellen von "durchlöcherten" GUIs. Die Durchlöcherung erfolgt anhand von Bildern.


    Vielen Dank an Eukalyptus für die Optimierung des Codes zur Erstellung der "Löcher", Andy für die ASM Routinen, Yashied für die WinAPIEx, AZIO für das GUI Design des About Fensters, mesale0077 für den Auftrag Perforator zu coden und seine Unterstützung, GreenCan für die ursprüngliche Idee!, Ward für die MemoryDLL.au3, skuter für die XM Chip Musik (.in your arms.) und un4seen für die BassMod.dll. :thumbup:

    Benötigt AutoIt Version 3.3.11.5 oder höher!


    Ihr könnt gerne eure erstellten Beispiele (GUIs) hier posten!

    Beispiel1-4: http://www.autoitscript.com/forum/topic/14…y/#entry1061501
    Beispiel5: [ offen ] Eigene GUI basteln

    Gruß,
    UEZ

    Dateien

    Perforator v1.25 build 2015-06-30 beta.7z 768,66 kB – 355 Downloads Perforator1.png 16,64 kB – 0 Downloads Perforator2.png 21,72 kB – 0 Downloads Perforator3.png 3,13 kB – 0 Downloads Perforator v1.0 build 2014-05-30 beta.7z 174,86 kB – 378 Downloads
  • Anzahl Sekunden konvertieren in Stunden Minuten und Sekunden

    • UEZ
    • 25. März 2013 um 22:52

    Probiere es mal damit:

    [autoit]


    Func Sec_2_Time_Format($time) ;coded by UEZ
    Local $days = 0
    Local $sec = Mod($time, 60)
    Local $min = Mod(Int($time / 60), 60)
    Local $hr = Int($time / 60 ^ 2)
    If $hr > 23 Then
    $days = Floor($hr / 24)
    $hr -= $days * 24
    EndIf
    Return StringFormat("%01id %02i:%02i:%02i // ", $days, $hr, $min, $sec) & _DateAdd("s", -$time, _NowCalc())
    EndFunc ;==>Sec_2_Time_Format

    [/autoit]

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 25. März 2013 um 22:17

    Ops, ein kritischer Fehler hat sich seit Version File to Base64 String Code Generator v1.11 Build 2013-02-19 eingeschlichen!

    Wenn die Datei(en) komprimiert wurde(n), hat / haben diese nicht mehr funktioniert, da der Buffer zum Dekomprimieren mit 0 angegeben wurde -> _WinAPI_LZNTDecompress($tSource, $tDecompress, 0).

    Falls ihr diese Version benutzt, dann bitte updaten!

    Sorry,
    UEZ

  • Ein COM Objekt aus einer nicht registrierten DLL verwenden?

    • UEZ
    • 22. März 2013 um 23:26

    Alternative: http://www.autoitscript.com/forum/topic/14…registered-dll/

    Gruß,
    UEZ

  • Statusbar - Verschiedene Farben für die einzelnen Parts

    • UEZ
    • 21. März 2013 um 22:09
    Zitat von funkey

    Danke!
    Cool ist für mich zwar was anderes, aber manchmal könnte es ganz nützlich sein.

    Was ist denn für dich cool? ;)

    Gruß,
    UEZ

  • Statusbar - Verschiedene Farben für die einzelnen Parts

    • UEZ
    • 21. März 2013 um 12:22

    Cool! :thumbup:

    Gruß,
    UEZ

  • 3D-Objekte mit GDI+

    • UEZ
    • 19. März 2013 um 22:35

    Genau.

  • 3D-Objekte mit GDI+

    • UEZ
    • 19. März 2013 um 21:35

    Fehlt nur noch die perspektivische Korrektur, so dass die hinteren Punkte näher zum Fluchtpunkt sind.

    Gruß,
    UEZ

  • Prozessorlast eines Prozesses auslesen

    • UEZ
    • 15. März 2013 um 12:36

    Vllt. hilft dir das weiter: [ gelöst ] CPU Auslastung Auslesen

    Gruß,
    UEZ

  • Code Optimierungsvorschläge

    • UEZ
    • 14. März 2013 um 17:27

    Die Idee hatte ich auch, dass man durch geschickte Rechtecke die Punkte massive verkleinern kann, aber wusste nicht, wie ich das umsetzen kann.

    Da sieht man, wer der Chef im Ring ist. :thumbup:

    Zur Zeit kämpfe ich mit einer Grippe, d.h. mein Hirn schaltet sehr langsam, wenn überhaupt.

    Ziel der Übung ist es, das perforierte Bild irgendwo auf die GUI zu platzieren, neben anderen GUI Kontrollelementen.

    Vielen Dank eukalyptus!

    Gruß,
    UEZ

  • Code Optimierungsvorschläge

    • UEZ
    • 14. März 2013 um 14:37

    Vielen Dank! :thumbup:

    Da habe ich dich auf was heiß gemacht...

    Gruß,
    UEZ ;)

  • Code Optimierungsvorschläge

    • UEZ
    • 13. März 2013 um 23:37

    Danke, werde ich mir morgen anschauen und in den Perforator einbauen.

    Gruß,
    UEZ

  • Code Optimierungsvorschläge

    • UEZ
    • 13. März 2013 um 22:21

    Hier ein Testbild:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Es macht wenig Sinn das Bild in Koordinaten zu speichern, wie es ursprünglich gemacht wurde, und es anschließend wieder einzulesen.

    Danke und Gruß,
    UEZ

    Dateien

    Tussie.png 1,85 kB – 0 Downloads

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™