Oh ha. Die 20ms bei AdlibRegister sind aber riskant. Mein alter BüroPC (Athlon XP 2600 @1,9 GHZ) schafft das nichmehr.
Bei 40ms läufts und schaut gut aus. ![]()
edit \ Am besten ab in die Schleife mit der Funktion oder?
Oh ha. Die 20ms bei AdlibRegister sind aber riskant. Mein alter BüroPC (Athlon XP 2600 @1,9 GHZ) schafft das nichmehr.
Bei 40ms läufts und schaut gut aus. ![]()
edit \ Am besten ab in die Schleife mit der Funktion oder?
_GDIPlus_GraphicsSetSmoothingMode() würde schonmal gegen die Zacken helfen. Das Flackern ist echt komisch. ![]()
Stellt man den Speed runter wirds besser, womöglich ist das einfach zu fies für unsere Systeme?
edit \ Oder die Kurvenfunktion eignet sich dafür nicht (zu langsam?), versuchs doch mal mit der Varainte von eukalyptus.
_GDIPlus_GraphicsDrawCurve gibts auch noch. Damit kannst du das Array entsprechend der Sinusfunktion füllen.
Bsp:
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local $hGUI, $hGraphic, $aPoints[5][2]
; Create GUI
$hGUI = GUICreate("GDI+", 400, 300)
GUISetState()
Local $pi = 3.14159265358979
; Draw a cardinal spline
_GDIPlus_Startup ()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
$aPoints[0][0] = 4
$aPoints[1][0] = 0
$aPoints[1][1] = 200
$aPoints[2][0] = $pi/2*50
$aPoints[2][1] = 150
$aPoints[3][0] = 1.5*$pi*50
$aPoints[3][1] = 250
$aPoints[4][0] = 2.5*$pi*50
$aPoints[4][1] = 150
_GDIPlus_GraphicsDrawCurve ($hGraphic, $aPoints)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Clean up resources
_GDIPlus_GraphicsDispose ($hGraphic)
_GDIPlus_Shutdown ()
EndFunc ;==>_Main
[/autoit]Auch cool.
Einige Seiten überlagern sich allerdings ohne den natürlichen Weg des Lichts zu berücksichtigen.
Soll heissen Seiten sind sichtbar, die eigentlich verdeckt sein sollten.
Das kannst du auch über die FTPEx UDF machen. Schau dir dazu am besten mal die Hilfe an.
File ziehen und dann gehts mit Iniread oder Inireadsection weiter.
Ah genau ![]()
Auch nicht schlecht wenn man das runterdreht. ![]()
Na das Textfile einlesen.
Schau dir mal Filereadline an.
aus Oscars Listviewbeispiel:
[autoit]
Func Load() ; Datenbank-Datei laden
Local $sItem
Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
While True ; Endlosschleife
$sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>Load
Was spricht gegen die Lösung von chip?
Tolles Skript. ![]()
Ist das die maximale Rotationsgeschwindigkeit aufgrund der Autoit-Berechnung?
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
$GUI_Back_Color = 0xF0F0F0
[/autoit] [autoit][/autoit] [autoit]Global $x = 300, $y = 300
Global $iSize = 15, $iPen = 2
Global $iColor = 0xFFAA3366
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hDLL = DllOpen("user32.dll")
$hGUI = GUICreate("", 600, 600)
GUISetOnEvent(-3, "_Eventhandler")
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Graphic obj erstellen
$bitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$hPen = _GDIPlus_PenCreate($iColor, $iPen) ; Pinsel erstellen
$hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $GUI_Back_Color)
;~ $hBackbuffer = _GDIPlus_GraphicsGetDC($hGraphic) ; Backbuffer erstellen
;~ _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_INTERNALPAINT) ; Fenster intern schonmal zeichnen
GUISetState()
[/autoit] [autoit][/autoit] [autoit]WM_PAINT()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$t = TimerInit()
While 1
If TimerDiff($t) > 10 Then
Sleep(10)
$t = TimerInit()
EndIf
_KeyHandler()
WEnd
Func WM_PAINT()
;~ _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
;~ _GDIPlus_GraphicsFillRect($hBackbuffer, 0, 0, 600, 300, $hBrush)
;~ _GDIPlus_GraphicsDrawLine($hBackbuffer, $x - $iSize, $y, $x + $iSize, $y, $hPen) ; Fadenkreuz malen
;~ _GDIPlus_GraphicsDrawLine($hBackbuffer, $x, $y - $iSize, $x, $y + $iSize, $hPen)
;~ _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
; _WinAPI_RedrawWindow($hGUI)
_GDIPlus_GraphicsFillRect($backbuffer, 0, 0, 600, 600, $hbrush)
_GDIPlus_GraphicsDrawLine($backbuffer , $x - $iSize, $y, $x + $iSize, $y, $hPen) ; Fadenkreuz malen
_GDIPlus_GraphicsDrawLine($backbuffer , $x, $y - $iSize, $x, $y + $iSize, $hPen)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $bitmap, 0, 0, 600, 600)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINT
Func _Eventhandler()
Switch @GUI_CtrlId
Case -3
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphic)
;~ _WinAPI_ReleaseDC($hGUI,$hBackbuffer)
_GDIPlus_Shutdown()
Exit
EndSwitch
EndFunc ;==>_Eventhandler
Func _KeyHandler()
[/autoit] [autoit][/autoit] [autoit]If _IsPressed(25, $hDLL) Then ; links
$x -= 1
If $x < 0 Then $x = 0
WM_PAINT()
EndIf
If _IsPressed(27, $hDLL) Then ; rechts
$x += 1
If $x > 599 Then $x = 599
WM_PAINT()
EndIf
If _IsPressed(26, $hDLL) Then ; oben
$y -= 1
If $y < 0 Then $y = 0
WM_PAINT()
EndIf
If _IsPressed(28, $hDLL) Then; unten
$y += 1
If $y > 599 Then $y = 599
WM_PAINT()
EndIf
If _IsPressed("6B", $hDLL) Then ; Plus ( NumPad )
$iSize += 1
WM_PAINT()
EndIf
If _IsPressed("6D", $hDLL) Then ; Minus ( NumPad )
$iSize -= 1
If $iSize < 1 Then $iSize = 1
WM_PAINT()
EndIf
If _IsPressed("6A", $hDLL) Then
$iPen += 1
_GDIPlus_PenDispose($hPen)
$hPen = _GDIPlus_PenCreate($iColor, $iPen)
WM_PAINT()
EndIf
If _IsPressed("6F", $hDLL) Then
$iPen -= 1
If $iPen < 1 Then $iPen = 1
_GDIPlus_PenDispose($hPen)
$hPen = _GDIPlus_PenCreate($iColor, $iPen)
WM_PAINT()
EndIf
If _IsPressed("20", $hDLL) Then
Local $iChosen = _ChooseColor(2)
If @error Then Return
$iColor = 0xFF000000 + $iChosen
_GDIPlus_PenDispose($hPen)
$hPen = _GDIPlus_PenCreate($iColor, $iPen)
WM_PAINT()
EndIf
EndFunc ;==>_KeyHandler
So gehts mit Backbuffer.
edit \ Beim verlassen aber den Buffer noch freigeben (check das Skript nicht so ganz :D).
[autoit]_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_BitmapDispose($bitmap)
Bei der Exit Funktion einfügen.
Wobei das Passwort beim nächsten Start wieder zurückgesetzt wäre.
Dagegen hilft nur auslagern (.txt, .ini oder so). Von der Sicherheitsseite aus sollte das Passwort gar nirgends auftauchen, denn überall lauern böse Decompilierer. ![]()
Wir sind hier doch auf autoit.de.
Für C++ Lösungen ist ein anderes Forum wahrscheinlich besser geeignet.
Vielleicht hilft dir das hier: http://social.msdn.microsoft.com/Forums/en-US/v…91-9dfc644f6248
[ gelöst ] COM-Objekt und die Datentypen.
Hier mal ein Beispiel wie es einem geht wenn man mit AutoIt angefangen hat und sich nie groß Gedanken über Datentypen, Variablen usw. gemacht hat.
Bei mir ist das zum Glück egal, da meine Berufswahl überhaupt nichts mit Informatik zu tun hat.
Nur ob es sinnvoll ist zu lernen wie man sich mit AutoIt einen bass.dll Player bastelt? Ziel sollte es doch sein (im übertragenen Sinn) die bass.dll selbst schreiben zu können.
Der Lehrer meint die Send Funktion oder?
Kannst ja eine schöne UDF schreiben, die einen Übergabestring (z.B. "Strg") in den autoit Syntax übersetzt.
P.S. Wobei das auch sehr fragwürdig ist, wozu gibts denn die Hilfe? ![]()
Aber sind das Punkte für den Informatikunterricht?
Bei AutoIt gibts ja auch ein paar Besonderheiten die sich meiner Meinung nach eher weniger für den Informatikunterricht eignen.
z.B. Datentypen, Deklaration von Variablen uws. also die Punkte, die AutoIt so super einfach machen weil der Interpreter es schon hinbiegt.
Ob das die richtige Lernweise ist? Meiner Meinung nach nicht, ich bin aber auch kein Pädagoge. ![]()
Ansonsten ist AutoIt für Anfänger natürlich super, da man sehr schnell Ergebnisse sieht.
Hm mir fällt gerade auf, dass ich gar keine Nvidia Karte hier daheim habe :wacko:
Ohne testen macht das keinen Spaß, ich werde dich wohl bis zum nächsten Arbeitstag (Montag) vertrösten müssen. ![]()
Wäre nett, wenn du dir das mal anguckst.
Verwendbar sollten die Funktionen per Autoit auf jeden Fall sein.
Du kannst ja mal Vorarbeit leisten und die Funktion aus der Doku suchen, die für den Lüfter zuständig ist. Ich finde nämlich nichts
Muss aber gehen, der Rivatuner kanns ja auch.
Interessiert mich jetzt auch, ich schau heute abend mal.
Ob das was wird kann ich aber nicht versprechen.
Kann man den Rivatuner automatisieren? Oder Profile im Graka-Treiber erstellen? Oder gibts für Nvidia eine API die man sich mal ansehen könnte?