[autoit]
#AutoIt3Wrapper_usex64=n
An den Anfang vom Script setzen
#AutoIt3Wrapper_usex64=n
An den Anfang vom Script setzen
Ups, hatte einen kleinen Fehler drin ![]()
While PixelGetColor($x,$y)=0xFF0000
WEnd
Ich finde diese Skript von name22 für diese Zwecke ganz gut geeignet (hab's ein kleines bisschen angepasst):
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>
#include <Constants.au3>
Opt("GUIOnEventMode", 1)
AdlibRegister("setColor", 500)
HotKeySet("{ESC}", "_Exit")
Global $hBrush[4], $hPen[4]
$iGUIColorBG = 0xFFFFFFFF
$iGUIWidth = @DesktopWidth
$iGUIHeight = @DesktopHeight
$hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight, 0, 0, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
GUISetState()
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
$hPen[0]=_GDIPlus_PenCreate(0xFF00FF00)
$hBrush[0]=_GDIPlus_BrushCreateSolid(0xFF00FF00)
$hPen[1]=_GDIPlus_PenCreate(0xFF0000FF)
$hBrush[1]=_GDIPlus_BrushCreateSolid(0xFF0000FF)
$hPen[2]=_GDIPlus_PenCreate(0xFFFF0000)
$hBrush[2]=_GDIPlus_BrushCreateSolid(0xFFFF0000)
$hDC = _WinAPI_GetDC($hWnd)
$hCDC = _WinAPI_CreateCompatibleDC($hDC)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iGUIWidth)
DllStructSetData($tSize, "Y", $iGUIHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)
$tPoint = DllStructCreate($tagPOINT)
$pPoint = DllStructGetPtr($tPoint)
DllStructSetData($tPoint, "X", 0)
DllStructSetData($tPoint, "Y", 0)
GUIRegisterMsg($WM_PAINT, "_ReDraw")
$hTimer=TimerInit()
While sleep(10)
_GDIPlus_GraphicsDrawRect($hBuffer, @DesktopWidth/2, @DesktopHeight/2, 4, 4, $hPen[3])
_GDIPlus_GraphicsFillRect($hBuffer, @DesktopWidth/2, @DesktopHeight/2, 4, 4, $hBrush[3])
_ReDraw()
If BitOR(WinGetState($hWnd), 2) <> 2 Then _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, 0, 0, 0, 0, BitOR($SWP_NOMOVE, $SWP_NOSIZE))
WEnd
Func _ReDraw()
Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
_WinAPI_SelectObject($hCDC, $hBitmapTmp)
_WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
_WinAPI_DeleteObject($hBitmapTmp)
EndFunc
Func setColor()
Local Static $iColor=0
$iColor+=1
If $iColor=3 Then $iColor=0
$hPen[3]=$hPen[$iColor]
$hBrush[3]=$hBrush[$iColor]
EndFunc
Func _Exit()
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
For $i=0 to 2
_GDIPlus_PenDispose($hPen[$i])
_GDIPlus_BrushDispose($hBrush[$i])
Next
_GDIPlus_Shutdown()
Exit
EndFunc
Wenn du schon den letzten Parameter von _FileListToArray benutzt, solltest du auch wissen, was dieser bewirkt.
GDI+ zu langsam? Meiner Meinung nach ist GDI+ schnell genug.
Ich wuerde zumindest gerne an dem Projekt teilnehmen.
Frohes neues Jahr ![]()
Rechtsklick --> Run/Compile Script (x86)
oder an den Anfang vom Script
#AutoIt3Wrapper_usex64=n
setzen
Vllt. wird in der Funktion ja abgefragt, ob der Parameter Default ist, wenn ja: width=bla und height=bla
Laut Hilfe nicht. Laut der Hilfe wird dabei in der Funktion die Variable auf den Standartwert gesetzt, wenn man $var=Default schreibt. Jedoch sehe ich darin keinen Sinn.
Wenn man Default als Parameter angibt, ist $sFont in der Funktion "Default". Scheint mir auch ein Bug zu sein. Egal bei welcher Funktion man Default angibt, statt dem Standartwert bekomtm man den String "Default".
Edit: Doch kein Bug:
Zitat von "Hilfe"Falls verwendet, wird der übergebene Parameter das Default Schlüsselwort setzen und nicht als optionaler Parameter übergeben.
Bei GraphicsClear kannst du doch Alpha Wert mit übergeben ![]()
_GDIPlus_GraphicsClear(0x00000000)
[/autoit]Ein kleines bisschen Off Topic, aber ich möchte keinen neuen Thread aufmachen: Wie kann ich meinen iPod (Firmware 4.2.1) jailbreaken? jailbreakme.com geht nur bis 4.0.1, limera1n sagt zwar, es sei erfolgreich gewesen, aber es ändert sich absolut nichts und bei greenp0ison komtm immer nur failed.
Nur weil du jetzt diese Zeile angehängt hast
[autoit];$b_trace ; [optional] Verfolgt eine Übertragung in einem extra Fenster.
[/autoit]
heißt das noch lange nicht, dass du den Parameter einfach benutzen kannst...
_StringBetween gibt ein Array zurück:
[autoit]#include <String.au3>
$sString="Hallo AutoIt Welt"
$aArray=_StringBetween($sString, "Hallo ", " Welt")
MsgBox(0, "_StringBetween", $aArray[0])
Edit: Zu langsam :pinch:
Edit bernd670 : Es muss $aArray[0] lauten -> korrigiert!
Wie Oscar schon sagte: Lern die Grundlagen von AutoIt. Dann weißt du auch, was falsch ist...
Tipp: $b_trace ist ein Parameter
Klar geht das:
[autoit]Execute("MouseMove(200, 200)&sleep(200)")
Execute("MouseMove(1000, 1000)&sleep(200)")
Assembler ist erlaubt, wenn dadurch jedoch starke Geschwindigkeitsvorteile erreicht werden, wird die Kategorie Geschwindigkeit bei dem Skript nicht bewertet ![]()
Außerdem gibts beim Restart der explorer.exe bei WIn7 (ob bei anderen Windows Versionen so ist weiß ich nicht) einen Bug. Nach dem Restart werden nämlich alle Fenster in der Taskleiste angezeigt, auch die, die da eigentlich nicht angezeigt werden (sidebar usw).
Es geht um das Script von name22, welches auch bei D3D Fenster geht ![]()