Wobei es durchaus sinnvoll und nützlich ist die Anzahl der Strings, also die Arraygröße in array[0] stehen zu haben. Ansonsten müsstest du ggf. bei Schleifen die das komplette Array abarbeiten sollen immer zuerst mit ubound() prüfen wie groß das Array ist, um rechtzeitig die Schleife zu verlassen. Ein weiterer Vorteil ist, dass Eintrag 1 den Index 1 hat und du nicht daran denken musst, dass das Array bei 0 anfängt wenn du einen bestimmten Eintrag aufrufen willst.
Beiträge von misterspeed
-
-
Irgendwie versteh ich den Sinn deines Scripts noch nicht. Du willst dich wild durchs komplette Forum klicken und dort auch noch jeweils den letzten Beitrag auswerten und dann in die Userprofile der Beitragsersteller gehen um nachzuschauen ob der User gesperrt ist. Wozu soll das bitte gut sein? Der Sinn dahinter will sich mir nicht so recht erschliessen. Das was du vor hast (die Frage ist ja was das eigentlich werden soll) geht doch sicher sehr viel einfacher mit WBB Boardmitteln, SQL Abfragen oder ggf. WBB Plugins.
Wenn du massenhaft Postings von gesperrten Usern löschen willst gibts da mit Sicherheit bessere und deutlich schnellere Methoden. Dein Script wäre hier im AutoIT Forum jedenfalls Stunden lang beschäftigt.
Anstatt das ganze Forum Step by Step durchzuackern könnte man doch sicher auch die Suchfunktion missbrauchen um z.B. die neuesten Postings aufzulisten, die Postings eines bestimmten Benutzters usw.Auch sind alle Postings, Threads, Foren und Dateianhänge jeweils mit IDs durchnummeriert, was man ggf. ebenfalls nutzen könnte.
-
Alternativ dürfte auch _IEPropertyGet mit "locationurl" funktionieren.
-
[autoit]
[/autoit]
;Erzeugung der Input Felder für Tab1:
For $i=0 to 8
GUICtrlCreateInput("", $varFromLeft2, $aCPos[$i], $varTab1Widghts2, $varTab1High)
NextDas ist zwar kurz, aber ob es sinnvoll ist? Ich nehme doch mal stark an, dass der Inhalt der Inputboxen in irgendeinerweise weiterverarbeitet oder gespeichert werden soll. Wie liest du die Felder also aus, wenn du die zugehörigen ID's nicht speicherst? Wenn man das schon per Schleife macht um sich Schreibarbeit zu ersparen sollte man zumindestens ein Array verwenden um die ControlIDs zu speichern.
Also vielleicht so:
[autoit]
[/autoit]
Global $InputArray[1]
$InputArray[0]=0
;Erzeugung der Input Felder für Tab1:
For $i=0 to 8
_arrayadd($InputArray,GUICtrlCreateInput("", $varFromLeft2, $aCPos[$i], $varTab1Widghts2, $varTab1High))
$InputArray[0]=$i
NextDas ganze macht es aber trotzdem schwer ein spezielles Feld im nachhinein auszulesen. Deswegen halte ich es für sinnvoller jeder Inputbox eine namentlich eindeutige Variable zuzuweisen. So hat man z.B. später leichtes Spiel wenn man vorm Speichern der Formulardaten überprüfen will ob alle Angaben in den Feldern gültig sind, also z.B. nur Zahlen enthalten sind oder ein bestimmtes Muster wie beim Nummernschild eingehalten wurde.
-
Hatte ich aus dem Startpost so kopiert und übersehen, da hast du natürlich recht. Dass du bereits geantwortet hattest hab ich auch gesehen und auch noch dazu editiert warum deine Lösung nicht unbedingt ideal ist.
-
[autoit]
[/autoit]
GUICtrlCreateButton("Netto berechnen", $varFromLeft, 220, 180, $varTab1High)
$varNetto = "0"
GUICtrlSetOnEvent($GUI_EVENT_PRIMARYDOWN, "NettoBerechnen")einfach dem Button eine Variable zuweisen und dann auf das Event des Buttons hin die Funktion NettoBerechnen ausführen:
[autoit]
[/autoit]
$buttonBerechnen = GUICtrlCreateButton("Netto berechnen", $varFromLeft, 220, 180, $varTab1High)
$varNetto = "0"
GUICtrlSetOnEvent($buttonBerechnen, "NettoBerechnen")Alternativ kann auch
[autoit]
[/autoit]
GUICtrlSetOnEvent(-1, "NettoBerechnen")benutzt werden, aber dabei ist Vorsicht geboten, da sich -1 immer auf das zuletzt erstellte Objekt bezieht. Solltest du den Quellcode umstrukturieren oder die Erstellung eines anderen Objektes vor den guictrlsetonevent Befehl setzen wird das Event mit dem falschen Objekt verknüpft.
-
@ BadBunny:
Wenn du schon eine Lösung präsentierst solltest du nicht die Berechnung verändern, denn das von dir ist schlichtweg falsch. Hier soll nicht die MwSt abgezogen werden, sondern ein Netto Gewicht ermittelt werden.Zum Problem selbst:
Die Variablen $erstwiegung bzw $zweitwiegung sind nur die ControlIDs der Inputfelder. Der Inhalt dieser Felder wird wie oben bereits erwähnt mit guictrlread ermittelt bzw mit guictrlsetdata neu gesetzt. Dafür ist es im übrigen wichtig, dass alle Controls gelesen oder verändert werden sollen auch eine zugewiesene Variable haben, damit diese angesprochen werden können.
-
Ich würde mal drauf tippen, dass da was mit den Arbeitsverzeichnissen nicht stimmt.
Hier mal meine Vermutung was passiert:
Hauptprogramm befindet sich sagen wir mal in C:\Test
CUI Tool, welches den Installer aufruft befindet sich in C:\Test\Tool
Die MSI Dateien befinden sich in C:\Test\Tool\DataStartet man das CUI Tool direkt (z.B. aus Scite heraus) ist das Arbeitsverzeichnis C:\Test\Tool da dort die CUI liegt. Die MSI Dateien werden dann auch im Unterverzeichnis Data gefunden.
Startet man das CUI Tool hingegen per run oder vergleichbaren Befehlen vom Hauptprogramm aus und gibt in den Parametern des Befehls kein Workingdir an, dann wird die CUI nicht unter C:\Test\Tool ausgeführt, sondern unter C:\Test. Da es dort kein Data Unterverzeichnis gibt wird auch keine MSI gefunden und die Installation scheitert.Lösung wäre also:
[autoit]
[/autoit]
RunWait(@ComSpec & ' /c "' & $all_files[$k] & '" -manual', '', @SW_HIDE) ; Ausführen der manuellen Installation
; mit dem hier ersetzen...
RunWait(@ComSpec & ' /c "' & $all_files[$k] & '" -manual', $VerzeichnisindemsichdieCUIbefindet, @SW_HIDE) ; Ausführen der manuellen InstallationAber da das Problem vermutlich längst gelöst ist und hier auch keinerlei Informationen stehen wie die Verzeichnisstruktur genau ausschaut wird das wohl nur eine Vermutung bleiben.
-
Ist doch klar warum das so ist. Du schreibst in deinem Script:
[autoit]
[/autoit]
$Videoname = GUICtrlCreateInput("Videoname", 8, 24, 169, 21)
send ( $Videoname )$Videoname ist nicht der Inhalt des Input Textfeldes, sondern die ID des GUI Objektes das du erstellst. Wenn du den Inhalt des Feldes ermitteln willst, dann machst du das mit:
[autoit]
[/autoit]
$meintextderinssuchfeldbeiyoutubesoll = guictrlread($videoname)Diese Variable musst du dann per send ins Browser Suchfeld senden.
EDIT: Da war jemand schneller...
-
Hier mal eine überarbeitete Fassung deiner ersten Version mit OnEvent Mode. Um mehr Übersicht reinzubringen wurden nahezu alle Variablen anständig benannt und die GUI Erstellung besser strukturiert. Vielleicht kannst du damit ja etwas anfangen. Einige Dinge würde ich aber rausschmeissen, wenn auch nicht so radikal wie in deiner 2. Version
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Enigma.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>Opt("GUIOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]; Globale Variablen:
[/autoit] [autoit][/autoit] [autoit]Global $mykey
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $b
Global $c; GUI Erstellung:
[/autoit] [autoit][/autoit] [autoit]$GUIEnigmainASCII = GUICreate("GUI Enigma used ASCII / GUI written by SL1030", 615, 438, 192, 124, -1, $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]; Buttons:
[/autoit] [autoit][/autoit] [autoit]
$ButtonSetSuperKey = GUICtrlCreateButton("Set Super Key", 11, 8, 86, 33)
$ButtonShowSuperKey = GUICtrlCreateButton("Show Super Key", 11, 44, 86, 33)
$ButtonShowOriginal = GUICtrlCreateButton("Show Original", 16, 86, 81, 33)
$ButtonShowCrypted = GUICtrlCreateButton("Show Crypted", 16, 122, 81, 33)
$ButtonEncrypt = GUICtrlCreateButton("Encrypt", 16, 192, 73, 33)
$ButtonDecrypt = GUICtrlCreateButton("Decrypt", 16, 268, 73, 33)
$ButtonDelall = GUICtrlCreateButton("Del all $", 16, 320, 51, 16)
$ButtonEXIT = GUICtrlCreateButton("EXIT", 16, 376, 581, 45); Inputs:
[/autoit] [autoit][/autoit] [autoit]
$InputSuperKey = GUICtrlCreateInput("", 104, 16, 489, 21)
$InputShowOriginal = GUICtrlCreateInput("", 104, 90, 489, 26)
$InputShowCrypted = GUICtrlCreateInput("", 104, 127, 489, 26)
$InputText2Encrypt = GUICtrlCreateInput("", 112, 196, 481, 26)
$InputEncryptedText = GUICtrlCreateInput("", 112, 224, 481, 26)
$InputText2Decrypt = GUICtrlCreateInput("", 112, 271, 481, 26)
$InputDecryptedText = GUICtrlCreateInput("", 112, 300, 481, 26)
$InputHEHE = GUICtrlCreateInput("hehe: ð ÙçÀ:þÙ@ðþ ®}:@µ ÙçÀ®@µþ ÙçÀ:@ð ÙçÀ: : Key is Proud", 16, 340, 581, 26); Label:
[/autoit] [autoit][/autoit] [autoit]
$LabelShowSuperKey = GUICtrlCreateLabel("", 108, 48, 400, 36)
$LabelUhr = GUICtrlCreateLabel("" , 514 , 48 , 80 , 36) ; Current Time Label
$LabelStartTime = GUICtrlCreateLabel("Created by SL1030 at 01.11.2010" & " / Current Start Date/Time is : " & @mday & "." & @MON & "." & @YEAR & " / " & @hour & ":" & @min & ":" & @SEC, 16, 166, 588, 17); Farben:
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor($LabelUhr, 0xFF0000) ; Font Color from this ( Red now )
GUICtrlSetBkColor($ButtonSetSuperKey, 0xDD11CF)
GUICtrlSetBkColor($ButtonShowSuperKey, 0xA333CF)
GUICtrlSetBkColor($ButtonShowOriginal, 0xAAFFCF)
GUICtrlSetBkColor($ButtonShowCrypted, 0xBBFFCF)
GUICtrlSetBkColor($LabelStartTime, 0xFFCC06)
GUICtrlSetBkColor($ButtonEncrypt, 0xCCFFCF)
GUICtrlSetBkColor($ButtonDecrypt, 0xDDFFCF)
GUICtrlSetBkColor($ButtonDelall, 0xFF0011)
GUICtrlSetBkColor($ButtonEXIT, 0x00FFCF); Schriftarten:
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont($LabelShowSuperKey, 16, 800, 0, "MS Sans Serif")
GUICtrlSetFont($LabelUhr, 16, 800, 0, "MS Sans Serif") ; Font Art from this
GUICtrlSetFont($InputShowOriginal, 12, 800, 0, "MS Sans Serif")
GUICtrlSetFont($InputShowCrypted, 12, 800, 1, "MS Sans Serif")
GUICtrlSetFont($InputText2Encrypt, 16, 800, 0, "MS Sans Serif")
GUICtrlSetFont($InputEncryptedText, 16, 800, 0, "MS Sans Serif")
GUICtrlSetFont($InputText2Decrypt, 16, 800, 0, "MS Sans Serif")
GUICtrlSetFont($InputDecryptedText, 16, 800, 0, "MS Sans Serif")
GUICtrlSetFont($ButtonEXIT, 14, 800, 4, "MS Sans Serif")
GUICtrlSetFont($InputHEHE, 12, 800, 0, "MS Sans Serif")
GUICtrlSetFont($LabelStartTime, 11, 800, 0, "MS Sans Serif"); Sichtbarkeit:
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($LabelShowSuperKey,$GUI_HIDE)
GUICtrlSetState($InputShowOriginal,$GUI_HIDE)
GUICtrlSetState($InputShowCrypted,$GUI_HIDE)
GUICtrlSetState($InputEncryptedText,$GUI_HIDE)
GUICtrlSetState($InputDecryptedText,$GUI_HIDE); OnEvent-Modus:
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
GUICtrlSetOnEvent($ButtonSetSuperKey,"_SetKey")
GUICtrlSetOnEvent($ButtonShowSuperKey,"_ShowKey")
GUICtrlSetOnEvent($ButtonShowOriginal,"_ShowOrigin")
GUICtrlSetOnEvent($ButtonShowCrypted,"_ShowCry")
GUICtrlSetOnEvent($ButtonEncrypt,"_Crypt")
GUICtrlSetOnEvent($ButtonDecrypt,"_DeCrypt")
GUICtrlSetOnEvent($ButtonDelall,"_Delall")
GUICtrlSetOnEvent($ButtonEXIT,"_Exiter")GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1 ; Sorgt dafür, dass das Programm weiterläuft und zeigt die Uhrzeit an
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Guictrlsetdata($LabelUhr,@Hour&":"&@Min&":"&@Sec)
Sleep(1000)
WEnd; Funktionen:
[/autoit] [autoit][/autoit] [autoit]Func _SetKey()
[/autoit] [autoit][/autoit] [autoit]
$mykey = GUICtrlRead($InputSuperKey)
MsgBox(0 , "Confirm" , "'Your Super Key is now:' " & @crlf & _
@crlf & _
" >> " & $mykey & " << ")
EndFuncFunc _ShowKey()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($LabelShowSuperKey,$mykey)
GUICtrlSetState($LabelShowSuperKey,$GUI_SHOW)
EndFuncFunc _ShowOrigin()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($InputShowOriginal,$b)
GUICtrlSetState($InputShowOriginal,$GUI_SHOW)
EndFuncFunc _ShowCry()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($InputShowCrypted,$c)
GUICtrlSetState($InputShowCrypted,$GUI_SHOW)
EndFuncFunc _Crypt()
[/autoit] [autoit][/autoit] [autoit]
Local $WD[5][2] = [[4,4],[5000,200],[101,201],[3110,202],[11,203]]
$RD = 65042$a = GUICtrlRead($InputText2Encrypt)
[/autoit] [autoit][/autoit] [autoit]
$crypter = _Enigma_Initialize($mykey, $WD, $RD)
$b = _Enigma_Crypt($crypter, $a)
$c = _Enigma_Crypt($crypter, $b)
GUICtrlSetData($InputEncryptedText,$b)
GUICtrlSetState($InputEncryptedText,$GUI_SHOW)
MsgBox(0, "enTest", $b )
EndFuncFunc _DeCrypt()
[/autoit] [autoit][/autoit] [autoit]
Local $WD[5][2] = [[4,4],[5000,200],[101,201],[3110,202],[11,203]]
$RD = 65042$a = GUICtrlRead($InputText2Decrypt)
[/autoit] [autoit][/autoit] [autoit]
$crypter = _Enigma_Initialize($mykey, $WD, $RD)
$b = _Enigma_Crypt($crypter, $a)
$c = _Enigma_Crypt($crypter, $b)
GUICtrlSetData($InputDecryptedText,$b)
GUICtrlSetState($InputDecryptedText,$GUI_SHOW)
MsgBox(0, "deTest", $b )
EndFuncFunc _Delall()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($InputSuperKey,"")
GUICtrlSetData($InputText2Encrypt,"")
GUICtrlSetData($InputText2Decrypt,"")
GUICtrlSetState($LabelShowSuperKey,$GUI_HIDE)
GUICtrlSetState($InputShowOriginal,$GUI_HIDE)
GUICtrlSetState($InputShowCrypted,$GUI_HIDE)
GUICtrlSetState($InputEncryptedText,$GUI_HIDE)
GUICtrlSetState($InputDecryptedText,$GUI_HIDE)
EndFuncFunc _Exiter()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Enigma", "Enigma is now closed over Exit !" & @crlf & @crlf & "Thank you for using and have a Nice Day ")
Exit
EndFuncFunc Close()
[/autoit]
MsgBox(0, "Enigma", "Enigma is now closed over GUISetOnEvent($GUI_EVENT_CLOSE) und Exit !" & @crlf & @crlf & "Thank you for using and have a Nice Day ")
Exit
EndFuncDein Problem lag im übrigen wie schon erwähnt wurde daran, dass du die Inputboxen permanent neu erstellt hast anstatt deren Inhalt zu ändern.
-
Hab nochmal nen 10 Minuten Test mit 600 Abfragen gemacht:
Min: 68ms
Max: 17800ms
Avg: 260ms23 Abfragen haben mehr als 1000ms gebraucht
502 Abfragen haben weniger als 100ms gebrauchtWorans liegt weiss ich nicht, aber so wie es ausschaut passiert das eher selten.
-
Dauert bei mir etwa 100 ms.
-
Dachte ja meine ersten autoit Quellcodes sahen schlimm aus, aber das da oben ist schon sehr unübersichtlich.
Also mal einige Sachen die mir aufgefallen sind:
1. Die Variablen $a , $b , $c und $mykey verweisen nicht auf GUI Controls, sondern enthalten Daten, somit kannst du diese auch nicht mit guictrlsetdata reseten
2. In der Funktion _Decrypt werden die selben Methoden Benutzt wie in der Funktion _Crypt. Sollte in der enigma.au3 nicht auch eine _Enigma_DeCrypt() Funktion existieren?
3. Da du die enigma.au3 nicht hier angehängt hast kann man dein Script nicht ohne weiteres testen.
4. close() und _exiter() kann man auch zu einer Funktion zusammenfassenJetzt zu deinem Problem:
Ich vermute dir geht es um die Funktion _Delall() und du möchtest erreichen, dass das Programm wieder in den Ursprungszustand versetzt wird bevor irgendwelche Eingaben gemacht wurden?
In dem Fall solltest du evtl auch die Inputboxen löschen die du in den Funktionen crypt, decrypt, showorigin und showcry jedesmal erstellst, was eigentlich Unsinn ist, denn es wäre viel sinnvoller diese Inputboxen bereits bei Programmstart zu erstellen, mit @SW_HIDE unsichtbar zu machen, bei Bedarf mit guictrlsetdata deren Inhalt festzusetzten und danach mit @SW_SHOW sichtbar zumachen.Die Variablen $a , $b , $c und $mykey brauchst du überhaupt nicht reseten, denn das machen deine Funktionen beim erneuten Aufruf. Was du reseten musst ist der Inhalt der Inputboxen $text und $autext. Dies kannst du mit guictrlsetdata machen. Dabei würd ich mal den dritten Parameter weglassen, also nur:
[autoit]
[/autoit]
GUICtrlSetData($text, "" )
GUICtrlSetData($autext, "" )Wie schon erwähnt musst du das evtl auch mit den Inputboxen $Tar, $Dar, $tzz und $zzt machen. Dazu sollte aber gewährleistet sein, dass diese jederzeit existent sind. Deswegen wie gesagt bereits am Anfang ohne Inhalt versteckt erstellen und in den zughörigen Funktionen dann nur mit guictrlsetdata einen Wert setzen und einblenden.
Deine deletall Funktion könnte also so ausschaun:
[autoit]
[/autoit]
GUICtrlSetData($Supikey, "" )
GUICtrlSetData($text, "" )
GUICtrlSetData($autext, "" )
GUICtrlSetData($Tar, "" )
GUICtrlSetData($Dar, "" )
GUICtrlSetData($tzz, "" )
GUICtrlSetData($zzt, "" )
GUICtrlSetState($Tar,@SW_HIDE)
GUICtrlSetState($Dar,@SW_HIDE)
GUICtrlSetState($tzz,@SW_HIDE)
GUICtrlSetState($zzt,@SW_HIDE)Da die enigma.au3 aber fehlt und ich nicht weiss wo man diese herbekommt ist das nicht getestet. Wenn du mehr Hilfe brauchst solltest du diese hier anhängen oder eine Downloadquelle dafür angeben.
EDIT:
Nachdem ich mal die Funktionen der enigma.au3 umgangen hab und mir die GUI angesehen hab, vielleicht noch die Anmerkung, dass die Farbwahl doch sehr "gewöhnungsbedürftig" ist
Du solltest im übrigen das sleep() in deiner while Schleife höher setzen, da die Uhr nur sekundengenau ist macht es keinen Sinn das Element 100 mal in der Sekunde zu erneuern. Das schaut bescheiden aus, weil man die GUI refreshes erkennen kann. eine Pause von 1000 Milisekunden reicht völlig um die Uhr korrekt darzustellen. -
Jupp so ist es. Der Client benötigt natürlich die IP des Servers. Ausserdem sollte der Server an der IP seiner Netzwerkkarte lauschen anstatt an 127.0.0.1. Diesbezüglich ist es ratsam allen PC's im Netzwerk feste IP Adressen zuzuweisen, zumindestens der Server sollte über eine feste IP erreichbar sein. Eine DHCP Konfiguration könnte ansonsten dazu führen, dass der Server nicht mehr erreichbar ist, da er vom Router eine neue IP zugewiesen bekommen hat.
Solltest du auch übers Internet auf den Server zugreifen wollen so solltest du dir Dienste wie dyndns.org anschauen um jederzeit über eine feste URL aus dem Internet erreichbar zu sein. Dies entfällt wenn du vom Internetprovider eine feste IP bekommst. Ausserdem musst du den Server Port in deinem Router auf die lokale IP des Servers weiterleiten (Port forwarding), wenn dieser übers Internet erreichbar sein soll. Eventuell sind dann auch noch Firewall Freigaben im Router und am Server-PC notwendig.
-
Kannst ja mal den Link zur Webseite posten. Normalerweise sollte sowohl die FF.au3 als auch die IE.au3 mit Hilfe der Infos aus dem Quellcode in der Lage sein das Formular auszufüllen und abzusenden. Das mag zwar etwas mehr arbeit machen, dafür ist es aber sehr viel genauer und funktioniert auch noch wenn die Anordnung der Formulare verändert wird, das Borwserfenster eine andere Größe hat oder sonstiges am Design verändert wird. Deine Mouseclick Methode würde schon ins straucheln kommen wenn ein Bild im Seitenkopf plötzlich einige Pixel höher ist oder aus welchem Grund auch immer nicht korrekt geladen wird.
-
Zitat
WinActivate ("Mozilla")Willst du Daten in Webformularen ausfüllen? Dann benutz doch die dafür gedachte FF.au3.
Link: https://autoit.de/index.php?page=Board&boardID=32Wenn es stattdessen Thunderbird sein sollte, schau dir doch mal die Funktionen controlsend und controlclick an. Die Mausklickerei und dann auch noch copy&paste über die Zwischenablage ist weder schön noch besonders fehlerresistent.
-
Ahja, sorry hatte vorhin noch nicht einmal gesehen, dass der encoder diese Art der Daten Übergabe unterstützt.
Du könntest mal versuchen beim fileopen() den Binärmodus zu erzwingen. -
Ich versteh irgendiwe nicht was du da genau tust in deinen Funktionen. So wie ich das sehe versuchst du dem encoder per stdin die Daten zu übergeben, anstatt wie gedacht einfach beim Aufruf der exe.
Hier mal ein funktionierendes Script:
[autoit]
[/autoit][autoit][/autoit][autoit]
$decoder = @ScriptDir & "\speexdec-fb.exe"
$encoder = @ScriptDir & "\speexenc-fb.exe"
$inputfile = @ScriptDir & "\rec.0.spx"
$outputfile = @ScriptDir & "\output.wav"decodeandreverse()
[/autoit][autoit][/autoit][autoit]Func decodeandreverse() ; wandelt spx Datei zu wav und erstellt aus Ergenbis erneut eine spx Datei
[/autoit][autoit][/autoit][autoit]
decode()
$inputfile = $outputfile
$outputfile = @ScriptDir & "\output.spx"
encode()
EndFuncFunc decode()
[/autoit][autoit][/autoit][autoit]
RunWait('"' & $decoder & '" "' & $inputfile & '" "' & $outputfile & '"')
EndFuncFunc encode()
[/autoit][autoit][/autoit][autoit][/autoit]
RunWait('"' & $encoder & '" "' & $inputfile & '" "' & $outputfile & '"')
EndFuncUnd hier die korrekte Syntax zur Anwendung des Decoders:
Spoiler anzeigen
Code
Alles anzeigenNOTICE: This is a modified version of speexdec which doesn't use the ogg container format, but a more simple format used by the AVM Fritz!Box TAM. It's still incomplete and might not work for files created by the Fritz!Box. Usage: speexdec-fb [options] input_file.spx [output_file] Decodes a Speex file and produce a WAV file or raw file input_file can be: filename.spx regular Speex file - stdin output_file can be: filename.wav Wav file filename.* Raw PCM file (any extension other that .wav) - stdout (nothing) Will be played to soundcard Options: --enh Enable perceptual enhancement (default) --no-enh Disable perceptual enhancement --force-nb Force decoding in narrowband --force-wb Force decoding in wideband --force-uwb Force decoding in ultra-wideband --mono Force decoding in mono --stereo Force decoding in stereo --rate n Force decoding at sampling rate n Hz --packet-loss n Simulate n % random packet loss -V Verbose mode (show bit-rate) -h, --help This help -v, --version Version information --pf Deprecated, use --enh instead --no-pf Deprecated, use --no-enh instead More information is available from the Speex site: http://www.speex.org Please report bugs to the mailing list `speex-dev@xiph.org'.
-
[autoit]
[/autoit][autoit][/autoit][autoit]
$a = Random(0,9,1)
$b = Random(0,9,1)
$c = Random(0,9,1)
$d = Random(0,9,1)$string = $a & $b & $c & $d
[/autoit]
MsgBox(0,"Code", $string) -
Gehts dir darum die Prozess Priorität zu verändern?
Dann schau dir mal die Funktionen an:
[autoit]
[/autoit]
_ProcessGetPriority()
ProcessSetPriority()Sorry wenn ich falsch liegen sollte, ich kann kein C++.