Funktioniert perfekt, aber darauf wäre ich nie gekommen Naja danke dir auf jeden Fall
Beiträge von Carsten8
-
-
hi
Ich habe eine Frage zu GDI+. Ich habe versucht eine Uhr zu bauen mit den _GDIPlus_Graphics... Funktionen. Den Zeiger zu zeichnen ist kein Problem nur wie bekomm ich ihn wieder weg um einen neuen zu zeichnen der etwas weiter ist? Bei _GDIPlus_GraphicsClear wird das Bild einfach nur schwarz bzw. eine andere Farbe, jenachdem was ich eingebe. Jedenfalls wollte ich den Ausgangszustand meines Bildes wiederherstellen wie er war bevor ich den ersten Zeiger gezeichnet habe.
Das ist mein Code:Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>Global Const $AC_SRC_ALPHA = 1
[/autoit] [autoit][/autoit] [autoit]
;~ Global Const $ULW_ALPHA = 2_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$pngSrc = @ScriptDir & "\uhr.png"
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)$GUI = GUICreate("Uhr", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED) ;Alles um eine durchsichtige PNG Datei als Hintergrund zu nehmen
[/autoit] [autoit][/autoit] [autoit]
SetBitmap($GUI, $hImage, 0)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()
WinSetOnTop($GUI, "", 1)
For $i = 0 To 255 Step 10
SetBitmap($GUI, $hImage, $i)
Next$controlGui = GUICreate("ControlGUI", $width, $height, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $GUI)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlCreatePic(@ScriptDir & "\grey.gif", 0, 0, $width, $height)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState()
$gr = _GDIPlus_GraphicsCreateFromHWND($controlGui)
$whitebrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$redbrush = _GDIPlus_BrushCreateSolid(0xFFFF0000)
$emptybrush = _GDIPlus_BrushCreateSolid(0x00FFFFFF)
_GDIPlus_GraphicsFillEllipse($gr, 95, 95, 10, 10, $whitebrush)
$count = 0
While 1
_GDIPlus_GraphicsClear($gr, 0x00FFFFFF)
_GDIPlus_GraphicsFillEllipse($gr, 95, 95, 10, 10, $whitebrush)
_GDIPlus_GraphicsFillPie($gr, 0, 0, 200, 200, $count , 5, $redbrush)
sleep(100)
$count += 1 ;Nur zum test, änder ich natürlich später noch
WEndGUIDelete($controlGui)
[/autoit] [autoit][/autoit] [autoit]
For $i = 255 To 0 Step -10
SetBitmap($GUI, $hImage, $i)
Next
_GDIPlus_GraphicsDispose($gr)
_WinAPI_DeleteObject($hImage)
_GDIPlus_Shutdown()Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
If ($hWnd = $GUI) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTESTFunc SetBitmap($hGUI, $hImage, $iOpacity)
[/autoit] [autoit][/autoit] [autoit]
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend$hScrDC = _WinAPI_GetDC(0)
[/autoit]
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmapDanke schonmal
Edit: Problem gelöst. Neues Problem steht weiter unten.
-
ahja stimmt hatte ich verwechselt. Wie wärs dann mit _IsPressed?
-
oder {MOUSE3} beim draufdrücken soweit ich mich erinnere.. Schau mal in der Hilfe
-
ich meine ja nicht nur den Titel auch die beschreibung etc. und da sind eben diese Zeichen drin die ich jetzt rausfiltern kann.
Danke euch! -
ich weiß aber es ist ein RSS Feed den ich duch die Tags (z.b. <title>) auslese.
-
Vielen Dank, geht perfekt. Muss nurnoch die ganzen HTML Tags filtern. Gibs da schon ne fertige Func? Ansonsten denke ich, ist es kein Problem die zu löschen
-
Hallo
Ich habe folgendes Problem:
Ich lade eine Internetseite per InetGet runter. Dabei erscheinen allerdings Zeichen wie z.B. <.
Wie ich kann ich diese Codes wieder in normale Zeichen umwandeln? In PHP habe ich folgendes gefunden: *KLICK*Danke schonmal im Vorraus
Carsten -
Hilft dir das weiter? https://autoit.de/index.php?page…wmapi#post43437
-
Er will die Zeile die normalerweise beim TrayIcon angezeigt wird (wenn TrayIconDebug 1 ist) einfach als Variable haben und diese dann in ein Label oder was auch immer schreiben. K.A. wie
-
Ich denke nicht, dass das mit HotKeySet geht (ist meines Wissens nach nur für Tasten).
[autoit]
Nimm lieber _IsPressed("04"):While 1
[/autoit]
If _IsPressed("04") Then
MsgBox(0, "_IsPressed", "Mittlere Maustaste wurde gedrückt!")
While _IsPressed("04") ;Damit die Meldung nicht kommt wenn man die Maustaste gedrückt hält
Sleep(10)
WEnd
EndIf
WEnd -
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>Global $hGUI, $hImage, $hGraphic, $hImage1
[/autoit] [autoit][/autoit] [autoit]; Create GUI
[/autoit] [autoit][/autoit] [autoit]
$hGUI = GUICreate("Show PNG", 1000, 800)
GUISetState() ;Muss vor den Ladevorgang; Load PNG image
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_StartUp()
$hImage = _GDIPlus_ImageLoadFromFile("MAIN.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage ($hGraphic, $hImage, 100, 100)
_GDIPlus_ShutDown()do
[/autoit]
until GUIGetMsg() = $GUI_EVENT_CLOSE -
evtl. die CPU Auslastung auslesen und dann checken ob sie hoch oder niedrig ist? Bei mir ist die beim Laden immer relativ hoch ..
-
Zitat von Forenregeln
Folgende Inhalte sind nicht erwünscht oder gar komplett verboten. Das Team behält es sich ausdrücklich vor, die Umsetzung der Regeln je nach Schweregrad zu verwarnen, zu löschen oder gar komplett zu sperren.
- Bots für Spiele jeglicher Art, insbesondere Onlinespiele und ganz besonders Silkroad Online sowie World of Warcraft
-
das skript ist doch dafür, um aus einer Bat(ch) datei eine ExE zu machen. So etwas willst du?
-
Neue Funktion: _captchaEmb (zum erstellen eines Captchas in einem eigenen Pic Controll)
-
ich würde die Mausposition speichern und nach 29 Minuten (kurz vor Ruhezustand) prüfen, ob die Maus wo anders ist. Wenn nicht, kann man davon ausgehen dass der Benutzer nicht am PC ist (wenn der check überhaupt notwendig ist ;)). Dann eben MausMove irgendwohin.
-
[autoit]
For $i = 1 to $CMDLINE[0]
[/autoit]
If $CMDLINE[$i] = "/t" And $CMDLINE[0] > $i Then
sleep($CMDLINE[$i + 1])
MsgBox(0, "Tada", "Nun habe ich " & $CMDLINE[$i + 1] & " ms gewartet.")
EndIF
Next
Eine Schleife machen in der alle Parameter geprüft werden ob er "/t" heißt. Wenn ja, dann soll er gleich mit prüfen ob nach "/t" noch ein Parameter kommt (die Millisekunden). Dann soll er sleepen -
Bin auch dabei dann. Sofern es die Schule zulässt (sollte sie aber ;))
-
sowas schützt davor, dass z.B. ein Bot ein Progamm steuern kann.