1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. UEZ

Beiträge von UEZ

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • UEZ
    • 20. Oktober 2016 um 19:20

    Du solltest die Größen der GUI Elemente / Schriftgrößen entsprechend anpassen. -> https://www.autoitscript.com/forum/topic/16…app-workaround/

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 12. Oktober 2016 um 10:39

    Und noch'ne Spielerei -> GDI Particle Repulsion Grid (einfach die Maus über das Bild bewegen...)

    Mit AutoIt nicht in dieser Geschwindigkeit realisierbar.

    Edit: jetzt noch mit Scroller und Tracker Sound
    GDI Particle Repulsion Grid v1 + sound build 2016-10-13.png

    Dateien

    GDI Particle Repulsion Grid.zip 139,91 kB – 429 Downloads GDI Particle Repulsion Grid v1 + sound build 2016-10-13.7z 297,61 kB – 419 Downloads
  • Icons als Datei in exe einbinden und mit Code wieder abrufen

    • UEZ
    • 11. Oktober 2016 um 16:31

    Hast du es mal mit _Resource_GetAsIcon() probiert?

    Da du kein Beispiel hochgeladen hast, kann ich selbst nicht testen.

  • Icons als Datei in exe einbinden und mit Code wieder abrufen

    • UEZ
    • 11. Oktober 2016 um 10:14

    Schaue mal hier rein -> https://www.autoitscript.com/forum/topic/162499-resourcesex-udf

  • Herzlichen Glückwunsch water

    • UEZ
    • 8. Oktober 2016 um 23:04

    Auch von mir ein "Happy Birthday" und alles Gute für die Zukunft.

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 8. Oktober 2016 um 22:52
    Zitat von Andy

    OpenGL in FB hat "nur" 7 FPS, allerdings bei 130000 Rechtecken/Sekunde und ca. 1 Million Recursions-Calls


    Meine Werte:
    PT.png


    Bei der gleichen Rekursionstiefe wie bei GDI, komme ich auf ca. 70 FPS, ca. 300.000 Rekursionsaufrufe pro Sekunde und 4095 Rechtecken pro Funktionsaufruf.

    ^^

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 8. Oktober 2016 um 16:27

    Und noch ein Beispiel in GDI / GDI+ / OpenGL in Au3 und FB: Animated Pythagoras Tree

    Dateien

    Animated Pythagoras Tree.zip 1,74 MB – 436 Downloads
  • Größte/Kleinste Elemente aus einem Array wählen

    • UEZ
    • 25. September 2016 um 19:08

    Das habe ich bei mir noch gefunden:

    AutoIt
    #include <Array.au3>
    
    
    $numbers = "40,3,-2.5,-10,1000,-20202.188, +50,-1.937462,3.14"
    ConsoleWrite("Fünftkleinste Zahl: " & nNumber($numbers, 5, 0) & @CRLF) ; fünftkleinste Zahl
    ConsoleWrite("Drittgrößte Zahl: " & nNumber($numbers, 3, 1) & @CRLF) ; drittgrößte Zahl
    
    
    ; #FUNCTION# =====================================================================================================================
    ; Name...........: 		nthNumber
    ; Description ...:	 	Returns the nth biggest or smallest number
    ; Syntax.........: 		nNumber($numbers, $n, $dir = 0)
    ; Parameters ....: 		$numbers - the numbers either from a string or from an array
    ;                  				$n - search for n biggest or smallest number where n is an integer
    ;                 				$dir - 0 search for smallest number, 1 for biggest number
    ; Return values .: 	Success - Returns the appropriate number and set @error to 0
    ;                  				Failure - Returns error code:
    ;                  				1 - Wrong delimiter in string! Valid is comma (,) only!
    ;                  				2 - No numbers found!
    ;                 				3 - n is not an integer
    ;                  				4 - n is not in boundary of amount of numbers
    ; Remarks .......: 		Needs the function CompSort() for sorting the internal array
    ; Author ........: 		UEZ
    ; Version .......: 		0.90 Build 2010-11-11 Beta
    ; ================================================================================================================================
    Func nNumber($numbers, $n, $dir = 0)
    	If IsArray($numbers) Then
    		$num = _ArrayToString($numbers, ",")
    		If @error Then Return SetError(1, 0, "Error! Wrong delimiter in string! Valide is comma (,) only!")
    		$numbers = $num
    	EndIf
    	Local $aNum = StringRegExp($numbers, "(-\d+\.\d+|\d+\.\d+|\d+)", 3)
    	If Not IsArray($aNum) Then Return SetError(2, 0, "Error! No numbers found!")
    	If Not IsInt($n) Then Return SetError(3, 0, "Error! n is not an integer")
    	If $n < 1 Or $n > UBound($aNum) - 1 Then Return SetError(4, 0, "Error! n is not in boundary of amount of numbers")
    	CompSort($aNum)
    	If Not $dir Then Return $aNum[$n - 1] ;n smallest number
    	Return $aNum[UBound($aNum) - $n] ;n biggest number
    EndFunc
    
    
    ;Die Komplexität liegt je nach Ausgangssituation zwischen O(n^2) (Worst-Case) und O(n*log(n)) (Best-Case).
    ;Im Best-Case ist die Liste der zu sortierenden Elemente geordnet, sobald die Schrittlänge 1 beträgt.
    ;Im Worst-Case müssen alle benachbarten Elemente nochmals getauscht werden (mehrere Durchgänge mit Schrittlänge 1).
    ;In diesem Fall ist Combsort nicht schneller als Bubblesort.
    ;Speicherverbrauch: O(c)
    ;Shrink-Faktor: 1/(1-1/e^phi) = 1.247330950103979, phi = 1.61803398874994
    Func CompSort(ByRef $aArray)
    	Local $gap = UBound($aArray)
    	Local $swaps, $i, $tmp
    	Do
    		$gap = Int($gap / 1.247330950103979)
    		If $gap < 1 Then $gap = 1
    		$i = 0
    		$swaps = 0
    		Do
    			If Number($aArray[$i]) > Number($aArray[$i + $gap]) Then
    				$tmp= Number($aArray[$i])
    				$aArray[$i] = Number($aArray[$i + $gap])
    				$aArray[$i + $gap] = $tmp
    				$swaps = 1
    			EndIf
    			$i += 1
    		Until $i + $gap > UBound($aArray) - 1
    	Until $gap = 1 And $swaps = 0
    EndFunc
    Alles anzeigen
  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 22. September 2016 um 10:53
    Zitat von Andy

    Ich bin ziemlich sicher, dass mindestens noch ein Faktor 5-10 in der Geschwindigkeit der Berechnung machbar wäre, würde man die FPU-Sequenz in Assembler handcoden....von SSE mit 4 gleichzeitig berechenbaren Arrayinhalten garnicht zu reden. Die Compilereinstellung zur Verwendung von SSE bringt übrigens keinen Vorteil, die "schnelleren" Befehle werden gänzlich von unproduktiven Zugriffen auf den Speicher ausgebremst

    Ich habe auch mal die schnelleren Sin/Cos Funktionen von Eukalyptus benutzt, aber das sehe ich kein Geschwindigkeitsgewinn. D.h. ich kann das nur bestätigen, was du geschrieben hast.

    Zitat von kaesereibe

    Habt ihr das mal mit Direct2D probiert?

    Ich kann dir nicht sagen, warum ich und einige andere immer auf GDI/GDI+ herumreiten, obwohl es bessere Gfx Libs gibt, wie z.B. die Direct2D UDF.
    Vielleicht "Macht der Gewohnheit" oder weil's leichter fällt oder einfach nur Sturheit...

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 21. September 2016 um 16:35

    Ich wollte keinen neuen Thread dafür aufmachen, also hier der Battle GDI vs GDI+ anhand eines Tunnel Fluges.

    Tunnel Flight - WipeOut Style.jpg

    Original JS: http://js1k.com/2010-first/demo/763


    Im Anhang unten die Source Codes + kompilierte Exe Dateien.

    Dateien

    Tunnel Flight - WipeOut Style.zip 995,74 kB – 528 Downloads
  • gibts MsgBoxen in anderer als der Systemsprache?

    • UEZ
    • 8. September 2016 um 21:19

    Du könntest immer Englisch als Sprache wählen:

    AutoIt
    #include <WinAPI.au3>
    Opt("MustDeclareVars", 1)
    Global $hHookMsgBox
    _MsgBoxEnglish(0, "Title", "Text")
    _MsgBoxEnglish(1, "Title", "Text")
    _MsgBoxEnglish(2, "Title", "Text")
    _MsgBoxEnglish(3, "Title", "Text")
    _MsgBoxEnglish(4, "Title", "Text")
    _MsgBoxEnglish(5, "Title", "Text")
    _MsgBoxEnglish(6, "Title", "Text")
    _MsgBoxEnglish(7, "Title", "Text")
    #region English Button text for MsgBox!!
    ;##########################################################
    Func _MsgBoxEnglish($flag, $title, $text, $timeout = 0, $hwnd = 0)
     Local $hProcMsgBox = DllCallbackRegister("CbtHookProcMsgBox", "int", "int;int;int")
     Local $TIDMsgBox = _WinAPI_GetCurrentThreadId()
     $hHookMsgBox = _WinAPI_SetWindowsHookEx($WH_CBT, DllCallbackGetPtr($hProcMsgBox), 0, $TIDMsgBox)
     Local $iRet = MsgBox($flag, $title, $text, $timeout, $hwnd)
     _WinAPI_UnhookWindowsHookEx($hHookMsgBox)
     DllCallbackFree($hProcMsgBox)
     Return $iRet
    EndFunc   ;==>_MsgBoxEnglish
    Func CbtHookProcMsgBox($nCode, $wParam, $lParam, $hHookMsgBox)
     Local $RET = 0, $hBitmap = 0, $xWnd = 0
     Local $sButtonText
     If $nCode < 0 Then
      $RET = _WinAPI_CallNextHookEx($hHookMsgBox, $nCode, $wParam, $lParam)
      Return $RET
     EndIf
     Switch $nCode
      Case 5 ;5=HCBT_ACTIVATE
       _WinAPI_SetDlgItemText($wParam, 1, "OK")
       _WinAPI_SetDlgItemText($wParam, 2, "Cancel")
       _WinAPI_SetDlgItemText($wParam, 3, "&Abort")
       _WinAPI_SetDlgItemText($wParam, 4, "&Retry")
       _WinAPI_SetDlgItemText($wParam, 5, "&Ignore")
       _WinAPI_SetDlgItemText($wParam, 6, "&Yes")
       _WinAPI_SetDlgItemText($wParam, 7, "&No")
       _WinAPI_SetDlgItemText($wParam, 8, "Help")
       _WinAPI_SetDlgItemText($wParam, 10, "&Try Again")
       _WinAPI_SetDlgItemText($wParam, 11, "&Continue")
     EndSwitch
     Return
    EndFunc   ;==>CbtHookProcMsgBox
    Func _WinAPI_SetDlgItemText($hDlg, $nIDDlgItem, $lpString)
     Local $aRet = DllCall('user32.dll', "int", "SetDlgItemText", _
       "hwnd", $hDlg, _
       "int", $nIDDlgItem, _
       "str", $lpString)
     Return $aRet[0]
    EndFunc   ;==>_WinAPI_SetDlgItemText
    ;##########################################################
    #endregion English Button text for MsgBox!!
    Alles anzeigen
  • Speicherleck / AutoIT Hardcrash bei laden von binären Bilddateien

    • UEZ
    • 5. September 2016 um 21:37
    Zitat von KriZza

    Func _Set_PreviewPic()
    For $i = 1 to 9
    _GDIPlus_Startup()
    Global $Bmp_Logo = _GDIPlus_BitmapCreateFromMemory(Binary($pic), True)
    _WinAPI_DeleteObject(GUICtrlSendMsg($DemoPicture[$i -1], 0x0172, 0, $Bmp_Logo))
    ;~ _GDIPlus_BitmapDispose($Bmp_Logo)
    _GDIPlus_Shutdown()
    Next
    EndFunc

    Alles anzeigen
    • In einer Schleife _GDIPlus_Startup() / _GDIPlus_Shutdown() macht keinen Sinn!
    • $Bmp_Logo = _GDIPlus_BitmapCreateFromMemory(Binary($pic), True) liefert dir ein GDI Bitmap Handle zurück, was inkompatible zu GDI+ Bitmap Handles ist!
    • GUICtrlSendMsg($DemoPicture[$i -1], 0x0172, 0, $Bmp_Logo) gibt dir wiederum ein GDI Bitmap Handle zurück, das mit _WinAPI_DeleteObject freigegeben werden muss
    • Anstelle von _GDIPlus_BitmapDispose($Bmp_Logo) musst du _WinAPI_DeleteObject($Bmp_Logo) nehmen, um den Memory Leak zu unterbinden, ansonsten CRASH
  • Speicherleck / AutoIT Hardcrash bei laden von binären Bilddateien

    • UEZ
    • 5. September 2016 um 15:41

    "Load_BMP_From_Mem" ist seit längerem als "_GDIPlus_BitmapCreateFromMemory" integriert. Probiere es mal damit.

    Abgesehen davon bewirkt TimerDiff($timer) > 1 immer, dass dein Skript 100% auf einem Core CPU Last erzeugt, aber ein Memory Leak kann ich nicht mit _GDIPlus_BitmapCreateFromMemory sehen.

  • Darstellungsproblem Bei Text (Label) auf GUI

    • UEZ
    • 1. September 2016 um 22:19

    Probiere mal eine dunklere Transparent Farbe:

    AutoIt
    GUISetBkColor(0x101010, $hGUI)
    	_WinAPI_SetLayeredWindowAttributes($hGUI, 0x101010, 255)
  • UDF - TrueType Fonts im Script mitgeben und verwenden

    • UEZ
    • 25. August 2016 um 11:55

    Bitte sehr.

    Dateien

    Generate.au3 1,66 kB – 380 Downloads
  • eingefügte Grafik skalieren oder skaliert einfügen

    • UEZ
    • 24. August 2016 um 22:48

    Schnappschüsse kannst auch direkt aus AutoIt machen -> _ScreenCapture_Capture.

    Da _ScreenCapture_Capture GDI Bitmaps erstellt, kannst du diese in GDI+ umwandeln, um die danach zu skalieren -> _GDIPlus_BitmapCreateFromHBITMAP.

    Skalieren kannst du mit _GDIPlus_ImageScale, _GDIPlus_ImageResize. Das Result ist ein GDI+ Bild, d.h. du musst es wieder zurück in GDI umwandeln -> _GDIPlus_BitmapCreateHBITMAPFromBitmap.

    Diese GDI Bild kannst du nun in den Clipboard kopieren und dann bequem in PP einfügen.

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 24. August 2016 um 21:34
    Zitat von Xorianator

    Du kannst bereits SIMD Befehle von Hause aus nutzen, das macht sogar @UEZ manchmal, wenn ich richtig sah, da er die MMX Technologie benutzt.

    In diesem Beispiel "GDI Liquid Pixels" bringen die manuellen Sin/Cos Assembler Versionen ca. 25% mehr Leistung, aber dafür auf Kosten der Genauigkeit, ist aber für dieses Beispiel irrelevant.
    Für hoch kritische Anwendungen, z.B. Raumfahrt, könnte es zu Problemen führen, dass die Werte zu "ungenau" sind.

    Ich habe leider nicht das Wissen bezüglich Compilerbau, so dass ich nicht qualitativ bewerten kann, ob der FB Compiler seinen Arbeit gut erledigt, aber da ist für spezielle Bereiche, wie grafische Verarbeitung, noch Luft nach oben.

    Wie bereits erwähnt, müssten man den gleichen Codeaufbau mit verschiedenen Programmiersprachen vergleichen, was der Compiler da noch heraus kitzelt.
    Der Vergleich mit AutoIt war da nur Just for Fun und eher unfair. Man vergleicht ja auch nicht ein Kleinwagen mit einem Sportwagen bezüglich Geschwindigkeit, z.B. Corsa vs. Ferrari.

  • eingefügte Grafik skalieren oder skaliert einfügen

    • UEZ
    • 24. August 2016 um 16:48

    Wo möchtest du die Gfx einfügen?

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 24. August 2016 um 16:36

    Auf meinem Schlepptop läuft's mit ca. 20 FPS.

    CPU: Intel Core i5-4300U
    Gfx: Intel HD Graphics 4400

  • Battle: Autoit vs. FreeBasic - Runde 1+2+3

    • UEZ
    • 24. August 2016 um 16:05
    Zitat von autoBert

    Ich erinnere mich an ein Script (mit Dali als Bild) bei dem das Gesicht sich verändert. Es handelt sich um autoit.de/index.php/Attachment/83460-Wave-v1-3-2-au3/ in dem ich spaßhalber Dali (aus CosinusBrothers) eingesetzt habe, läuft bei mir mit 2 FPS.

    Da werden nur die Zeilen versetzt dargestellt und in diesem FB Beispiel jedes einzelne Pixel. Je mehr Pixel desto langsamer.

    Aber ja, ähnlich sieht es aus. ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™