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. eukalyptus

Beiträge von eukalyptus

  • dlls für berechnungen

    • eukalyptus
    • 6. Juni 2010 um 00:51

    Im Prinzip gibt man nicht das Array als solches zurück, sondern nur seinen Pointer...

    in meinem Beispiel ist PArray der Pointer zu TArray.
    genauer kann ich das leider auch nicht beschreiben ;)


    Edit:
    Vielleicht hilft es, wenn du dir das so vorstellst:

    Code
    Type
    TArray = Array[0..10] of DWord;
    PArray = ^TArray;

    =

    [autoit]

    $TArray = DllStructCreate("DWord[10]")
    $PArray = DllStructGetPtr($TArray)

    [/autoit]
  • dlls für berechnungen

    • eukalyptus
    • 6. Juni 2010 um 00:32

    Arrays gehen schon, ich kann jedoch nur eine Lazarus-Dll (FreePascal) als Beispiel anbieten:

    Code
    library ArrayDll;
    
    
    Type
    TArray = Array[0..10] of DWord;
    PArray = ^TArray;
    
    
    Function ReturnArray(): PArray; stdcall;
    Var aRet : PArray;
        iLoop : DWord;
    Begin
         New(aRet);
         For iLoop:=0 To 9 Do aRet^[iLoop]:=iLoop;
         ReturnArray:=aRet;
    End;
    
    
    exports ReturnArray;
    
    
    begin
    end.
    Alles anzeigen
    [autoit]

    $Dll = DllOpen("Arraydll.dll")
    If @error Then Exit

    [/autoit][autoit][/autoit][autoit]

    $aRet = DllCall($Dll, "ptr", "ReturnArray")
    If @error Then Exit

    [/autoit][autoit][/autoit][autoit]

    $tStruct = DllStructCreate("DWord[10]", $aRet[0])
    For $i = 1 To 10
    ConsoleWrite($i & " " & DllStructGetData($tStruct, 1, $i) & @LF)
    Next
    DllClose($Dll)

    [/autoit]

    Das geht sicher auch mit C++

  • AutoIt-Library 3.0 < NEW>

    • eukalyptus
    • 5. Juni 2010 um 01:22

    Ich find die Idee super

    Vielleicht könntest du ja einen Installer machen, der die UDF´s ins Include-Dir kopiert und evtl. die AutoitLibary.chm in die normale Autoit-Hile einbettet!?

    Als weitere UDF´s würde ich noch GDIP und WinApiEx vorschlagen.

    mfgE

  • falls process existiert cmdline weitergeben

    • eukalyptus
    • 3. Juni 2010 um 20:48

    Vielleicht hilft dir das weiter: Prog übergibt Parameter an seine 1 Instanz (mehrere Dateien via Kontext-Menü)

    mfgE

  • Variable mit Bedingung kürzen

    • eukalyptus
    • 2. Juni 2010 um 10:41

    Fortgeschrittenenkompatibel^^

    [autoit]

    $sDateiName = "00001234567812345.abc"
    $aRegExp = StringRegExp($sDateiName, "0*(\d+)\d{5}", 1)
    ConsoleWrite($aRegExp[0] & @CRLF)
    ;Erklärung zu: "0*(\d+)\d{5}"
    ;0*: findet alle Nullen
    ;(\d+): \d+ findet alle Zahlen, da es in Klammer gesetzt ist, wird nur dieser Teil zurückgegeben
    ;\d{5}: findet genau 5 Zahlen
    ;d.h.: es wird nach beliebig vielen Nullen gesucht, die von beliebig vielen Zahlen gefolgt werden, denen wiederum genau 5 Zahlen folgen.
    ;und da "beliebig viele Zahlen" in Klammer gesetzt ist, werden nur diese ausgegeben...

    [/autoit]

    bzw. um gleich den vollen Dateinamen zu erhalten incl. Extension:

    [autoit]

    $sDateiName = "00001234567812345.abc"
    $sNeu = StringRegExpReplace($sDateiName, "0*(\d+)\d{5}", "\1")
    ConsoleWrite($sNeu & @CRLF)

    [/autoit]
  • StringRegExp gesammter Ausdruck einer Klammer incl. Unterklammer

    • eukalyptus
    • 1. Juni 2010 um 12:23

    Als ich das mal gebraucht hab, mußte ich ziemlich lange nach einer Lösung suchen.
    Deshalb poste ich das mal, weil es sicher mal jemand brauchen kann:

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $sString = "0 (1(2) (3(4)) 5) 6 (7(8)) 9"

    [/autoit][autoit][/autoit][autoit]

    $aRegExp = StringRegExp($sString, "\((?:[^()]*|(?R))*\)", 3)
    _ArrayDisplay($aRegExp)

    [/autoit]

    Ergebnis:

    Code
    (1(2) (3(4)) 5)
    (7(8))


    Der Pattern liefert den gesammten Asudruck der Klammern incl. Unterklammern.

  • DllCall (Javacode nach Autoit übersetzen)

    • eukalyptus
    • 1. Juni 2010 um 11:10

    Also direkt übersetzt würde das in etwa so aussehen:

    [autoit]

    $utility = ObjCreate("CopyCheck.Utility")
    $control = $utility.getObject()
    $result = DllCall($control, "int", "CopyCheckEx", "int", 1020, "int", 0, "str", $path)
    $value = $result[0]

    [/autoit]

    Ich hab aber so meine Zweifel, daß der Code so funktioniert
    Wär vielleicht gut, wenn du die DLL zum testen hochladen könntest bzw. einen Link dazu posten...

  • compilen funktoniert jedes 10te mal

    • eukalyptus
    • 29. Mai 2010 um 11:50

    Das ist mir auch aufgefallen (Win7 64).

    Wenn nebenbei ein Explorer im Scriptverzeichnis offen ist, dann ist es besonders arg.
    Hab das nicht weiter getestet, aber vielleicht muß man nur die automatische Aktualisierung (oder wie das auch immer heißt) des Explorers deaktivieren...

  • Happy Birthday GtaSpider

    • eukalyptus
    • 27. Mai 2010 um 08:10

    Happy bithday!

    *tröööt*
    *konfettischmeiß*

  • Happy Birthday anno2008 und SEuBo

    • eukalyptus
    • 27. Mai 2010 um 08:02

    Herzlichen Glückwunsch

  • #include mit variable

    • eukalyptus
    • 25. Mai 2010 um 08:40
    Zitat von 'AutoBert

    ...dann musst du einen anderen Weg finden wie EXE-Files kommnizieren können z.B.: http://www.autoitscript.com/forum/index.php?showtopic=104117
    mfg (Auto)Bert

    *Räusper*

    Exchange Variables UDF Beta :D

    mfgE

  • Farbige Progressbar

    • eukalyptus
    • 24. Mai 2010 um 20:42

    Dafür gibts eine Funktion die ToggleXpStyle oder so ähnlich heißt.
    Ich kann sie leider nicht finden, wenn ich mich richtig erinnere war sie von Prog@ndy

    die hat aber sicher jemand archiviert


    EDIT: Gefunden

    [autoit]


    XPStyleToggle(1)
    GUICreate("Test", 120, 40)
    $hProgress = GUICtrlCreateProgress(10, 10, 100, 20, 0x01)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0xFF0000)
    XPStyleToggle(0)
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    While GUIGetMsg() <> -3
    GUICtrlSetData($hProgress, Random(0, 100, 1))
    Sleep(10)
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func XPStyleToggle($OnOff = 1)
    Local Static $XS_n
    If Not StringInStr(@OSType, "WIN32_NT") Then Return 0
    If $OnOff Then
    $XS_n = DllCall("uxtheme.dll", "int", "GetThemeAppProperties")
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    Return 1
    ElseIf IsArray($XS_n) Then
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", $XS_n[0])
    $XS_n = ""
    Return 1
    EndIf
    Return 0
    EndFunc ;==>XPStyleToggle

    [/autoit]
  • Farbige Progressbar

    • eukalyptus
    • 24. Mai 2010 um 20:33

    So?

    [autoit]

    GUICreate("Test", 120, 40)
    $hProgress = GUICtrlCreateProgress(10, 10, 100, 20, 0x01)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    While GUIGetMsg() <> -3
    GUICtrlSetData($hProgress, Random(0, 100, 1))
    Sleep(10)
    WEnd

    [/autoit]

    E

  • GDI+ Partikelexplosion (noch eine ;-) )

    • eukalyptus
    • 24. Mai 2010 um 20:28

    Auf manchen Win-XP Rechnern hilft

    [autoit]

    WinSetTrans($hGUI,"",0xFF)

    [/autoit]

    (Nach GUISetState() einfügen)


    Ansonsten: gefällt mir :thumbup:

  • Tempelsoft.de = Klau-Seite?

    • eukalyptus
    • 24. Mai 2010 um 00:03

    Willkommen in der Welt der Erwachsenen!

    Wer einen Fehler begangen hat und ihn nicht korrigiert, begeht einen weiteren Fehler - Konfuzius

    Noch viel zu lernen du hast, mein junger Padawan - Yoda

    Riech erstmal da wo einige von uns schon hingeschissen haben - ideas2code

  • Youtube Videos abspielen (Nur Sound)

    • eukalyptus
    • 23. Mai 2010 um 23:29

    Du hast bei GUICtrlCreateObj Breite und Höhe auf 0 gesetzt - also wird die Seite nicht angezeigt.

    Um im Forum AutoIt-Code einzufügen zuerst auf "SP" und dann auf das "A"-Logo klicken ;)

  • Rasterbator Clone - Erstellen von riesigen Postern

    • eukalyptus
    • 23. Mai 2010 um 22:52

    Wahnsinn!
    Kaum postet man ein Script, kommen wie aus der Pistole geschossen die Feedbacks :rofl:

    btw.: ich hab damals tatsächlich mit einer PDF-UDF begonnen.
    muß ich mal suchen und wieder weitermachen...

    E

  • LED - Laufschrift

    • eukalyptus
    • 23. Mai 2010 um 22:44

    Natürlich darfst du :thumbup:

  • mit winmm.dll mp3 aufnehmen

    • eukalyptus
    • 23. Mai 2010 um 22:40

    Lade dir aus dem englischen Forum die aktuellste Version der Bass.au3 runter:
    http://www.autoitscript.com/forum/index.php?showtopic=83481&view=findpost&p=597106
    (Auch die Patches nicht vergessen)

    Im Unterverzeichnis Bass_enc findest du ein Aufnahme-Beispiel.
    BrettF hat leider noch nicht die ganz neue Version veröffentlicht, deshalb hier das gebugfixte Beispiel:

    Spoiler anzeigen
    [autoit]

    #include "..\..\Bass\Bass.au3"
    #include "..\BassEnc.au3"
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiComboBox.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $device, $input, $EncHandle, $RecHandle, $Bitrate = 128, $KHZ = 44100, $levels, $levelL = 0, $levelR = 0, $temp, $EncState = False

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_STARTUP("..\..\Bass\Bass.dll")
    _BASS_Encode_STARTUP("..\BassEnc.dll")
    $basscb_dll = DllOpen("..\BASSCB.dll")

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("Bass.dll / BassEnc.dll Recording Test", 320, 320)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlCreateLabel("Select AudioDevice:", 10, 10)
    $hDevice = GUICtrlCreateCombo("", 10, 30, 300, 20, BitOR($CBS_DROPDOWN, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetOnEvent(-1, "_SelectDevice")
    GUICtrlCreateLabel("Select AudioInput:", 10, 60)
    $hInput = GUICtrlCreateCombo("", 10, 80, 300, 20, BitOR($CBS_DROPDOWN, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetOnEvent(-1, "_SelectInput")
    $hMp3 = GUICtrlCreateRadio("Mp3", 50, 110, 50)
    $hWav = GUICtrlCreateRadio("Wav", 50, 130, 50)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $hBitrate = GUICtrlCreateCombo("", 120, 110, 50, 20, BitOR($CBS_DROPDOWN, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, "32|40|48|56|64|80|96|112|128|160|192|224|256|320", "128")
    GUICtrlCreateLabel("KBit/s", 180, 113, 50)
    $hPeakL = GUICtrlCreateProgress(10, 160, 300, 10)
    $hPeakR = GUICtrlCreateProgress(10, 175, 300, 10)
    GUICtrlCreateLabel("Encoder Active:", 10, 200)
    $hEncActive = GUICtrlCreateLabel("", 120, 200, 200)
    GUICtrlCreateLabel("Data sent to Encoder:", 10, 220)
    $hEncCount = GUICtrlCreateLabel("", 120, 220, 200)
    GUICtrlCreateLabel("Filesize:", 10, 240)
    $hFilesize = GUICtrlCreateLabel("", 120, 240, 200)
    $hStart = GUICtrlCreateButton("Start", 20, 280, 130, 20)
    GUICtrlSetOnEvent(-1, "_Start")
    $hStop = GUICtrlCreateButton("Stop", 170, 280, 130, 20)
    GUICtrlSetOnEvent(-1, "_Stop")
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;_BASS_SetConfig($BASS_CONFIG_REC_BUFFER, 1000)
    $device = _GetDevices()
    $r = _BASS_RecordInit($device)
    $input = _GetInputs()
    $temp = DllCall($basscb_dll, "dword", "RecordStart", "dword", $KHZ, "dword", 2, "dword", _makelong($BASS_SAMPLE_FX, 10))
    $RecHandle = $temp[0]

    [/autoit] [autoit][/autoit] [autoit]

    $timer = TimerInit()
    While 1
    Sleep(20)
    $peak = _BASS_ChannelGetLevel($RecHandle)
    If Not @error Then
    $temp = (_LoWord($peak) / 32768) * 100
    If $temp > $levelL Then $levelL = $temp
    $temp = (_HiWord($peak) / 32768) * 100
    If $temp > $levelR Then $levelR = $temp
    GUICtrlSetData($hPeakL, $levelL)
    GUICtrlSetData($hPeakR, $levelR)
    $levelL -= 4
    $levelR -= 4
    Else
    ToolTip(@error)
    EndIf
    If TimerDiff($timer) > 200 Then
    $timer = TimerInit()
    GUICtrlSetData($hEncActive, _BASS_Encode_IsActive($EncHandle))
    If $EncState Then
    GUICtrlSetData($hEncCount, _BASS_Encode_GetCount($EncHandle, $BASS_ENCODE_COUNT_IN))
    If GUICtrlRead($hWav) = $GUI_CHECKED Then
    GUICtrlSetData($hFilesize, Round(FileGetSize(@ScriptDir & "\Test.wav") / 1024, 2) & " kb")
    Else
    GUICtrlSetData($hFilesize, Round(FileGetSize(@ScriptDir & "\Test.mp3") / 1024, 2) & " kb")
    EndIf
    EndIf
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Start()
    GUICtrlSetState($hDevice, $GUI_DISABLE)
    GUICtrlSetState($hInput, $GUI_DISABLE)
    GUICtrlSetState($hStart, $GUI_DISABLE)
    GUICtrlSetState($hMp3, $GUI_DISABLE)
    GUICtrlSetState($hWav, $GUI_DISABLE)
    GUICtrlSetState($hBitrate, $GUI_DISABLE)
    GUICtrlSetState($hStop, $GUI_ENABLE)
    If GUICtrlRead($hWav) = $GUI_CHECKED Then
    $EncHandle = _BASS_Encode_Start($RecHandle, @ScriptDir & "\Test.wav", $BASS_ENCODE_PCM)
    Else
    $EncHandle = _BASS_Encode_Start($RecHandle, 'lame -r -x -b' & GUICtrlRead($hBitrate) & ' -h - "' & @ScriptDir & '\Test.mp3"', 0)
    EndIf
    $EncState = True
    EndFunc ;==>_Start

    [/autoit] [autoit][/autoit] [autoit]

    Func _Stop()
    GUICtrlSetState($hDevice, $GUI_ENABLE)
    GUICtrlSetState($hInput, $GUI_ENABLE)
    GUICtrlSetState($hStart, $GUI_ENABLE)
    GUICtrlSetState($hMp3, $GUI_ENABLE)
    GUICtrlSetState($hWav, $GUI_ENABLE)
    GUICtrlSetState($hBitrate, $GUI_ENABLE)
    GUICtrlSetState($hStop, $GUI_DISABLE)
    _BASS_Encode_Stop($EncHandle)
    $EncState = False
    EndFunc ;==>_Stop

    [/autoit] [autoit][/autoit] [autoit]

    Func _SelectDevice()
    Local $new = _GUICtrlComboBox_GetCurSel($hDevice)
    If $new = $device Then Return
    _BASS_RecordFree()
    _BASS_RecordSetDevice($new)
    _BASS_Recordinit($new)
    GUICtrlSetData($hInput, "", "")
    _GetInputs()
    $temp = DllCall($basscb_dll, "dword", "RecordStart", "dword", $KHZ, "dword", 2, "dword", _makelong($BASS_SAMPLE_FX, 10))
    $RecHandle = $temp[0]
    $device = $new
    EndFunc ;==>_SelectDevice

    [/autoit] [autoit][/autoit] [autoit]

    Func _SelectInput()
    Local $new = _GUICtrlComboBox_GetCurSel($hInput)
    If $new = $input Then Return
    _BASS_RecordSetInput($new, $BASS_INPUT_ON, -1)
    $input = $new
    EndFunc ;==>_SelectInput

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetDevices()
    Local $count = 0, $info, $name = "", $sdef = "", $idef = 0
    While 1
    $info = _BASS_RecordGetDeviceInfo($count)
    If @error Then ExitLoop
    $count += 1
    If BitAND($info[2], $BASS_DEVICE_ENABLED) Then $name &= $info[0] & "|"
    If BitAND($info[2], $BASS_DEVICE_DEFAULT) Then
    $sdef = $info[0]
    $idef = $count
    EndIf
    WEnd
    GUICtrlSetData($hDevice, $name, $sdef)
    Return $idef - 1
    EndFunc ;==>_GetDevices

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetInputs()
    Local $count = 0, $info, $name = "", $flags, $sdef = "", $idef = 0
    $info = _BASS_RecordGetInputName($count)
    While $info <> ""
    $flags = _BASS_RecordGetInput($count)
    If Not IsArray($flags) Then ExitLoop
    $count += 1
    $name &= $info & "|"
    If BitAND($flags[0], $BASS_INPUT_OFF) = 0 Then
    $sdef = $info
    $idef = $count
    EndIf
    $info = _BASS_RecordGetInputName($count)
    WEnd
    GUICtrlSetData($hInput, $name, $sdef)
    Return $idef - 1
    EndFunc ;==>_GetInputs

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    If _BASS_Encode_IsActive($EncHandle) Then _BASS_Encode_Stop($EncHandle)
    _BASS_RecordFree()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    mfgE

  • Film mit 3D-Effekt und geklauten Bildern

    • eukalyptus
    • 23. Mai 2010 um 22:06
    Zitat von shayn

    ... Die Bilder habe ich mit javascript und dem stereoscopie "wiggle" verfahren animiert.

    So ein Zufall!
    Da hat wohl einer die selben Bilder auch auf die gleiche Weise animiert:
    http://hillelsteinberg.com/StereoAnimatedGIF/StereoGIF3.htm

    E

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™