Gefällt mir!
Tolle Optik, kurzer knackiger Code = 5 Sterne!
Gefällt mir!
Tolle Optik, kurzer knackiger Code = 5 Sterne!
Das könnte auch noch funktionieren:
[autoit]$fT = ((Sin($fPos + $aCT[$i][2]) + 1) * 0.5) ^ 3
[/autoit]Entweder du nimmst BassASIO (Beispiel: _BASS_ASIO_ChannelEnable.au3)
Oder du schaust dir mal dieses Script hier an: Bass Ton bearbeiten
Da die Scripte schon älter sind, musst du wahrscheinlich alle $ghGDIPDll durch $__g_hGDIPDll ersetzen...
wie kann ich bei dem ColorText Saver den Text 5-10 sek stehen lassen wenn er fertig ist?
Das wird etwas schwierig.
Du kannst mal
$fT *= (Cos($fPos + $aCT[$i][2]) + 1) * 0.5
[/autoit]in der Funktion _Calc dazuschreiben
Frohes Fest euch allen!
Im konkreten Fall kannst du die Strings folgendermaßen finden:
1) googlen nach "ITaskbarList"
2) Ergebnis "ITaskbarList3 interface (Windows) - MSDN - Microsoft" öffnen
3) Unter "Requirements" - "Header" steht dann: "Shobjidl.h"
4) googlen nach "Shobjidl.h"
5) "Shobjidl.h" öffnen/downloaden; Ich hab den ersten Treffer von "github.com" verwendet
6) In dieser Datei nach "IID_ITaskbarList" bzw. "CLSID_TaskbarList" suchen
E
Man sollte niemals ein sleep in einer Callback-Funktion verwenden (müssen).
Bei deinem Problem hilft dir WM_ERASEBKGND weiter.
Weiters empfehle ich dir, immer mit einem Backbuffer zu arbeiten.
Das Neuzeichnen des Fensters geht schneller und es flackert nicht.
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
Global $iWidth = 400, $iHeight = 400
[/autoit][autoit][/autoit][autoit]_GDIPlus_Startup()
Global $hGUI = GUICreate("GDI+ Tut", $iWidth, $iHeight)
GUISetOnEvent(-3, "_Exit")
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit][autoit][/autoit][autoit]Global $hBmp_Buffer = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
Global $hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext($hBmp_Buffer)
_GDIPlus_GraphicsClear($hGfx_Buffer, 0xFFFFFFFF)
_GDIPlus_GraphicsSetSmoothingMode($hGfx_Buffer, 2)
Global $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000)
_GDIPlus_GraphicsFillRect($hGfx_Buffer, 100, 100, 200, 200, $hBrush)
_GDIPlus_BrushDispose($hBrush)
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")
GUISetState()
While Sleep(10)
WEnd
Func _Exit()
_GDIPlus_GraphicsDispose($hGfx_Buffer)
_GDIPlus_BitmapDispose($hBmp_Buffer)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Func WM_PAINT()
_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp_Buffer, 0, 0)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINT
Func WM_ERASEBKGND()
_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp_Buffer, 0, 0)
Return True
EndFunc ;==>WM_ERASEBKGND
E
hier: http://www.autoitscript.com/trac/autoit
Aber wie gesagt, such dort erstmal nach GuiCtrlCreateGraphic - evtl existiert das schon...
Damit meinte ich auch meine eigene Frage aus dem 3 Post ![]()
Nein, war nicht immer so!
Zumindest mit Version 3.2.8.0 sind alle x^y vom Typ Double. (zumindest 2^1 bis 2^64)
Irgendwo zwischen 3.2.10.0 u 3.2.12.0 muss das geändert worden sein
Es schaut nach einem Bug aus.
Das kannst du natürlich melden, am besten bald, denn eine neue Stable wird in absehbarer Zeit erscheinen...
ABER durchsuche vorher das englische Forum und vor allem den Bug-Bereich, ob sich dort nicht schon ein Beitrag befindet!
Könnte sein, dass das schonmal als Nicht-Bug eingestuft wurde...
Das funktioniert ja tatsächlich!
[autoit]$iVal = 2^32
ConsoleWrite(VarGetType($iVal) & " = " & $iVal & @CRLF)
Seit wann ist den x^y ein Integer? Hab ich was verpasst, oder war das schon immer so und nur mein Gehirn sagt was anderes ![]()
Alles Gute ![]()
mach mal $WS_THICKFRAME weg
Mittlerweile gibt es FreeBasic 1.0
Damit kann man nun endlich auch X64 Dll´s erzeugen.
Man benötigt folgende Dateien (http://www.freebasic.net/get![]()
FreeBASIC-1.00.0-win64.zip
FreeBASIC-1.00.0-win32.zip (nur, wenn man auch X86 komiplieren will)
Zuerst entpackt man FreeBASIC-1.00.0-win64.zip in den gewünschten Installationsordner.
Dann entpackt man FreeBASIC-1.00.0-win32.zip in ein temporäres Verzeichnis und kopiert die Ordner bin\win32 und lib\win32 in die entsprechenden Ordner der Installationsversion.
Im Prinzip funktioniert alles noch so, wie im ersten Post beschrieben (zumindest sollte es)
Allerdings muss man weitere Compilerswitches beachten:
z.B.: Wenn man InlineASM verwendet, dann muss man "-asm intel" verwenden.
Wenn man X86 erstellen will, braucht man den Switch "-target win32"
Mach doch bitte eine generelle Funktion für uns ![]()
_WinAPI_WaitForMultipleObjects, _WinAPI_CreateEvent, _WinAPI_ResetEvent, (_WinAPI_CloseHandle)
[autoit]#include <WinAPI.au3>
#include <WinAPIProc.au3> ;needed for _WinAPI_ResetEvent
Global $tEvents = DllStructCreate("handle Event[3];")
$tEvents.Event(1) = _WinAPI_CreateEvent(0, True, False)
$tEvents.Event(2) = _WinAPI_CreateEvent(0, True, False)
$tEvents.Event(3) = _WinAPI_CreateEvent(0, True, False)
HotKeySet("{ESC}", "_Exit")
AdlibRegister("_FireEvent_1", 500)
AdlibRegister("_FireEvent_2", 800)
Global $iEvent
While 1
;$iEvent = _WinAPI_WaitForMultipleObjects(3, $tEvents, False, 100) ;Maybe future version
$iEvent = _WinAPI_WaitForMultipleObjects(3, DllStructGetPtr($tEvents), False, 100)
Switch $iEvent
Case 0
ConsoleWrite("+ First Event" & @CRLF)
_WinAPI_ResetEvent($tEvents.Event(1))
Case 1
ConsoleWrite("> Second Event" & @CRLF)
_WinAPI_ResetEvent($tEvents.Event(2))
Case 2
ConsoleWrite("! Exit Event" & @CRLF)
AdlibUnRegister("_FireEvent_1")
AdlibUnRegister("_FireEvent_2")
_WinAPI_CloseHandle($tEvents.Event(1))
_WinAPI_CloseHandle($tEvents.Event(2))
_WinAPI_CloseHandle($tEvents.Event(3))
ExitLoop
Case -1 ;Error
ExitLoop
EndSwitch
WEnd
Func _Exit()
_WinAPI_SetEvent($tEvents.Event(3))
EndFunc ;==>_Exit
Func _FireEvent_1()
_WinAPI_SetEvent($tEvents.Event(1))
EndFunc ;==>_FireEvent_1
Func _FireEvent_2()
_WinAPI_SetEvent($tEvents.Event(2))
EndFunc ;==>_FireEvent_2
Es kann sein, dass der IE bei dir die Ausführung des Skriptes verhindert.
So ist es zumindest bei mir ![]()
Mit Firefox funktioninert out.html, aber IE will nicht und ich kriegs auch nicht zum laufen...