Auch wenn die Teilnehmerrunde parallel zum Forum immer schmaler wird.
Das Interesse am Tippspiel hält sich seit Jahren leider in Grenzen...
Wer Lust hat, kann ja die BuLi 26/27 mit tippen - ist eröffnet.
Auch wenn die Teilnehmerrunde parallel zum Forum immer schmaler wird.
Das Interesse am Tippspiel hält sich seit Jahren leider in Grenzen...
Wer Lust hat, kann ja die BuLi 26/27 mit tippen - ist eröffnet.
Auch wenn das Spiel noch läuft: da du nicht mehr einzuholen bist, gehen die Glückwünsche schon mal vorab raus – Glückwunsch zum Sieg im WM-Tippspiel!
![]()
![]()
Er ist nicht mehr einzuholen. 😉
Vor einigen Jahren habe ich in FreeBASIC einen Wasserwellen-Effekt geschrieben. Inspiriert durch einen Beitrag im US Forum von wakillon habe ich den Code nun in eine DLL umgeschrieben, um ihn beispielsweise in AutoIt nutzen zu können:
[Blockierte Grafik: https://i.ibb.co/dsh50zpL/Capture-20260710-191433-anim.webp]
Alle Dateien herunterladen und die Demo starten. Je nach Architektur wird die DLL extrahiert und benutzt.
Um die DLL und das eingebettet Bild zu extrahieren, wird mind. Win8 vorausgesetzt, da die Cabinet.dll benutzt wird.
Moin zusammen,
es ist wieder so weit – die nächste WM steht vor der Tür! Und was wäre ein großes Turnier ohne unser traditionelles AutoIt-Tippspiel? 😉
Wer Lust und Bock hat, ein bisschen mitzufiebern und die Tipp-Krone zu jagen, ist herzlich eingeladen. Alles völlig ungezwungen – der Spaß steht wie immer im Vordergrund (und vielleicht ein bisschen die Ehre, die Kollegen zu übertrumpfen). Je mehr Leute wir werden, desto lustiger wird’s!
Einfach hier kostenlos registrieren, tippen und dabei sein: 👉 https://www.kicktipp.de/autoit-em-wm/
Man sieht sich in der Tipprunde! ✌️
PS: die WM startet am 11.06.2026 und endet mit dem FInale am 19.07.2026
Sieger: AspirinJunkie ![]()
Ich kann das Micro / Systemsound aufnehmen, aber nicht die Gegenseite beim Telefonieren.
Vielleicht funktioniert es damit. VBCABLE_Driver_Pack45.zip -> habe es nicht probiert.
gmmg vielen Dank für's Testen. Aktuell gibt es noch Probleme, wenn die Quelle beim Aufnehmen neu initialisiert wird, dann gibt's Driftings.
Danke für's Testen - welches OS? Win7 SP1 ist minimum. Wurde während der Aufnahme Musik abgespielt?
Moin,
könnt ihr bitte testen, ob die Audio Aufnahme (Loopback + Mic) auf eurem PC funktioniert? Während der Aufnahme bitte irgendeine Audio Datei abspielen und ins Micro sprechen, falls vorhanden!
Output sollte so aussehen:
Audio_Init OK. Aufnahme startet fuer 5000 ms in 0.5 Sekunden...
AAC-Frames geschrieben: 251
Gesamtbytes : 87726
ASC (2 Bytes): [11 90]
Fettisch: test_output.aac mit einem AAC faehigen Player oeffnen!
Min OS: Win7 SP1
Das Test Script (nur x64 ausführen!):
Im Prinzip steht die MP4 Video Aufnahmen, jetzt noch mit AAC Audio...![]()
DANKE!
Genau, das ist das Problem mit den AV Tools, dass sie aufgrund der in Autoit geschriebenen Malware sensibel auf Non-Standard Autoit Script Code reagieren.
Da ich immer mit dem Firmen Notebook arbeite , kann ich leider nicht den AV abstellen, zumal noch parallel CrowdStrike Falcon Protection still im Hintergrund arbeitet und ich hin und wieder Mails von der Security bekomme und ich mich rechtfertigen muss, warum ich das Tool / Script benutze und was das mit der Firma zu tun hat.
Wie auch immer - ich wollte es nur erwähnen, da bestimmt auch andere dein Tool nicht benutzen, da AV ein False-Positve Alert auslöst.
Apropos SciTEHopper - MS Defender mag dein Code v1.0.5.7 nicht -> Trojan:AutoIt/Prcablt.SD!MTB.
Merci beaucoup für deine Rückmeldung. 😊
Wie immer ist das Ergebnis bei Ihnen perfekt!
Nun ja, perfekt würde ich dazu nicht sagen.
Aktuell versuche ich SciTE in der Dark Mode zu versetzen, wenn ich schon mal dabei bin, den Editor zu hooken. Mal sehen, wie viel Aufwand das in Freebasic sein wird.
Ist anscheinend gerade Mode...
(I hope that Bing Translator has not distorted my words)
Tu peux me tutoyer. ![]()
SciTEHopper ist immer noch die Versio von 2017!?
Ich habe das Zip entpackt und InteractiveCircleFit.au3 aus SciTE gestartet.
OS: Win11 24H2 x64
Autoit: 3.3.18.0
Ausgeführt als Standard x86. Wenn als x64 ausgeführt, dann kein Crash!
Hier meine Version zum Einfärben des aktiven / veränderten(*) SciTE Tabs.
Zum Hooken wird eine DLL verwendet, die ich in Freebasic geschrieben habe, da durch Virtual Address Space dies nicht aus Autoit direkt möglich ist. Die DLL injiziert sich in den SciTE Speicher und das Autoit Skript kommuniziert mit der DLL, die wiederum die Tabs einfärbt. Über das TrayIcon kann man das Programm beenden.
Es ist mir gelungen, die Größe der DLLs auf etwa 6 KB zu reduzieren, und wenn man sie mit UPX komprimiert, sollten sie noch kleiner werden.
Source Code + DLLs hier auf meinem OneDrive: SciTETabHook
;Coded by UEZ build 2026-04-21 beta
;It is important to run AutoIt on the same architecture as SciTE!
#pragma compile(FileVersion, 0.3.1.0)
#pragma compile(ProductVersion, 3.3.18.0)
#pragma compile(LegalCopyright, "UEZ 2026")
#pragma compile(CompanyName, "UEZ Software Development")
#pragma compile(FileDescription, "SciTETabHook - a simple tool to colorize tabs in SciTE.")
#pragma compile(Icon, "shell32dll.0252-32x32.ico")
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /pe ;/rm
#AutoIt3Wrapper_OutFile_X64=SciTETabHook64.exe
#include <Misc.au3>
#include <TrayConstants.au3>
#include <WinAPISysWin.au3>
#include <WinAPIProc.au3>
Global $iPID = ProcessExists(@ScriptName)
If Not _Singleton(@ScriptName, 1) Or ($iPID <> @AutoItPID And $iPID <> 0) Then Exit MsgBox(16, "ERROR", "An occurence of " & @ScriptName & " is already running!", 20)
; Load the appropriate DLL based on AutoIt's architecture
If Not FileExists(@AutoItX64 ? @ScriptDir & "\SciTETabHook_x64.dll" : @ScriptDir & "\SciTETabHook.dll") Then
If @AutoItX64 Then
_SciTeTabHook_x64dll(True)
Else
_SciTeTabHookdll(True)
EndIf
EndIf
Global $hDLL = DllOpen(@AutoItX64 ? @ScriptDir & "\SciTETabHook_x64.dll" : @ScriptDir & "\SciTETabHook.dll")
If $hDLL < 1 Then Exit MsgBox($MB_ICONERROR, "ERROR", "Unable to load SciTETabHook DLL!", 10)
OnAutoItExitRegister("_CleanupSciTEHook")
AutoItSetOption("TrayMenuMode", 3)
Global Const $idTrayExit = TrayCreateItem("Exit")
Global Const $iTrayAutostart = TrayCreateItem("Autostart")
TraySetState($TRAY_ICONSTATE_SHOW)
If RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "SciTETabHook") = '"' & @ScriptDir & '\SciTETabHook' & (@AutoItX64 ? '64' : '') & '.exe"' Then TrayItemSetState($iTrayAutostart, $TRAY_CHECKED)
; Message constants, matching the FreeBASIC DLL definitions
Global Const $WM_USER_HOOK_INIT = $WM_APP + 0x0450
Global Const $WM_USER_SET_COLORS = $WM_APP + 0x0451
Global Const $WM_USER_UNHOOK = $WM_APP + 0x0452
Global Const $WM_USER_APPLY_DARK = $WM_APP + 0x0453
Global $bSciTE_Hooked = False, $iPID = 0, $bSciTEIsx86, $sSciTEArch, $sAutoItArch, $iTID, $hSciTE, $hSciTE_Exit, $bCheckAutostart
Global $cActiveTab = _RGBtoBGR(0x3030C0)
Global $cInactiveTab = 0xF0F0F0
Global $cText = 0x000000
Global $cTextSel = 0xFFFFFF
Global $cUnsaved = _RGBtoBGR(0xFFC0C0)
Global $cUFrameSel = _RGBtoBGR(0x408040)
Global $cUFrame = 0xE5E5E5
ConsoleWrite("Waiting for SciTE..." & @CRLF)
While True
; 1. Check Tray Menu
Switch TrayGetMsg()
Case $idTrayExit
ExitLoop
Case $iTrayAutostart
$bCheckAutostart = BitAND($TRAY_CHECKED, TrayItemGetState($iTrayAutostart))
If $bCheckAutostart Then
TrayItemSetState($iTrayAutostart, $TRAY_UNCHECKED)
AutoStartReg(False)
Else
TrayItemSetState($iTrayAutostart, $TRAY_CHECKED)
AutoStartReg(True)
EndIf
EndSwitch
; 2. Check if SciTE window exists and verify architecture
$iPID = WinGetProcess("[CLASS:SciTEWindow]")
$bSciTEIsx86 = _WinAPI_IsWow64Process($iPID)
$sSciTEArch = $bSciTEIsx86 ? "x86" : "x64"
$sAutoItArch = @AutoItX64 ? "x64" : "x86"
If $sSciTEArch = $sAutoItArch Then
$hSciTE = WinGetHandle("[CLASS:SciTEWindow]")
; CASE A: SciTE is present but not yet hooked
If ($hSciTE <> 0) And (Not $bSciTE_Hooked) Then
; Give SciTE a brief moment to initialize the tab control internally
Sleep(100)
$iTID = _WinAPI_GetWindowThreadProcessId($hSciTE, $iPID)
DllCall($hDLL, "bool", "InstallHook", "dword", $iTID)
; Initialize subclassing within the DLL
_SendMessage($hSciTE, $WM_USER_HOOK_INIT, 0, 0)
; Apply desired colors (Standard RGB Hex values converted to BGR)
_SetSciTeTabColors($hSciTE, $cActiveTab, $cInactiveTab, $cText, $cUnsaved, $cUFrame, $cTextSel, $cUFrameSel)
$bSciTE_Hooked = True
ConsoleWrite("SciTE detected and successfully hooked!" & @CRLF)
; CASE B: SciTE is gone, but our status is still set to "hooked"
ElseIf $hSciTE = 0 And $bSciTE_Hooked Then
; Safety first: remove the hook from the system
DllCall($hDLL, "bool", "UninstallHook")
$bSciTE_Hooked = False
ConsoleWrite("SciTE closed. Waiting for restart..." & @CRLF)
EndIf
Else
MsgBox($MB_ICONERROR, "ERROR", "No cross-architecture DLL-loads possible!" & @CRLF & _
"Script / SciTE architecture must match!" & @CRLF & @CRLF & _
"SciTE: " & $sSciTEArch & @CRLF & _
"Script: " & $sAutoItArch, 10)
Exit
EndIf
Sleep(30)
WEnd
; Cleanup when exiting the AutoIt script
Func _CleanupSciTEHook()
If $bSciTE_Hooked Then
$hSciTE_Exit = WinGetHandle("[CLASS:SciTEWindow]")
If $hSciTE_Exit Then
_SendMessage($hSciTE_Exit, $WM_USER_UNHOOK, 0, 0) ; Remove subclassing
Sleep(50)
If $hDLL > 0 Then DllCall($hDLL, "bool", "UninstallHook") ; Remove hook
Sleep(50)
; Force SciTE to process the queue (triggers deferred FreeLibrary)
_SendMessage($hSciTE_Exit, $WM_NULL, 0, 0)
Sleep(50)
_SendMessage($hSciTE_Exit, $WM_NULL, 0, 0)
EndIf
EndIf
If $hDLL > 0 Then DllClose($hDLL)
ConsoleWrite("SciTE hooking terminated." & @CRLF)
ConsoleWrite("Bye." & @CRLF)
EndFunc
Func AutoStartReg($bSet)
Switch $bSet
Case True
If RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "SciTETabHook", "REG_SZ", '"' & @ScriptDir & '\SciTETabHook' & (@AutoItX64 ? '64' : '') & '.exe"') Then
MsgBox($MB_ICONINFORMATION, "Information", "Autostart entry properly set to the registry", 10)
Else
MsgBox($MB_ICONERROR, "ERROR", "Unable to set autostart entry to the registry!", 30)
EndIf
Case Else
If RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "SciTETabHook") Then
MsgBox($MB_ICONINFORMATION, "Information", "Autostart entry properly removed from the registry", 10)
Else
MsgBox($MB_ICONERROR, "ERROR", "Unable to remove autostart entry from the registry!", 30)
EndIf
EndSwitch
EndFunc ;==>AutoStartReg
Func _SetSciTeTabColors($hSciTE, $iSelColor, $iBgColor, $iTextColor, $iUnsaved, $iFrameColor, $iTextSelColor, $iFrameSelColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 0, $iSelColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 1, $iBgColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 2, $iTextColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 3, $iUnsaved)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 4, $iFrameColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 5, $iTextSelColor)
_SendMessage($hSciTE, $WM_USER_SET_COLORS, 6, $iFrameSelColor)
EndFunc ;==>_SetSciTeTabColors
Func _RGBtoBGR($iColor)
Return BitOR(BitShift(BitAND($iColor, 0x0000FF), -16), BitAND($iColor, 0x00FF00), BitShift(BitAND($iColor, 0xFF0000), 16))
EndFunc ;==>_RGBtoBGR
;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05
Func _SciTeTabHook_x64dll($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $SciTeTabHook_x64dll
$SciTeTabHook_x64dll &= 'GbgATVqQAAMAAACCBAAw//8AALgAOC0BAEAEOBkAgAAMDh8Aug4AtAnNIbgAAUzNIVRoaXMAIHByb2dyYW0AIGNhbm5vdCAAYmUgcnVuIGkAbiBET1MgbW+AZGUuDQ0KJASGAFBFAABkhgUAEPyA52kFV/AALoAiCwICIgAIAAz1AQMCAAMQBAMJBQAXAbctAQAFAiQAAGADzOSL4gAC1wAAIAMXAzUHCBcGDwQFAHjsAkgAAKSDAxxKAARRAADImA8gLnRleHSAA+gHDwRIgXsFbgQAIABQYMAucmRhdGGEWQFtBQF7DIsTQABQQC4oYnNzhuMwld9QwLwuZcMTwj4BC8ETDs0T8DBALmnDCcJGwEjCJvvIUMQJwH9KPwA/AD8APwADPwAhAP/KdU3HBQIKIEmI0IgAxwWk8B/gOIBAIAHiIAGo5eXlIAHkIAH/gIMYxwXeIAEBAMcFzFEgAfDw8CABtqEDwEDAAEiJDc9AAYMAyP/DRTHJTI0ABaEPAAAx0ukA+gYAAEFUV0gAiddWSInOU0wAicNIg+woSIUgyQ+IpQFAA4tAABA9UIQAAHQJBD1RwAB1b+t9g0Q9gAEND4WEAARJIItIGOiq4A9JiYDESIXAD4RvgAIlwAswIFC6/OACSIkgwUiJBWMgBuhWW2ANYAFPYAFCBURBBYkE4UGAEjHSxwUnMQMZ/+hG4ATgAum0iaAMPVKgDg+FGUAFhOmr4AFJi0AIgAcAdAhIg/gBdQ0A6xNJiwCJBeygHgAA62ZAAgJGAqrNQQJTQAIDRgLCQQKqQEACBEYCm0ECLUACqgVAAhxCApBBAhpAAqgGdRQCAnsBAglCAcJ8QAFIiw2VwQBAJIyEgiASwxfokQVCAxJ6QAPoVWAB62mDRD1YgAEAdGDAAmOBIwZ0VEyLBU9gAUpNQBhI4iPoQAMHQaugAkQJRiMCL0EJCmABGMcFDAEJAABIxwWKDUcBCkUBiw0L4QsAg8QoSYnZ'
$SciTeTabHook_x64dll &= 'ifIAW0mJ+F5fQVwE6T2AB1VIieVBAFdBVkmJzkFVAEFUSYnUugoTIAAAV1ZMxT3k8BBIgeyQIItIx0QEJEgBCkyNfCRIA6EBQYkATYn56KMLwDliNvLCO0wkaDEIwLkK4TGJ2EyJQM9MjawkkKABuiIFQAvzq7lhz0yJAO9MiWwkePOrKEyJ8WAJaCAHAMeUhCRhA/9gAehPYAoQiw0xHSALOfN0EAaLDRpAATHAQWSAfMAWdQfADWAyLiBI/8BIPeEFdeZAMdKAvASPwAcqgA+UwjHA99rgBoAPlcD32IXCwQcUzxyACoKACkyJ+gHAR0mJwEiJRCQoOOgfQQKLIAFMiQjB6FqAAUSLBatTYAWgB3UHYAGbYAG6IYETMcnoS8IH4UiAicJJicfoFYIFCEQkVEFmieGLVGugIsACBsQCTAEC4ALoNv3AruABUIICAAKNUKj/6OloAlRkAtVgAlJIghPoukABTAAryingALoxwiXxoAxFMUDARTH26DQCBcIVAV0L0QKM8ABJicaLUgrxAHTBBRXyG0MMsAaLFeOgAIEBU2EFEeAZWA8QsBxBuP5BECZMicm6+nIATAAkOA8RRCRY6BLs0B5Mi+AATInqM2AD0BkgJXAZ8Sfo+FGwAU2F9oEH8iEFECGxCI1lyFshJUFdAEFeQV9dw4M9onwQBwB0S7Anh2EItbAtP7Atc7AAsS0zUUTF8y1g8ATHBUrhAmMrGkunAEilAKArw8NBElYRKldWUDvsOIGC+pE/dBBJicxQKgBNic2D+g91DxDrIeiBQAVFMe0E6XLAEIP6FA+FSWFCQb2hEeleUAC6GvBRBxJQBxAgqEB0YBFJg+C/QgHRDNKRMkdsJCCQMkG4MFBIADH2MAy7GmEB4ozoA4ERsSPF6NiQAhkTGboEUC1SAcbomoVXAQtTAUiJw+iRUAhI/8vAIUg53n+AFkmJ8EmJ+fQTgntQEEj/xuvl9AAKYKFMtYAHg/pOdCAV'
$SciTeTabHook_x64dll &= 'TIs1P7AHgfoHoUQgVVAA6zdBgXmAENn9//91ExRBcjSTUuj88h/QCyALCEdgA0AMUAtBuE5hA1xQgz3nGUEZQuEbPehNifADGN9FAyIPcQZYxwW7gQIzGLynALnNpADrsB/0AonQAAawKbTo6cI+xZAaQCPoxiDJ8EM9jWEDdTYhHyAgAmjQAEGJyUiNFSCk+f//uZGI6FTl8QWF8DgFYtABMDsBH7QPtqA7wxFp0AxKcAG1QSQZUQToEDnxCDGlCQPhIYEC/yWmOgAAoJCQ/yWWdACGdACqdnQAZnQAVnQARnQAqjZ0ACZ0ABZ0AAZ0AFT2OXMA5nQA1nQAxlV0AK50AJ50AI50AH5VdABudABedABOdAA+P3MABAB2ffwADwADAFNjAGlUZVRhYkN0/HJs3wEPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAH8PAA8ADwAPAA8ADwC113hX8L9BTmXXKPAASDAAaGUwAGb010MSAH9wAKMAFgAAmRQAAO5VMADnsACNMAKZMAChVTAArzAAuzAAxzAA1lUwAN5CyAGgxQNgwwUQAAYAB3YnSG9vAGtfeDY0LmRsAGwAQ2FsbFduAGRQcm9jAERsAGxNYWluAERygGF3U2luZ2zRAhAAR2V0lQMASW4Mc3QAAxEEAFJlbQBvdmVTdWJjbI5hgM/gAUIEVW5pSAL/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAAMAqrEIPFAABgBQUwAAoARRAACECJiYAExWTABMEQDMBFzYBA7spQQO/AQOBlIDDhIEDloiBA4uBA4FAD4ED1BVBAdiBAduBAd6BAeKVQQHkgQHpgQHtAQHxlUEB9IEB+IEB/YEBwobAMsBACAEB83HMwRDAHJlYXRlUGVuBAA9hAVTb2xpZCBCcnVzaIAfBEQAZWxldGVPYmoAZWN0AABJBkwAaW5lVG8AAFcQBk1v'
$SciTeTabHook_x64dll &= 'dkACRXgAkAC8BlNACWN0RQkCxMADdEJrTW9kCGUA68ECVGV4dABDb2xvcgAAH0AAQ2FsbE4ABEgob29rQQ8gQgRXaQBuZG93UHJvYwBBANgARHJhdwEBDUEADQFGaWyUbFLCFQ/AAm5kQwoARXhBAD8BR2VgdERDANbBAYMFTABvbmdQdHJBAMD3AUluZmyAM4IOwAoCSW52YcA1BQQQANkCUsAsYXNlAcAP7QJTZW5kTYBlc3NhZ2VBQK9WA8AszBNYxwRzQy5BwACFA1VuaMACigXgAJoDVXDBGUMFAXcB2wBHREkzMi5kNGxsgAMUwAP1AFVTHEVSBhI/ABYA'
$SciTeTabHook_x64dll = _WinAPI_Base64Decode($SciTeTabHook_x64dll)
If @error Then Return SetError(1, 0, 0)
Local $tSource = DllStructCreate('byte[' & BinaryLen($SciTeTabHook_x64dll) & ']')
DllStructSetData($tSource, 1, $SciTeTabHook_x64dll)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 5120)
If @error Then Return SetError(3, 0, 0)
$tSource = 0
Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local Const $hFile = FileOpen($sSavePath & "\SciTeTabHook_x64.dll", 18)
If @error Then Return SetError(2, 0, $bString)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_SciTeTabHook_x64dll
Func _SciTeTabHookdll($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $SciTeTabHookdll
$SciTeTabHookdll &= 't7cATVqQAAMAAACCBAAw//8AALgAOC0BAEAEOBkAgAAMDh8Aug4AtAnNIbgAAUzNIVRoaXMAIHByb2dyYW0AIGNhbm5vdCAAYmUgcnVuIGkAbiBET1MgbW+AZGUuDQ0KJASGAFBFAABMAQYAEHB652kFV+AADoAjCwECIgAIAAxqCgADAgADEAQDAwAQtwILABcBtwEEvwIAcAMMiA6+AALXAAAgBDcvAAQEPwIGAODoAoAAAIbYgS8VAGAAAKyghRUNAKCAK2SYDy50ZfR4dIFOBwRIgXUGYgMAACAAMGAucmRhXHRhhFkAZYKFDIsTQIAAMEAuYnNzgQWGMAYCkdcwwC5lgyfXgn0B8sETDtATacMJwkYPwDLCJsdfxQnALnJluGxvY8RIwErCExTOCf5CsFA/AD8APwA/AD8AGAAAg3wkCAF1T8cABRgwABCI0IgAAItEJATHBQgBoAFAgEAAxwUEUSAB5eXlIAEQIAH/MWCExwUUIAGBB8cFYgwgAfDw8CABgE4QQP/AwACjIAABgwDI/8IMAIPsDAhqAGigVhBqAP9AdCQc6DcGAA7EAAzCBABXVlOLAHwkEItcJBiFEP8PiHhAeItDCAA9UIQAAHQJPQJRwAB1Zetzgz1iHCEND4VY4AOgCf8wcwzop0AQYAiFwCCJxg+EQOACoyghYARQaH8UwAz8VgDomwUAAFqFwESjJKACD4QfAARQgGr/agBWxwVhCRGAB//okEAEUFBWJOmYQBg9UmAND4US90AB6Y+AAItDBACFwHQHg/gBdUAL6xCLA6PhIuswVYP4AuQBIR7rRRiD+APkAWEh6zWDDPgE5AHhIOslg/gaBeABF+ABISnrFYOY+AZ1oQOhKesHAAFNgSmhIRegDX1SIRRQhOj4YGxRUf81wQIk6LuAAetgJCB0WhFlBVGLFSEbhdJ0AEdRUmr8UOirl+AEwQfEBrTAAVZWhAH+d4AB4x6jNSEHIwHBA8I/CMQM'
$SciTeTabHookdll &= 'U0AzGFf/NYosIQa1IAZbXl+ANyBVMcBXuYF+VlMIgexMoHqLtCRoAcAAjVQkBInXiwicJGSAAfOrUlaIaAoTQMe0JGzgAQToJSAGhcAPhMwD4C4gBSgxwInXuSegPiAFwAFAuUHGiVQAJDCNbCQkidfA86vHRCQkwbfgAIQ0/wABVVZoBcgJUtZAuIsVQTA7IwJ0CAaLFSEwMcCAfAAEQAB1BoXAdSAK6yxAPYEHdesEMcnAAj8qD5TBEDHA99lkBg+VwHD32IXBQQeBM+BIUgToBeAUicVQUFUAjUQkHFBT6KVBAA1YWlXo5eAAoUdBNgAjxAd1BaGhNlGAUGoBagDo1AAEIlcgB1PooiABiccUWFpiWxRgAAxT6NqWYAJRQQHDAY/AASEBqWBqFEhABn/jARTlAYJv4AFQV1PoV+EAYFUx7ehmAAEgD2pqACAAMYUg0YAAID8NFFdXQAYsoQ7FWFpiUMARU+gWwRUhUFqmWacVQUtWVmAF8OABwUI4jXwkHI3gEEAfQPOlav5q+oABMAhW6JDgA19YaCVRQBlWav+QEFhAA6MjQAHxNe10C+ARU+jCu/AAWlmBxCEgkCFQXcIQAEUpQUUpOKFGKS6D7BBiKRTgAkOvJ6snEMPDVYBAg2TsHAARNIswCTBBOA0wQTxSOVE4D3UO6wgf6ItQOzHb6TlBUUD4FA+Fm+ADuwlhI+km8T1QavBWBOjLkABaqEBZdLAOg+C/wBogAZAgAcJdMA9TV2oPIDEhCILogSlWicPopLEEkMQMicWxFmgEMCdoVuhoMAFqMB0AAQuFAgFXUSxX/zH/ICsECDuQUn8UUIlEACQQV0dVVujbiPz//3ALDOvmcBIIVugzsAJYWumVgZEN+E50Dz2C0UQCLUEHdXHrL4F7AAjZ/f//dRZR2dJI6AzBLmAD1EM4UwpSTlQK60glFjdwGDN0UFWBTcLSEx8VFxVSkFJTV2hhB+sG8gSgUFZV6NwBN8MR'
$SciTeTabHookdll &= 'BjDEHInYBhzBPgB1I9AakSoQ/zVBW2h3oVCVagToUSADowECyYA8lcCgAw+2ADRAWw1RXQTwOLIB0nQXg+DsGFLoGyII8gSiDAQYw2ACw5D/JfxQUAAQkHAA+HQA9FV0APB0AOx0AOh0AORVdADgdADcdADYdADUVXQA0HQAzHQAyHQAxFV0ALx0ALh0ALR0ALDVdACsdACodACkdAAQm/9xABFusrBzAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwABBQBTY2lUZVRh4GJDdHJs3wEPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8Aew8Atdd48MBRVaHIMQAodfAASDAAaDAAsEHyvxkQEgAAXHAA9RUAjAA0cL5glwAyFjBGVTAClTAAnTAAqzAAt1UwAMMwANIwANrC5AEFoMEDYMQFAAYABwF2J0hvb2suZGwAbABDYWxsV24IZFBy0MREbGxNAGFpbgBEcmF3IFNpbmdskQIARwRldFUDAEluc3QDAAPRAwBSZW1vdoBlU3ViY2xhQNDj4AFCBFVuaUgCDwAPAP8PAA8ADwAPAA8ADwAPAA8APw8ADwAPAA8ADwAHAIGyCDxQAAYAhFIAAKqgAHhgCJjMAEzECDxBCQAEUQAAEAAGJFUABjQABj4ABkoABlqtAAZmAAYBAHYADogABqqaAAamAAayAAbCAAaqygAG3AAG6gAD/AADqggAZxgAAyoAAz4AAwZUAANlYz0AQ3JlAGF0ZVBlbgBGAYQFU29saWRCcgB1c2gAAEwARABlbGV0ZU9iagBlY3QAAP8ATABpbmVUbwAAAhABTW92gARFeACQADIBU4ASY3SFEgI5gAd0QmtNb2QIZQBdgQVUZXh0AENvbG9yAAAeQABDYWxsTgAISChvb2uBHh+CCFdpAG5kb3dQcm9jAEEA1wBEcmF3AQEaQQAJAUZpbJRsUoIr'
$SciTeTabHookdll &= 'C4AFbmSDFABFeEEAOAFHZWB0REMAyIEDAwtMAG9uZ0EAAOgBsEluZmwAZgIc9IAGDHZhgGoFCACvAlIRgFhhc2VAD8ECUwBlbmRNZXNzYWRnZcAOGQNALEoTJAVHBHNDLUEAWANVDG5owAKKBQBsA1U+cEEZQwUAWMGP2ABHRIBJMzIuZGxsgAOGFMAD9QBVU0VSBhIfPwA/AD8APwAdABAAAAKswAAJMBcwITAAKzA1MD8wSTAAUjBiMJ8wwzAAyTDZMOswITEAMTFBMVExYTEAbzF4MX0xlDEAoTGpMbMxyzEA2DHjMe0x9zEACjKkMrMy7jIAFDMlM8Mz0zMANjQ+NEg0XjQAaDRyNOs0YDUAkTWZNbA1ujUAxDX3NQc2DDYAGDY0Nkc2WjYAYjZqNnI2ejYAgjaKNpI2mjYAojaqNrI2ujYAwjbKNtI22jYA4jbqNvI2+jbwAjcKN18ZHwAfAB8APx8AHwAfAB8AHwAfAAAA'
$SciTeTabHookdll = _WinAPI_Base64Decode($SciTeTabHookdll)
If @error Then Return SetError(1, 0, 0)
Local $tSource = DllStructCreate('byte[' & BinaryLen($SciTeTabHookdll) & ']')
DllStructSetData($tSource, 1, $SciTeTabHookdll)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 5632)
If @error Then Return SetError(3, 0, 0)
$tSource = 0
Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local Const $hFile = FileOpen($sSavePath & "\SciTeTabHook.dll", 18)
If @error Then Return SetError(2, 0, $bString)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_SciTeTabHookdll
Func _WinAPI_Base64Decode($sB64String)
Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
$aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
Return DllStructGetData($bBuffer, 1)
EndFunc ;==>_WinAPI_Base64Decode
Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
$tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
If @error Then Return SetError(1, 0, 0)
Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
If @error Then Return SetError(2, 0, 0)
If $aRet[0] Then Return SetError(3, $aRet[0], 0)
Return $aRet[6]
EndFunc ;==>_WinAPI_LZNTDecompress
Alles anzeigen
Alles anzeigenOk für die Fraktion, für die das (zu Recht) noch etwas zu abstrakt ist, habe ich mal ein weiteres Beispiel dem Example-Ordner hinzugefügt: InteractiveCircleFit.au3 (und das sogar auf deutsch!...)
Mit dem Skript klickt der User beliebige Punkte auf der Zeichenfläche und das Skript gleicht über diese Punkte einen bestanpassenden Kreis aus.
Das Beispiel eignet sich meiner Meinung nach sehr gut da man hiermit schnell viele Dinge der Ausgleichungsrechnung visualisieren kann:- was sind Beobachtungen, was sind Parameter?
- was sind diese "Residuen"?
- was bedeuten die Standardabweichungen?
- was genau wird da eigentlich "ausgeglichen"?
- was bedeutet "robuste Ausgleichung"?Einfach mal herumspielen damit (neues Release liegt auf Github).
Hinweis zur Urheberschaft: Da ich nicht so der visuelle Typ bin und von Grafik in AutoIt null Ahnung habe, habe ich mich für dieses Beispielskript intensiv Claude bedient.
Ich bin vom Ergebnis sehr angetan und freue mich, dass auch Claude die Verwendung meiner UDF komplett verstanden hat.
Bekomme eine Speicherschutzverletzung (0xC0000005 / -1073741819), sobald ich den 3. Punkt setze.
Super Arbeit ![]()
Was meint ihr dazu?
Why not. Können wir gerne testen.
Apropos testen:
#AutoIt3Wrapper_UseX64=y
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include "..\JIT.au3"
AutoItSetOption("GUIOnEventMode", 1)
Global $hCRT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", "ucrtbase.dll")[0]
Global $pSin = DllCall("kernel32.dll", "ptr", "GetProcAddress", "handle", $hCRT, "str", "sin")[0]
Global $pCos = DllCall("kernel32.dll", "ptr", "GetProcAddress", "handle", $hCRT, "str", "cos")[0]
Global $pPow = DllCall("kernel32.dll", "ptr", "GetProcAddress", "handle", $hCRT, "str", "pow")[0]
If Not $pSin Or Not $pCos Or Not $pPow Then Exit MsgBox(16, "Fehler", "Math-Pointer nicht gefunden!")
Global $sCode = _
'typedef double (*MathFn1)(double);' & @LF & _
'typedef double (*MathFn2)(double, double);' & @LF & _
'CALLCONV void RenderDwitter(unsigned int* ptr, int iW, int iH,' & @LF & _
' MathFn1 fsin, MathFn1 fcos, MathFn2 fpow, double t) {' & @LF & _
' int i, px, py;' & @LF & _
' double y, k, e, d, q, P;' & @LF & _
' int l = 840, l1 = (l >> 1), l2 = (l >> 2);' & @LF & _
' for (i = iW * iH - 1; i--;) ptr[i] = 0xF0202020;' & @LF & _
' for (i = 20000; i-- > 0; ) {' & @LF & _
' y = (double)i / l;' & @LF & _
' k = (4.0 + fsin(y * 2.0 - t) * 3.0) * fcos((double)i / 29.0);' & @LF & _
' e = y / 8.0 - 11.0;' & @LF & _
' d = fpow(k * k + e * e, 0.66);' & @LF & _
' q = fsin(k * 2.0) + 0.3 / k + fsin(y / 25.0) * k * (9.0 + 4.0 * fsin(e * 9.0 - d * 3.0 + t * 2.0));' & @LF & _
' P = d - t;' & @LF & _
' px = (int)(q * fsin(P) + d * 39.0 - l1);' & @LF & _
' py = (int)(q + 30.0 * fcos(P) + l2);' & @LF & _
' if (px >=0 && px < iW && py >=0 && py <iH)' & @LF & _
' ptr[py * iW + px] = 0xB0FFFFFF;' & @LF & _
' }' & @LF & _
'}'
Global $mCode = _JIT_Compile($sCode, (@AutoItX64 ? "-O3 -ffloat-store" : "-Ofast"))
If @error Then Exit MsgBox(16, "Fehler", "Kompilierung fehlgeschlagen")
_GDIPlus_Startup()
Global $iW = 840, $iH = Int($iW * 9 / 16)
Global $pScan0 = DllStructCreate("ulong rgba[" & $iW * $iH & "]")
Global $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH, $GDIP_PXF32ARGB, $iW * 4, $pScan0)
Global $hGUI = GUICreate("JIT Render https://dwitter.net/d/33997", $iW, $iH)
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $fT = 0.0, $bExit
Do
DllCallAddress("none", $mCode.ptr + $mCode.Funcs["RenderDwitter"], "ptr", DllStructGetPtr($pScan0), _
"int", $iW, _
"int", $iH, _
"ptr", $pSin, _
"ptr", $pCos, _
"ptr", $pPow, _
"double", $fT)
_GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap, 0, 0, $iW, $iH)
$fT += 0.05
If $bExit Then ExitLoop
Until Not Sleep(10)
_GDIPlus_GraphicsDispose($hGfx)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
_JIT_Free($mCode)
Func _Exit()
$bExit = True
EndFunc ;==>_Exit_About
Alles anzeigen
Das sollte unter x86 und x64 laufen. Bitte mal testen.
Original JS Code:
l = c.width = 840;
for (i = 2e4; i--; )
y = i / l,
k = (4 + S(y * 2 - t) * 3) * C(i / 29),
e = y / 8 - 11,
d = (k * k + e * e)**0.66,
q = S(k * 2) + 0.3 / k + S(y / 25) * k * (9 + 4 * S(e * 9 - d * 3 + t * 2)),
P = d - t,
px = q * S(P) + d * 39 - l / 2,
py = q + 30 * C(P) + l / 4,
x.fillRect(px, py, 1, 1)
Alles anzeigen
Zuhause funzt es bei mir auch. Code oben aktualisiert.
![]()
Btw, wie bekomme ich den Binärstring Online?
$__g_JIT_oHTTP ist Global, aber nicht $oHTTP - wird immer local in der Funktionen definiert.
Meinst du vielleicht?:
$__g_JIT_sProxy = "localhost:3128"