Zitatfür ein spiel was den sonst
Falls das ein Bot werden sollte, bitte >hier< klicken. ![]()
Zitatfür ein spiel was den sonst
Falls das ein Bot werden sollte, bitte >hier< klicken. ![]()
Ich würde das eher so machen:
[autoit]$Pos = MouseGetPos()
While $Pos[0] = MouseGetPos(0) And $Pos[1] = MouseGetPos(1)
Sleep(100)
WEnd
MsgBox(64, "Info", "Die Maus wurde bewegt")
SuFu hilft weiter
: Link
Dieses Script ähnelt ein wenig einem Music Maker, ist aber längst nicht so professionell. Es sieht ganz nett aus und ein paar Sounds habe ich mit dazugepackt
(siehe Anhang)
Das Script lädt mit BugFix's Rekursiver Dateiauflistung alle wav Dateien aus einem Ordner 'Sounds' im Script Verzeichnis, und stellt sie grafisch dar (weiße Blöcke, die sich innerhalb des Fensters verschieben lassen). Ich hoffe auf Kritik, Anregungen und Lob
(Es ist noch nicht ganz ausgereift, aber ich werde es im Laufe der Zeit noch verbessern). Bei sehr vielen Dateien fängt das Programm leider an zu laggen, was sich wohl kaum vermeiden lässt.
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <Misc.au3>
#include <Sound.au3>
Opt("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit]$GUIWidth = 800
$GUIHeight = 400
$iX_Line = 0
$iY_Line = 0
$sPath = @ScriptDir & "\Sounds"
If DirGetSize($sPath) = -1 Then
MsgBox(16, "Fehler", "Das Verzeichnis '" & $sPath & "' existiert nicht")
Exit
EndIf
$aFiles = _GetFilesFolder_Rekursiv($sPath, "wav", 0)
If $aFiles[0] = 0 Then
MsgBox(16, "Fehler", "Keine .wav Dateien im 'Sounds' Verzeichnis gefunden")
Exit
EndIf
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hPen = _GDIPlus_PenCreate("0x" & Hex(20, 2) & "FFFFFF", 4)
$Brush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$hPenTrans = _GDIPlus_PenCreate(0x00FFFFFF, 4)
Global $aBlock[$aFiles[0]][6]
$X = 20
$Y = 20
For $i = 0 To $aFiles[0] - 1
$aBlock[$i][0] = $X
$aBlock[$i][1] = $Y
$aBlock[$i][2] = _SoundOpen($aFiles[$i + 1])
$aBlock[$i][3] = False
$aBlock[$i][4] = 0
$aBlock[$i][5] = $hPen
$X += 40
If $X >= $GUIWidth - 40 Then
$Y += 40
$X = 20
EndIf
Next
$hWnd = GUICreate("Test", $GUIWidth, $GUIHeight)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic)
AdlibRegister("_DrawBlocks", 20)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_PenDispose($hPen)
_GDIPlus_PenDispose($hPenTrans)
_GDIPlus_BrushDispose($Brush)
_GDIPlus_Shutdown()
For $i = 0 To UBound($aBlock) - 1
_SoundClose($aBlock[$i][2])
Next
Exit
Case $GUI_EVENT_PRIMARYDOWN
For $i = 0 To UBound($aBlock) - 1
If $nMsg[3] >= $aBlock[$i][0] And $nMsg[3] <= $aBlock[$i][0] + 20 And $nMsg[4] >= $aBlock[$i][1] And $nMsg[4] <= $aBlock[$i][1] + 20 Then
$DistanceX = $nMsg[3] - $aBlock[$i][0]
$DistanceY = $nMsg[4] - $aBlock[$i][1]
While _IsPressed("01")
$aBlock[$i][0] = MouseGetPos(0) - $DistanceX
$aBlock[$i][1] = MouseGetPos(1) - $DistanceY
WEnd
EndIf
Next
EndSwitch
WEnd
Func _DrawBlocks()
_GDIPlus_GraphicsClear($hBuffer)
_GDIPlus_GraphicsDrawLine($hBuffer, $iX_Line, $iY_Line, $iX_Line, $iY_Line + $GUIHeight, $hPen)
For $i = 0 To UBound($aBlock) - 1
_GDIPlus_GraphicsFillRect($hBuffer, $aBlock[$i][0], $aBlock[$i][1], 20, 20, $Brush)
_GDIPlus_GraphicsDrawEllipse($hBuffer, $aBlock[$i][0] - $aBlock[$i][4] / 2 + 10, $aBlock[$i][1] - $aBlock[$i][4] / 2 + 10, $aBlock[$i][4], $aBlock[$i][4], $aBlock[$i][5])
Next
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
$iX_Line += 1
If $iX_Line >= $GUIWidth Then
$iX_Line = 0
For $i = 0 To UBound($aBlock) - 1
$aBlock[$i][3] = False
$aBlock[$i][4] = 0
$aBlock[$i][5] = $hPen
Next
EndIf
For $i = 0 To UBound($aBlock) - 1
If $iX_Line >= $aBlock[$i][0] And $aBlock[$i][3] = False Then
$aBlock[$i][3] = True
_SoundPlay($aBlock[$i][2])
EndIf
Next
For $i = 0 To UBound($aBlock) - 1
If $aBlock[$i][3] = True And $aBlock[$i][4] < 50 Then
$aBlock[$i][4] += 2
ElseIf $aBlock[$i][4] >= 50 Then
$aBlock[$i][5] = $hPenTrans
EndIf
Next
EndFunc ;==>_DrawBlocks
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Neue Version:
-ToolTips mit Infos über den Dateinamen
-Numpad +/- verändern die Geschwindigkeit des Balkens
-Pausieren Funktion (Ende)
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <Misc.au3>
#include <Sound.au3>
Opt("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit]$GUIWidth = 800
$GUIHeight = 400
$iX_Line = 0
$iY_Line = 0
$iSpeed = 1
$iSpeedOld = $iSpeed
$Pause = False
$sPath = @ScriptDir & "\Sounds"
If DirGetSize($sPath) = -1 Then
MsgBox(16, "Fehler", "Das Verzeichnis '" & $sPath & "' existiert nicht")
Exit
EndIf
$aFiles = _GetFilesFolder_Rekursiv($sPath, "wav", 0)
If $aFiles[0] = 0 Then
MsgBox(16, "Fehler", "Keine .wav Dateien im 'Sounds' Verzeichnis gefunden")
Exit
EndIf
Global $aNames[$aFiles[0]]
Global $szDrive, $szDir, $szFName, $szExt
For $i = 0 To UBound($aFiles) - 2
$aSplit = _PathSplit($aFiles[$i + 1], $szDrive, $szDir, $szFName, $szExt)
$aNames[$i] = $aSplit[3]
Next
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hPen = _GDIPlus_PenCreate("0x" & Hex(20, 2) & "FFFFFF", 4)
$Brush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$hPenTrans = _GDIPlus_PenCreate(0x00FFFFFF, 4)
Global $aBlock[$aFiles[0]][6]
$X = 20
$Y = 20
For $i = 0 To $aFiles[0] - 1
$aBlock[$i][0] = $X
$aBlock[$i][1] = $Y
$aBlock[$i][2] = _SoundOpen($aFiles[$i + 1])
$aBlock[$i][3] = False
$aBlock[$i][4] = 0
$aBlock[$i][5] = $hPen
$X += 40
If $X >= $GUIWidth - 40 Then
$Y += 40
$X = 20
EndIf
Next
$hWnd = GUICreate("Test", $GUIWidth, $GUIHeight)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic)
AdlibRegister("_DrawBlocks", 20)
HotKeySet("{NUMPADADD}", "_SpeedUp")
HotKeySet("{NUMPADSUB}", "_SlowDown")
HotKeySet("{END}", "_Pause")
;HotKeySet("{ESC}", "_Capture")
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_PenDispose($hPen)
_GDIPlus_PenDispose($hPenTrans)
_GDIPlus_BrushDispose($Brush)
_GDIPlus_Shutdown()
For $i = 0 To UBound($aBlock) - 1
_SoundClose($aBlock[$i][2])
Next
Exit
Case $GUI_EVENT_PRIMARYDOWN
For $i = 0 To UBound($aBlock) - 1
If $nMsg[3] >= $aBlock[$i][0] And $nMsg[3] <= $aBlock[$i][0] + 20 And $nMsg[4] >= $aBlock[$i][1] And $nMsg[4] <= $aBlock[$i][1] + 20 Then
$DistanceX = $nMsg[3] - $aBlock[$i][0]
$DistanceY = $nMsg[4] - $aBlock[$i][1]
While _IsPressed("01")
$aBlock[$i][0] = MouseGetPos(0) - $DistanceX
$aBlock[$i][1] = MouseGetPos(1) - $DistanceY
$Off = WinGetPos($hWnd)
ToolTip($aNames[$i], $aBlock[$i][0] + $Off[0], $aBlock[$i][1] + $Off[1])
WEnd
EndIf
Next
EndSwitch
WEnd
Func _DrawBlocks()
_GDIPlus_GraphicsClear($hBuffer)
_GDIPlus_GraphicsDrawLine($hBuffer, Round($iX_Line), $iY_Line, Round($iX_Line), $iY_Line + $GUIHeight, $hPen)
For $i = 0 To UBound($aBlock) - 1
_GDIPlus_GraphicsFillRect($hBuffer, $aBlock[$i][0], $aBlock[$i][1], 20, 20, $Brush)
_GDIPlus_GraphicsDrawEllipse($hBuffer, $aBlock[$i][0] - $aBlock[$i][4] / 2 + 10, $aBlock[$i][1] - $aBlock[$i][4] / 2 + 10, $aBlock[$i][4], $aBlock[$i][4], $aBlock[$i][5])
Next
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
$iX_Line += $iSpeed
If $iX_Line >= $GUIWidth Then
$iX_Line = 0
For $i = 0 To UBound($aBlock) - 1
$aBlock[$i][3] = False
$aBlock[$i][4] = 0
$aBlock[$i][5] = $hPen
Next
EndIf
For $i = 0 To UBound($aBlock) - 1
If $iX_Line >= $aBlock[$i][0] And $aBlock[$i][3] = False Then
$aBlock[$i][3] = True
_SoundPlay($aBlock[$i][2])
EndIf
Next
For $i = 0 To UBound($aBlock) - 1
If $aBlock[$i][3] = True And $aBlock[$i][4] < 50 Then
$aBlock[$i][4] += 2
ElseIf $aBlock[$i][4] >= 50 Then
$aBlock[$i][5] = $hPenTrans
EndIf
Next
EndFunc ;==>_DrawBlocks
Func _SpeedUp()
$iSpeed += 0.1
EndFunc
Func _SlowDown()
$iSpeed -= 0.1
EndFunc
Func _Pause()
If $Pause = False Then
$iSpeedOld = $iSpeed
$iSpeed = 0
$Pause = True
Else
$iSpeed = $iSpeedOld
$Pause = False
EndIf
Sleep(100)
EndFunc
;Func _Capture()
; _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Test.jpg")
;EndFunc
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Screenshots:
[Blockierte Grafik: http://img707.imageshack.us/img707/2378/example2f.th.jpg]
[Blockierte Grafik: http://img411.imageshack.us/img411/5594/example1v.th.jpg]
Zitat$Ws_Ex_Topmost -) zuständig für Die Button Schließen, Groß und Kleinmachen
Eigentlich ist der Stil dafür zuständig das Fenster immer "Topmost" (zuoberst) zu halten
Schon geschehen siehe Post #1
Hmmm Zeichenprogramm... So was?
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
Opt ("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit]$LineCount = 0
$dll = DllOpen("user32.dll")
Dim $aLines[99999][4]
For $i = 0 To UBound($aLines, 1) - 1
$aLines[$i][0] = ""
$aLines[$i][1] = ""
$aLines[$i][2] = ""
$aLines[$i][3] = ""
Next
$hWnd = GUICreate("Test", 400, 400)
GUISetState()
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
DllClose($dll)
Exit
Case $GUI_EVENT_PRIMARYDOWN
While _IsPressed("01", $dll)
_GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
For $i = 0 To $LineCount
_GDIPlus_GraphicsDrawLine($hBuffer, $aLines[$i][0], $aLines[$i][1], $aLines[$i][2], $aLines[$i][3])
Next
$Pos = MouseGetPos()
_GDIPlus_GraphicsDrawLine($hBuffer, $nMsg[3], $nMsg[4], $Pos[0], $Pos[1])
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
WEnd
$aLines[$LineCount][0] = $nMsg[3]
$aLines[$LineCount][1] = $nMsg[4]
$aLines[$LineCount][2] = $Pos[0]
$aLines[$LineCount][3] = $Pos[1]
$LineCount += 1
EndSwitch
WEnd
Zum Beispiel? Natürlich kann man daraus mehr machen, aber mir fällt nichts sinnvolles ein ![]()
Ich weiß, dass das nichts besonderes ist aber vielleicht kann ja irgendjemand etwas daraus verwenden.
Ein PIN Pad mit Zeitlimit und einer Wartezeit für die Eingabe. Komplett in GDI+ gezeichnet ohne externe Grafiken.
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
$GUIColorBG = 0xFFFFFFFF ;Hintergrundfarbe der GUI
$PadColor = 0xFF000000 ;Farbe der Pads
$PadTextColor = 0xFFFFFFFF ;Farbe des Textes auf den Pads
$ColorActive = 0xFF00FF00 ;Farbe der Pads, wenn aktiviert
$PadSize = 35 ;Größe der Pads
$Space = 5 ;Distanz zwischen den Pads
$GUIWidth = ($Space + $PadSize) * 3 + $Space ;GUI Breite (wird aus Padgröße berechnet)
$GUIHeight = ($Space + $PadSize) * 4 + $Space ;GUI Höhe (wird aus Padgröße berechnet)
$Key = ""
$Pass = "12345" ;Richtiges Passwort
$Timelimit = 20000 ;Zeitlimit für die Eingabe (nach Ablauf schließt sich das Script ordnungsgemäß)
#Region Pad Koordinaten
Dim $aPad[12][3]
$aPad[0][0] = $Space
$aPad[0][1] = $Space
$aPad[0][2] = "1"
$aPad[1][0] = $Space + $PadSize + $Space
$aPad[1][1] = $Space
$aPad[1][2] = "2"
$aPad[2][0] = ($Space + $PadSize) * 2 + $Space
$aPad[2][1] = $Space
$aPad[2][2] = "3"
$aPad[3][0] = $Space
$aPad[3][1] = $Space + $PadSize + $Space
$aPad[3][2] = "4"
$aPad[4][0] = $Space + $PadSize + $Space
$aPad[4][1] = $Space + $PadSize + $Space
$aPad[4][2] = "5"
$aPad[5][0] = ($Space + $PadSize) * 2 + $Space
$aPad[5][1] = $Space + $PadSize + $Space
$aPad[5][2] = "6"
$aPad[6][0] = $Space
$aPad[6][1] = ($Space + $PadSize) * 2 + $Space
$aPad[6][2] = "7"
$aPad[7][0] = $Space + $PadSize + $Space
$aPad[7][1] = ($Space + $PadSize) * 2 + $Space
$aPad[7][2] = "8"
$aPad[8][0] = ($Space + $PadSize) * 2 + $Space
$aPad[8][1] = ($Space + $PadSize) * 2 + $Space
$aPad[8][2] = "9"
$aPad[9][0] = $Space
$aPad[9][1] = ($Space + $PadSize) * 3 + $Space
$aPad[9][2] = "R"
$aPad[10][0] = $Space + $PadSize + $Space
$aPad[10][1] = ($Space + $PadSize) * 3 + $Space
$aPad[10][2] = "0"
$aPad[11][0] = ($Space + $PadSize) * 2 + $Space
$aPad[11][1] = ($Space + $PadSize) * 3 + $Space
$aPad[11][2] = "OK"
#EndRegion Pad Koordinaten
$hWnd = GUICreate("PIN", $GUIWidth, $GUIHeight, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION))
GUISetState()
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;Erstellt eine Grafik aus der Clientfläche der GUI
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic) ;Erstellt eine Bitmap aus der Grafik
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;Erstellt eine Grafik die der Bitmap zugeordnet ist
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2) ;Anti-Aliasing
_GDIPlus_GraphicsClear($hGraphic, $GUIColorBG) ;Füllt eine Grafik komplett in einer Farbe
$Brush_Pad = _GDIPlus_BrushCreateSolid($PadColor) ;Erstellt ein Füllobjekt mit einer bestimmten Farbe
$Brush_Pad_Active = _GDIPlus_BrushCreateSolid($ColorActive)
$Brush_Number = _GDIPlus_BrushCreateSolid($PadTextColor)
#Region Schrift
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
#EndRegion Schrift
_DrawPad()
$Estimated_Time = TimerInit() ;Initialisiert das Zeitlimit
While 1
$nMsg = GUIGetMsg(1) ;Wenn Parameter auf 1 ist, dann wird ein Array mit zusätzlichen Infos zurückgegeben
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_Exit()
Case $GUI_EVENT_PRIMARYDOWN
For $i = 0 To UBound($aPad, 1) - 1
If $nMsg[3] > $aPad[$i][0] And $nMsg[3] < $aPad[$i][0] + $PadSize And $nMsg[4] > $aPad[$i][1] And $nMsg[4] < $aPad[$i][1] + $PadSize Then _PadEvent($i) ;Überprüft, ob der Mausklick auf ein bestimmtes Pad erfolgt
_DrawPad()
Next
EndSwitch
If Not WinActive($hWnd) Then ;Wenn Fenster nicht aktiv, dann...
While 1
If WinActive($hWnd) Then ;Wenn Fenster wieder aktiv, dann... (Um zu verhindern, dass die GUI übermalt wird)
_DrawPad()
ExitLoop
EndIf
WEnd
EndIf
If TimerDiff($Estimated_Time) > $Timelimit Then ;Überprüft, ob das Zeitlimit erreicht ist
_Exit()
EndIf
WEnd
Func _DrawPad()
_GDIPlus_GraphicsClear($hBuffer, $GUIColorBG) ;Leert den Buffer
For $i = 0 To UBound($aPad, 1) - 1
_GDIPlus_GraphicsFillRect($hBuffer, $aPad[$i][0], $aPad[$i][1], $PadSize, $PadSize, $Brush_Pad) ;Zeichnet ein Pad
$tLayout = _GDIPlus_RectFCreate($aPad[$i][0], $aPad[$i][1], $PadSize, $PadSize) ;Legt das Layout für den Schriftzug fest
$aInfo = _GDIPlus_GraphicsMeasureString($hBuffer, $aPad[$i][2], $hFont, $tLayout, $hFormat) ;Passt das Layout auf die berechnete Größe für den String an
_GDIPlus_GraphicsDrawStringEx($hBuffer, $aPad[$i][2], $hFont, $aInfo[0], $hFormat, $Brush_Number) ;Zeichnet den String auf das Pad
Next
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight) ;Zeichnet den Buffer in die GUI Grafik
EndFunc ;==>_DrawPad
Func _PadEvent($iPad)
_GDIPlus_GraphicsFillRect($hBuffer, $aPad[$iPad][0], $aPad[$iPad][1], $PadSize, $PadSize, $Brush_Pad_Active) ;Macht das gleiche wie oben nur mit einer anderen Farbe
$tLayout = _GDIPlus_RectFCreate($aPad[$iPad][0], $aPad[$iPad][1], $PadSize, $PadSize)
$aInfo = _GDIPlus_GraphicsMeasureString($hBuffer, $aPad[$iPad][2], $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hBuffer, $aPad[$iPad][2], $hFont, $aInfo[0], $hFormat, $Brush_Number)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
Sleep(100) ;Wirkt realistischer ![]()
If $aPad[$iPad][2] = "OK" Then ;Wenn OK gedrückt, dann...
If $Key = $Pass Then ;Wenn Passwort richtig, dann...
MsgBox(64, "Info", "Passwort richtig")
_Exit()
Else ;Wenn Passwort falsch, dann...
MsgBox(16, "Fehler", "Passwort falsch")
$Key = ""
$Estimated_Time = TimerInit() ;Zeitlimit wird zurückgesetzt
Return
EndIf
ElseIf $aPad[$iPad][2] = "R" Then ;Wenn Reset gedrückt, dann...
$Key = "" ;Eingegebene Zeichen werden zurückgesetzt
Else ;Wenn irgendwas anderes gedrückt, dann...
$Key &= $aPad[$iPad][2] ;Wert der Gedrückten Taste wird zum String hinzugefügt
EndIf
$t = TimerInit()
Do
Sleep(10)
Until TimerDiff($t) > 1000 Or _IsPressed(01)
EndFunc ;==>_PadEvent
Func _Exit() ;Aufräumen ![]()
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BrushDispose($Brush_Number)
_GDIPlus_BrushDispose($Brush_Pad)
_GDIPlus_BrushDispose($Brush_Pad_Active)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Bei
[autoit]RegRead("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall" & $keyname, "InstallLocation")
[/autoit]Fehlen sämtliche "\". Ich weiß allerdings nicht ob es daran liegt.
Hab ich kurz zusammengebastelt
Ist nicht sehr ordentlich, aber müsste funktionieren.
#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hImage = _GDIPlus_BitmapCreateFromFile(@DesktopDir & "\Test.jpg")
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage)
$String = @HOUR & ":" & @MIN & ":" & @SEC
[/autoit] [autoit][/autoit] [autoit]$hBrush = _GDIPlus_BrushCreateSolid(0xA900007F)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 40, 0)
$tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $String, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $String, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_ImageSaveToFile($hImage, @DesktopDir & "\beispiel.jpg")
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Habe es mal ein wenig erweitert (nur so als Beispiel)
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBoxEx.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#include <File.au3>
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hImage = _GDIPlus_BitmapCreateFromFile(FileOpenDialog("Bild öffnen", @UserProfileDir & "\Pictures", "Bilder (*.jpg;*.jpeg;*.bmp;*.gif;*.png)"))
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage)
$Wasserzeichen = GUICreate("Wasserzeichen", 222, 107, 192, 124)
$Input = GUICtrlCreateInput("", 8, 72, 121, 21)
GUICtrlSetLimit(-1, 10)
$Combo = _GUICtrlComboBoxEx_Create($Wasserzeichen, "Uhrzeit|Datum|Computername|Benutzername|Benutzerdefiniert", 8, 40, 145, 25)
$OK = GUICtrlCreateButton("OK", 136, 72, 75, 25, $WS_GROUP)
$Label = GUICtrlCreateLabel("Bitte Text für das Wasserzeichen angeben:", 8, 8, 208, 17)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $OK
Switch _GUICtrlComboBoxEx_GetCurSel($Combo)
Case 0
$String = @HOUR & ":" & @MIN & ":" & @SEC
GUIDelete()
ExitLoop
Case 1
$String = @MDAY & "." & @MON & "." & @YEAR
GUIDelete()
ExitLoop
Case 2
$String = @ComputerName
GUIDelete()
ExitLoop
Case 3
$String = @UserName
GUIDelete()
ExitLoop
Case 4
If Not StringReplace(GUICtrlRead($Input), " ", "") = "" Then
$String = GUICtrlRead($Input)
GUIDelete()
ExitLoop
EndIf
EndSwitch
EndSwitch
WEnd
$hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex(InputBox("Transparenz", "(0-255)"), 2) & StringTrimLeft(_ChooseColor(2), 2))
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 40, 0)
$tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $String, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $String, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_ImageSaveToFile($hImage, _Path())
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Func _Path()
Local $szDrive, $szDir, $szFName, $szExt
$Path = FileSaveDialog("Speichern unter", @ScriptDir, "Bilder (*.jpg;*.jpeg;*.gif;*.png;*.bmp)")
$PathSplit = _PathSplit($Path, $szDrive, $szDir, $szFName, $szExt)
If Not ($PathSplit[4] = ".jpg" Or $PathSplit[4] = ".gif" Or $PathSplit[4] = ".png" Or $PathSplit[4] = ".bmp") Then
MsgBox(16, "Fehler", "Bitte Erweiterung angeben")
_Path()
EndIf
Return $Path
EndFunc ;==>_Path
Ich würde das ja so machen
:
Func _PixelSearch()
$coord = PixelSearch( 0, 0, @DesktopWidth, @DesktopHeight, 0xE5B56A, 0 )
If Not @error Then
MsgBox(0, "Die Koordinaten X und Y lauten:", $coord[0] & "," & $coord[1])
AdlibUnRegister()
EndIf
EndFunc
HotKeySet ohne 2ten Parameter "disabled" ihn (steht auch in der Hilfe). Also musst du nur mit WinActive den Status des Fensters überprüfen und ggf. HotKeySet("{ESC}", "") machen.
Wieso kopierst du nicht einfach temporär die nötigen Dateien vom USB-Stick auf den PC und startest sie da?
Vielleicht musst du bei der avi Datei auf den Codec achten. ![]()
Zur ersten Frage, die ich leider nicht ganz verstanden habe: UDF im Hintergrund laufen lassen
Suchst du vielleicht AdlibRegister?
Schau dir den 2ten Parameter bei _ArraySort an (steht in der Hilfe)
Wie wäre es, wenn du nur ein GUI verwendest und nicht 40 Stück?
Schließlich kannst du ja den Inhalt eines GUI auch nach dessen Erzeugung verändern
Vorab mal: In einer einzeiligen If Abfrage braucht man kein EndIf
Abgesehen davon:
If $BLABLA >= $Koordinate1 And $BLABLA <= $Koordinate2 Then MsgBox(0,"","Autoit.de")
[/autoit]