D.h., wenn im Namen kein Buchstabe vorkommt, dann soll die Datei in den entsprechenden Ordner verschoben werden, ansonsten in einen anderen Ordner.
Ferner kommen die Buchstaben nur am Anfang vor.
Richtig?
Gruß,
UEZ
D.h., wenn im Namen kein Buchstabe vorkommt, dann soll die Datei in den entsprechenden Ordner verschoben werden, ansonsten in einen anderen Ordner.
Ferner kommen die Buchstaben nur am Anfang vor.
Richtig?
Gruß,
UEZ
Very impressiv Andy, meine Eukalyptus ![]()
Das hast du also zu Weihnachten gemacht! ![]()
Starkes Stück arbeit, vor allem der ASM Teil ist der Hammer! Cool wäre noch eine Art Animation...
Ich habe da auch eine Vision als Intro für meine Watermark App, aber ich habe keine Ahnung, ob ich die Vision in Bits und Bytes bringen kann... ![]()
LG,
UEZ
Diese Version habe ich benutzt: http://users.telenet.be/ws36637/download/quricol.zip
Mit diesem Code funzt es unter X64:
[autoit]
#AutoIt3Wrapper_UseX64=y
Global $iMargin = 4, $iPixelSize = 2
$sPath = @ScriptDir & "\"
$_sImageName = "Test"
$_sText = "Test"
$a = DllCall("quricol64.dll", "none", "GenerateBMPW", "wstr", $sPath & $_sImageName & ".bmp", "str", $_sText, "int", $iMargin, "int", $iPixelSize) ; == funktioniert
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
; == TErrorCorretion
Global Enum $QR_ECLEVEL_L = 0, $QR_ECLEVEL_M, $QR_ECLEVEL_Q, $QR_ECLEVEL_H
$b = DllCall("quricol64.dll", "none", "GenerateBMPW", "wstr", $sPath & $_sImageName & "2.bmp", "str", $_sText, "int", $iMargin, "int", $iPixelSize, "int", $QR_ECLEVEL_Q) ; == funktioniert nicht
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $b = ' & $b & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;~ DllCall("quricol32.dll", "none", "DestroyBuffer", "ptr", $iAddress) ; <== CRASH!!!
[/autoit]Es werden 2 BMPs erstellt, die unterschiedlich sind.
Keine Ahnung, wann man DestroyBuffer benutzen muss. Vielleicht ist dieser Link nützlich: http://delphi32.blogspot.de/2011/11/qurico…or-library.html
Gruß,
UEZ
Probiere es mal damit:
#AutoIt3Wrapper_OutFile=c:\windows\system32\Test.scr
#AutoIt3Wrapper_UseX64=n
#include <Date.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#include <Timers.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
_Singleton(@AutoItExe)
; -Authors: name22 (http://www.autoit.de), Andy (http://www.autoit.de), Facemix (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Global $idle_o, $idle_n, $parent_pid, $aChildProcess, $iFlakeCount, $iMaxRadius
[/autoit] [autoit][/autoit] [autoit]#region WINDOWSTOOL
[/autoit] [autoit][/autoit] [autoit]Global $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
[/autoit] [autoit][/autoit] [autoit]Global Const $app_name = "GDI+ Countdown-Screensaver by (C) Clemens 2012"
Global Const $ver = "v1.0 build 2012-11-24"
Global $hGUI, $iW, $iH, $GUI_H, $GUI_W, $GUI_X, $GUI_Y, $r, $show_FPS = 0
Global $maxStars = 150, $size = 1
Global $parent_pid, $aChildProcess
Global Const $hFullScreen = WinGetHandle("Program Manager")
Global Const $aFullScreen = WinGetPos($hFullScreen)
Global $main_screen_x = Abs($aFullScreen[0])
Global Const $ini_file = @ScriptDir & "\GDI+ Countdown-Screensaver.ini"
Global $cmdparam = "/s"
If $CmdLine[0] Then $cmdparam = StringLeft($CmdLine[1], 2)
Switch $cmdparam
Case "/s"
$iW = @DesktopWidth
$iH = @DesktopHeight
$GUI_X = $aFullScreen[0]
$GUI_Y = $aFullScreen[1]
$GUI_W = $aFullScreen[2]
$GUI_H = $aFullScreen[3]
$hGUI = GUICreate($app_name, $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP, $WS_EX_TOPMOST)
$iFlakeCount = 500
$iMaxRadius = 3
Case "/c"
Opt("GUIOnEventMode", 0)
MsgBox(0,"Einstellungen","Die Einstellungen sind derzeit noch nicht vorhanden! - made by (C) Clemens")
Exit
Case "/p"
$iFlakeCount = 50
$iMaxRadius = 2
$iW = 152
$iH = 112
$GUI_X = 0
$GUI_Y = 0
$GUI_W = $iW
$GUI_H = $iH
$main_screen_x = 0
$show_FPS = False
;$maxStars = 30
$size = 1
$hGUI = GUICreate("GDI+ Countdown-Screensaver by (C) Clemens", $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP)
_WinAPI_SetParent($hGUI, $CmdLine[2])
$parent_pid = _WinAPI_GetParentProcess(@AutoItPID)
EndSwitch
#endregion WINDOWSTOOL
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[/autoit] [autoit][/autoit] [autoit]#region BILDSCHIRMSCHOHNER
Global Const $nTau = ACos(-1) * 2
Global $vNTdll = DllOpen("ntdll.dll")
Global $tPrecSleep = DllStructCreate("int64 time;")
Global $pPrecSleep = DllStructGetPtr($tPrecSleep)
#region SETTINGS
[/autoit] [autoit][/autoit] [autoit]Global $iWidth = $iW
Global $iHeight = $iH
Global $nFPS = 25
Global $nStepSpeed = 1
[/autoit] [autoit][/autoit] [autoit]#region COLORS
Global $iARGB_BG = 0xFF505050
Global $iARGB_Snow = 0xFFFFFFFF
Global $iARGB_TextFill = 0xFF0000FF
Global $iARGB_TextFill2 = 0xFFFF0000
Global $iARGB_TextFill3 = 0xFF0000FF
Global $iARGB_TextFill4 = 0xFF353535
Global $iARGB_TextBorder = 0xFFA00000
#endregion COLORS
#region SNOWFLAKES
Global $iMinFallingSpeed = 20, $iMaxFallingSpeed = 50
Global $iMinOscillations = 2, $iMaxOscillations = 5
Global $iMinOscillationDist = 10, $iMaxOscillationDist = 50
Global $iMinRadius = 1
#endregion SNOWFLAKES
#region SNOWBLAST
Global $iBlastRadius = 200
Global $iBlastAccell = 300
Global $nAirFriction = 0.95
#endregion SNOWBLAST
#endregion SETTINGS
[/autoit] [autoit][/autoit] [autoit]#region Global Variables
Global $aFlakes[$iFlakeCount + 1][8] = [[$iFlakeCount]]
Global $hDC_Window, $hDC_Bitmap, $hBitmap, $hGraphics, $hOldObj, $hBrush_Snow, $hBrush_TextFill, $hPen_Border
Global $hMatrix, $tLayout, $hFormat, $hFamily, $hPath, $nScale, $nStep = 0, $iM, $iS, $iD, $sText, $sTextOld
Global $nSleepTime = 1000 / $nFPS
#endregion Global Variables
#region Generate Snow
For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist) * (-1) ^ Random(1, 2, 1)
Next
#endregion Generate Snow
GUISetState()
[/autoit] [autoit][/autoit] [autoit]#region Initialize GFX Resources
$hDC_Window = _WinAPI_GetDC($hGUI)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
$hOldObj = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Bitmap)
_GDIPlus_GraphicsSetClipRect($hGraphics, 0, 0, $iWidth, $iHeight)
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
$hBrush_Snow = _GDIPlus_BrushCreateSolid($iARGB_Snow)
$hBrush_TextFill = _GDIPlus_BrushCreateSolid($iARGB_TextFill)
$hPen_Border = _GDIPlus_PenCreate($iARGB_TextBorder, 3)
DllCall($ghGDIPDll, "uint", "GdipSetPenLineJoin", "hwnd", $hPen_Border, "int", 2)
$hMatrix = _GDIPlus_MatrixCreate()
$tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hPath = _CreatePath("88 - 88:88:88")
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
_Redraw()
#endregion Initialize GFX Resources
#region Register Events
OnAutoItExitRegister("_Shutdown")
GUIRegisterMsg($WM_PAINT, "_Redraw")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Click")
AdlibRegister("_UpdateTime", 100)
#endregion Register Events
$nT_Sleep = TimerInit() + $nSleepTime
[/autoit] [autoit][/autoit] [autoit]While True
If $cmdparam = "/s" Then
GUISetCursor(16, 1, $hGUI)
$idle_n = _Timer_GetIdleTime()
If $idle_n < $idle_o Then _Close()
$idle_o = $idle_n
Else
If Not BitAND(WinGetState($hGUI), 2) Then _Close()
$aChildProcess = _WinAPI_EnumChildProcess($parent_pid)
If $aChildProcess[0][0] > 1 Then _Close()
EndIf
DllStructSetData($tPrecSleep, "time", -10000 * ($nSleepTime - TimerDiff($nT_Sleep)))
DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
$nFrameTime = TimerDiff($nT_Sleep)
$nT_Sleep = TimerInit()
$nFPS_Cur = 1000 / $nFrameTime
[/autoit] [autoit][/autoit] [autoit]$nStep += $nStepSpeed / $nFPS_Cur
$nScale = Abs(Sin($nStep))
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
[/autoit] [autoit][/autoit] [autoit]DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGraphics, "float", $nScale, "float", $nScale, "int", True)
DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)
DllCall($ghGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGraphics, "hwnd", $hPen_Border, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipFillPath", "hwnd", $hGraphics, "hwnd", $hBrush_TextFill, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGraphics)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][1] += ($aFlakes[$i][5] + $aFlakes[$i][3]) / $nFPS_Cur
$aFlakes[$i][0] += (Sin($aFlakes[$i][1] / $iHeight * $nTau * $aFlakes[$i][6]) * $aFlakes[$i][7] + $aFlakes[$i][2]) / $nFPS_Cur
$aFlakes[$i][2] *= $nAirFriction
$aFlakes[$i][3] *= $nAirFriction
If $aFlakes[$i][1] > $iHeight Or $aFlakes[$i][0] < -20 Or $aFlakes[$i][0] > $iWidth + 20 Then
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist)
EndIf
_GDIPlus_GraphicsFillEllipse($hGraphics, $aFlakes[$i][0] - $aFlakes[$i][4] / 2, $aFlakes[$i][1] - $aFlakes[$i][4] / 2, $aFlakes[$i][4] * 2, $aFlakes[$i][4] * 2, $hBrush_Snow)
Next
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
WEnd
Func _UpdateTime()
_TicksToTime(_DateDiff('s', _NowCalc(), @YEAR + 1 & "/01/01 00:00:00") * 1000, $iH, $iM, $iS)
If $iH > 23 Then
$iD = StringFormat("%02i", $iH / 24); volle Tage
$iH = $iH - ($iD * 24); volle Tage abziehen
Else
$iD = 0
EndIf
If $sText = "00 - 00:00:00" Then
AdlibUnRegister("_UpdateTime")
Feuerwerk() ; Funktion Feuerwerk soll dann ausgeführt werden
Else
$sText = StringFormat("%02i - %02i:%02i:%02i", $iD, $iH, $iM, $iS)
EndIf
If $sText <> $sTextOld Then
$sTextOld = $sText
DllCall($ghGDIPDll, "uint", "GdipResetPath", "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
EndIf
EndFunc
Func _Click()
Local $tMousePos = _WinAPI_GetMousePos(True, $hGUI)
For $i = 1 To $aFlakes[0][0]
$iX_Dist = ($aFlakes[$i][0] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "X")
$iY_Dist = ($aFlakes[$i][1] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "Y")
$iDist = Sqrt($iX_Dist ^ 2 + $iY_Dist ^ 2)
If $iDist = 0 Then ContinueLoop
If $iDist < $iBlastRadius Then
$aFlakes[$i][2] = (1 - $iDist / $iBlastRadius) * ($iX_Dist / $iDist) * $iBlastAccell
$aFlakes[$i][3] = (1 - $iDist / $iBlastRadius) * ($iY_Dist / $iDist) * $iBlastAccell
EndIf
Next
EndFunc ;==>_Click
Func _Redraw()
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
EndFunc ;==>_Redraw
Func _Close()
_Shutdown()
GUIDelete($hGUI)
Exit
EndFunc ;==>_Close
Func _Shutdown()
_WinAPI_SelectObject($hDC_Bitmap, $hOldObj)
_WinAPI_ReleaseDC($hGUI, $hDC_Window)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BrushDispose($hBrush_Snow)
_GDIPlus_PenDispose($hPen_Border)
_GDIPlus_MatrixDispose($hMatrix)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontFamilyDispose($hFamily)
DllCall($ghGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
_GDIPlus_Shutdown()
DllClose($vNTdll)
EndFunc ;==>_Shutdown
Func _CreatePath($sText)
[/autoit] [autoit][/autoit] [autoit]Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)
[/autoit] [autoit][/autoit] [autoit]Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
Local $hPath = $aResult[2]
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)
_GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
_GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
Return $hPath
EndFunc ;==>_CreatePath
#region FEUERWERK
[/autoit] [autoit][/autoit] [autoit]Func Feuerwerk()
Local $aDraw
Local $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
Global $iWidth2 = @DesktopWidth, $iHeight2 = @DesktopHeight, $aStart[$iCount][4] = [[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))],[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))]], $iSleeping = 0
For $i = 0 To UBound($aStart) - 1
$aStart[$i][0] = Random(0, $iWidth2, 0)
$aStart[$i][1] = Random(0, $iHeight2, 0)
$aStart[$i][2] = $iExplosion
$aStart[$i][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
Next
While True
_GDIPlus_GraphicsClear($hGraphics, $iBack)
If $iSleeping = 0 Then
For $j = 0 To UBound($aStart) - 1
For $i = 0 To 35
$aDraw = Dreieck($i * 10, $aStart[$j][2] - $iExplosion)
_GDIPlus_GraphicsDrawRect($hGraphics, $aStart[$j][0] + Round($aDraw[0], 0), $aStart[$j][1] + Round($aDraw[1], 0), 2, 2, $aStart[$j][3])
Next
$aStart[$j][2] += $iExplosionGround + Ceiling(10 * $iExplosion / ($aStart[$j][2]))
If $aStart[$j][2] > $iRadius Then
$iSleeping = $iSleep
$aStart[$j][0] = Random(0, $iWidth2, 0)
$aStart[$j][1] = Random(0, $iHeight2, 0)
$aStart[$j][2] = $iExplosion
_GDIPlus_PenDispose($aStart[$j][3])
$aStart[$j][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
EndIf
Next
Else
$iSleeping -= 1
EndIf
_WinAPI_RedrawWindow($hGUI, 0, 0, 2)
WEnd
EndFunc ;==>Feuerwerk
Func Dreieck($iWinkel, $iLaenge)
Local $iDeg = 0.0174532925199433, $aRet[2]
$aRet[0] = Sin($iWinkel * $iDeg) * $iLaenge
$aRet[1] = Cos($iWinkel * $iDeg) * $iLaenge
Return $aRet
EndFunc ;==>Dreieck
#endregion FEUERWERK
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ====================================================================================================================
; Name...........: _GDIPlus_GraphicsSetClipRect
; Description ...: Updates the clipping region of a Graphics object to a region that is the combination of itself and a rectangle
; Syntax.........: _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight[, $iCombineMode = 0])
; Parameters ....: $hGraphics - Pointer to a Graphics object
; $nX - X coordinate of the upper-left corner of the rectangle
; $nY - Y coordinate of the upper-left corner of the rectangle
; $nWidth - Width of the rectangle
; $nHeight - Height of the rectangle
; $iCombineMode - Regions combination mode:
; |0 - The existing region is replaced by the new region
; |1 - The existing region is replaced by the intersection of itself and the new region
; |2 - The existing region is replaced by the union of itself and the new region
; |3 - The existing region is replaced by the result of performing an XOR on the two regions
; |4 - The existing region is replaced by the portion of itself that is outside of the new region
; |5 - The existing region is replaced by the portion of the new region that is outside of the existing region
; Return values .: Success - True
; Failure - False and either:
; |@error and @extended are set if DllCall failed
; |$GDIP_STATUS contains a non zero value specifying the error code
; Remarks .......: None
; Related .......: None
; Link ..........; @@MsdnLink@@ GdipSetClipRect
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight, $iCombineMode = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetClipRect", "hwnd", $hGraphics, "float", $nX, "float", $nY, "float", $nWidth, "float", $nHeight, "int", $iCombineMode)
If @error Then Return SetError(@error, @extended, False)
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetClipRect
#region WinAPIEx.au3 functions
Func _WinAPI_GetParentProcess($PID = 0)
If Not $PID Then
$PID = _WinAPI_GetCurrentProcessID()
If Not $PID Then Return SetError(1, 0, 0)
EndIf
Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
Local $Ret, $Result = 0
$hSnapshot = $hSnapshot[0]
DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
$Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
While (Not @error) And ($Ret[0])
If DllStructGetData($tPROCESSENTRY32, 'ProcessID') = $PID Then
$Result = DllStructGetData($tPROCESSENTRY32, 'ParentProcessID')
ExitLoop
EndIf
$Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
WEnd
_WinAPI_CloseHandle($hSnapshot)
If Not $Result Then Return SetError(1, 0, 0)
Return $Result
EndFunc ;==>_WinAPI_GetParentProcess
Func _WinAPI_EnumChildProcess($PID = 0)
If Not $PID Then
$PID = _WinAPI_GetCurrentProcessID()
If Not $PID Then Return SetError(1, 0, 0)
EndIf
Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
Local $Ret, $Result[101][2] = [[0]]
$hSnapshot = $hSnapshot[0]
DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
$Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
While (Not @error) And ($Ret[0])
If DllStructGetData($tPROCESSENTRY32, 'ParentProcessID') = $PID Then
$Result[0][0] += 1
If $Result[0][0] > UBound($Result) - 1 Then
ReDim $Result[$Result[0][0] + 100][2]
EndIf
$Result[$Result[0][0]][0] = DllStructGetData($tPROCESSENTRY32, 'ProcessID')
$Result[$Result[0][0]][1] = DllStructGetData($tPROCESSENTRY32, 'ExeFile')
EndIf
$Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
WEnd
_WinAPI_CloseHandle($hSnapshot)
If $Result[0][0] Then
ReDim $Result[$Result[0][0] + 1][2]
Else
Return SetError(1, 0, 0)
EndIf
Return $Result
EndFunc ;==>_WinAPI_EnumChildProcess
#endregion
#endregion BILDSCHIRMSCHOHNER
Hier noch ein Link: Beispiel für einen Bildschirmschoner
Gruß,
UEZ
Probiere mal dies aus:
[autoit]
#include <GDIPlus.au3>
_GDIPlus_Startup()
[/autoit][autoit][/autoit][autoit]$hBitmap_Map = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\FFIOriginsMap9.png")
$iW = 20
$iH = 20
$hBitmap_area = _GDIPlus_BitmapCloneArea($hBitmap_Map, 0, 0, 16, 16)
$hBitmap_20x20 = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW, "int", $iH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
$hBitmap_20x20 = $hBitmap_20x20[6]
$hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_20x20)
_GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_area, 0, 0, $iW, $iH)
_GDIPlus_ImageSaveToFile($hBitmap_20x20, @ScriptDir & "\New_20x20.bmp")
_GDIPlus_GraphicsDispose($hCtxt)
_GDIPlus_BitmapDispose($hBitmap_20x20)
_GDIPlus_BitmapDispose($hBitmap_Map)
_GDIPlus_BitmapDispose($hBitmap_area)
_GDIPlus_Shutdown()
ShellExecute(@ScriptDir & "\New_20x20.bmp")
Exit
Habe die Beispiele oben noch nicht angesehen!
Gruß,
UEZ
Bitte auch die Überschrift ändern. ![]()
Gruß,
UEZ
Happy Birthday und alles Gute!
Gruß,
UEZ
Ich schließe mich meinen Vorredner an und wünsche euch beiden alles Gute, viel Gesundheit und viel Erfolg in eurem Leben.
Gruß,
UEZ
Sieht echt cooooooll aus! ![]()
Freue mich auf weitere kreative Werke von dir ![]()
Gruß,
UEZ
Dann von mir auch ein Happy Birthday und alles Gute!
Feier schön im Hotel mit dir selbst! ![]()
Gruß,
UEZ
Stimmt! Danke für den Hinweis!
Werde ich fixen!
Gruß,
UEZ
Welche Version benutzt du?
Btw, in der aktuellen Version schmiert das Programm unter WinXP ab, wenn man ein weiteres Bild lädt! Versuche gerade herauszufinden, warum das so ist!
Gruß,
UEZ
Update auf v0.77.
Gruß,
UEZ
Herzlichen Glückwunsch SB Keule und alles Gute!
Gruß,
UEZ
Ich habe die Historie in Beitrag 1 hinzugefügt. Bald wird v1.70 veröffentlicht...
Gruß,
UEZ
Sehr interessanter Ansatz. Danke für die Info!
Gruß,
UEZ
Willst du auch den Screensaver über die Systemsteuerung einstellen können inkl. dem kleinen Vorschaufenster, musst du ein wenig mehr coden.
Schaue mal hier nach: http://www.autoitscript.com/forum/index.php?showtopic=87200 (GDI+ 3D Star Scrolling Screensaver.au3).
AutoBert hat ja im Prinzip alles bereits geschrieben...
Gruß,
UEZ
Ein von mir ein "Happy Birthday" und alles Gute!
Gruß,
UEZ
Die Tools sind nicht dafür angelegt, diese Attribute zu setzen, aber ich freue mich immer über Feedback! ![]()
Ansonsten gebe ich water recht, dass dieser Topic falsch für AD Support Fragen ist.
Gruß,
UEZ
Mit "AutoIt Watermark Image" könnt ihr eure Bilder mit einem Wasserzeichen, als Text und/oder Bild, versehen.
Source Code: Pastebin.com
Einige Features werde ich noch implementieren.
CMD Funktionalität ist nicht vollständig getestet!
Mandatory:
-text "Any Text" | -bitmap <path to an image used for stamp>
-in <path to an image whichh should watermarked>
-out <save image name>
Optional:
-font <font name from the dropdown list. Default is Arial>
-size <font size. If 0 then it will be calculated automatically>>
-color <color of the font. Default is 0xFF0000>
-fx <one of the text fx -> default, outline or embossed. Default is Default>
-fxtype <one of the modes -> Text, Circular or Stamp. Default is Text>
-opaque <level of opaque (1-255). Default is 92>
-pos <fixed position (1-9). Default is 9>
-posx <manual x position. Default is 0>
-posy <manual y position. Default is 0>
-angle <in text/ circular mode the angle of the text (-180 - 180) or in stamp mode resize factor)
-circrad <radius of the circular text. If 0 then it will be calculated automatically>
-fill <fill stamp image -> 0 or 1. Default is 0)
-format <jpg|png|gif|bmp|tif -> jpg is default>
-jpgqual <jpg save quality (0-100). Default is 90)
-loadfont <path to a ttf font file>
-tpbgcolor <background color for transparent images>
-silent <show or supress messages in cmd mode (0 | 1). If 1 then file will be overwritten automatically!>
Alles anzeigen
Viel Spaß!
Gruß,
UEZ
Historie:
v0.50 beta build 2012-11-16: erste Veröffentlichung
v0.55 beta build 2012-11-16: Fehler bei der Repaint Funktion behoben und Drag 'n Drop Funktion hinzugefügt
v0.60 beta build 2012-11-17: Funktion zum Verändern der Bildgröße hinzugefügt (More Knopf -> Resize)
v0.75 beta build 2012-11-23: Text Rotationscode verbessert; Text Stanz Effekt, Slider zum manuellen Positionieren des Textes / Bildes, Füllen des "Stamp" Bildes und CMD Funktionalität hinzugefügt
v0.77 beta build 2012-11-26: einige kleinere Fehler behoben, installierte System Fonts werden jetzt in der Combo Box angezeigt, zusätzlich Option, um ein TrueType Font zu laden und zu benutzen und Undo Funktionalität hinzugefügt
v0.77 beta build 2012-11-27: Memory Leak behoben und WinXP Absturz nach dem 2. Laden eines Bildes behoben
v0.80 beta build 2012-11-28: Fehler in der Undo Funktion behoben (Hard Crash) und Funktion zum Verschieben des Textes mit der Maus hinzugefügt
v0.84 beta build 2012-12-08: einige kleine Fehler behoben, Systemmenü hinzugefügt (Check for Updates, Visit Homepage, About), Hintergrund Farbe für transparente Bilder kann jetzt gesetzt werden, die Größe des Hauptfensters kann jetzt verändert werden (beta!), in CMD Modus kann jetzt ein Ordner angegeben werden, so dass alle Bilder umgewandelt werden
v0.85 beta build 2012-12-12: einige kleinere Fehler behoben und Rotation mit der rechten Maustaste hinzugefügt
v0.87 beta build 2013-01-10: weitere kleinere Fehler behoben, Outlined Filled Text Effekt hinzugefügt und GUI Resize Funktionalität deaktiviert (wird wieder aktiviert, wenn die Resize Funktion gescheit läuft)
v0.88 beta build 2013-05-24: einige Bugs behoben
v0.89 beta build 2014-08-25: Code an AutoIt v3.3.12.0 angepasst, mehrere interne Modifikationen, Wasser Wellen Effekt hinzugefügt, wenn die Maus über das Bild läuft