Windows Scripting Host erscheint mir dafür geeigneter. Bei Microsoft gibt es zahlreiche Beispiele zum Downloaden. Gruss Jan
siehe http://www.microsoft.com/technet/script…c.mspx?mfr=true natürlich kannst WSH auch mit AutoitX benutzen
Windows Scripting Host erscheint mir dafür geeigneter. Bei Microsoft gibt es zahlreiche Beispiele zum Downloaden. Gruss Jan
siehe http://www.microsoft.com/technet/script…c.mspx?mfr=true natürlich kannst WSH auch mit AutoitX benutzen
Hi,
ich kann Dateien (MP3) binär öffnen und lesen. Allerdings kann ich nicht die letzten 128 Bytes (1Zeichen = 8 Bit= 1 Byte) korrekt auslesen, noch sie neu beschreiben wie das Demoskript aufzeigt. Tag ID V1 steckt in diesem Abschnitt. Mit StringMid, StringLeft ist dem Ganzen anscheinend nicht beizukommen. Wer weiss eine Lösung? Danke Jan
#include <File.au3>
Opt("TrayIconDebug", 1)
;Preparation
$sSciTEPath = RegRead('HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command','')
$sMP3Search = FileFindFirstFile(StringReplace(@ScriptDir & '\*.mp3', '\\', '\'))
$sMP3 = FileFindNextFile($sMP3Search)
If $sMP3Search = -1 Then
$sMP3Source = $sFileOpenDialog('Search for a .mp3 File','','MP3(*.mp3)', 1)
$aMP3Path = StringSplit($sMP3Source, '\')
$sMP3 = $aMP3Path[$aMP3Path[0]]
FileCopy ($sMP3Source, @ScriptDir & $sMP3)
EndIf
MsgBox(4096,'MP3 found:','Take this one for reading:' & @CRLF & $sMP3, 1)
;start of the experiment
$iMP3 = FileGetSize ($sMP3) ; for each Chr one Byte FileGetSize = whole number of Chr in file
$hMP3 = FileOpen ($sMP3, 16) ; read in binary mode. This works
$hControl = FileOpen ('control.txt', 2)
$h1Write128 = FileOpen ('1Write128.txt', 2)
$h2Write128 = FileOpen ('2Write128.txt', 22)
$h3Write128 = FileOpen ('3Write128.txt', 22)
$h4Write128 = FileOpen ('4Write128.txt', 2)
$sSec128 = ''
$sAllChrInMP3 = FileRead ($hMP3)
[/autoit][autoit][/autoit][autoit]FileWrite ($hControl, $sAllChrInMP3) ; this is for your control. It works
MsgBox(4096, 'Info0', 'Controlfile finished',1)
;First try with StringLeft
FileWrite ($h1Write128, StringRight ($sAllChrInMP3, 128)) ; try to get last 128 Chr - doesn't work
MsgBox(4096, 'Info', 'First try finished',1)
#cs
;Second try to read each Chr
For $i = 1 to $iMP3
$sChr = FileRead($hMP3, 1)
If $i > $iMP3 -128 then $sSec128 = $sSec128 & $sChr
Next
FileWrite ($h2Write128, $sSec128)
MsgBox(4096, 'Info2', 'Second try finished',1)
#ce
FileWrite ($h1Write128, StringRight ($sAllChrInMP3, 128)) ; try to get last 128 Chr - doesn't work
MsgBox(4096, 'Info', 'Second try finished',1)
;Third try with StringMid
FileWrite ($h2Write128, StringMid($sAllChrInMP3, StringLen($sAllChrInMP3) - 127, 128))
MsgBox(4096, 'Info3', 'Third try finished',1)
;Fourth try
$CountLines = _FileCountLines($sMP3)
$sLastLine= FileReadLine($hMP3, $CountLines)
FileWrite ($h4Write128, $sLastLine)
$sAllChrInMP3 = StringRight(FileRead ($hMP3), 128)
FileWrite ($h4Write128, $sAllChrInMP3)
MsgBox(4096, 'Info3', 'Fourth try finished',1)
;Show the results
FileClose($hControl)
FileClose($h1Write128)
FileClose($h2Write128)
FileClose($h3Write128)
FileClose($h4Write128)
$sAllF =' "' & @ScriptDir & '\1Write128.txt" "' & @ScriptDir & '\2Write128.txt" "' & @ScriptDir & '\3Write128.txt" "' & @ScriptDir & '\4Write128.txt"';@ScriptDir & '\' & $sMP3 & '" "' & @ScriptDir & '\control.txt" "' &
[/autoit][autoit][/autoit][autoit]Run ( $sSciTEPath & $sAllF, '')
[/autoit]Hi,
freut mich Dir geholfen zu haben, Der Reg-Schlüssel gilt ab NT 4 aufwärts. Einen Rückzieher muss ich bei ipconfig/all machen, der verrät nämlich nicht Organisation. Gruss Jan
Ich nehme mir die UDF von Lazycat vor - siehe Link oben es kann beide ID-Versionen lesen aber nicht schreiben. Danke allen & melde mich später . Jan
P.S. Hab gerade Beispiel Datei von Lazycat getestet. Sehr ermutigend ist das Ganze nicht. zu 70 % bekommen ich bei Interpret und Titel Hexadezimalzeichen heraus. Nun muss ich erst überprüfen, ob die MP3 richtig getaggt waren (darum auch meine Vorsicht beim Lesen und Schreiben). Das dauert ne Weile.
Weiterer Link gefunden http://www.aspheute.com/artikel/20030430.htm
Hi,
das ist nicht ganz so einfach. Du musst genau die Stelle finden lesen und bearbeiten und meine Frage ist, ob die bei allen an der gleichen Stelle liegen bzw. ob sie alle trotz ID Tag V1 und ID Tag V2 den gleichen Prefix /Vorspann haben, denn die Eingaben sind in "Hieroglyphen" eingebettet.
Das Lesen und schreiben einfacher Textdateien sind null problemo für mich : Gruss Jan
hi Bernd,
danke für den Tip, der etwas aber nicht ganz weiter geholfen hat. Ich hab noch http://dotnet-snippets.de/dns/id3v1-mp3-…ben-SID426.aspx gefunden. Textdateien öffnen und lesen kein Problem. Aber Offset - sind das nicht reservierte Stellen im Speicherbereich? Gruss Jan
P.S. Gerade noch das hier http://www.autoitscript.com/fileman/users/Lazycat/udfs.html ein UDF zum Lesen von MP3 Tags allerdinsg ohne Angabe der Version/en
Hi,
Die Antwort ist relativ einfach und in der Registry zu finden:
$var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization")
[/autoit][autoit][/autoit][autoit]MsgBox(4096, "test", "Der PC gehört folgender Organisation an :" & $var)
[/autoit]Ein Makro hierfür gibt es nicht. Alternativ Kann man auch den ipconfig Befehl auswerten
Gruss Jan
Hi.
ich möchte mp3 Tags mit AutoIt auf Groß- und Kleinschreibung usw. überprüfen. Die MP3 lassen sich auch mit einem Texteditor öffnen & einzelne Angaben auslesen. Gibt es irgendwo genauere Angaben wie dies erfolgt? Und inwiefern es Unterschiede zwischen MP3 Tag V.1 und MP3Tag Version 2 gibt? Inwieweit man die Versionen im Texteditor unterscheiden kann usw.? Gibt es schon au3.Skripte in dieser Sache? Für weiterführende Links und kurze Hinweise bin ich dankbar Danke Jan :comp1:
Hi Bugfix,
chapeau, chapeau oder Respekt, Respekt! Es funzt. Hab vielen Dank. Funktion dürfte vom allgemeinen Interesse sein. Herzlichst Jan
Hallo Bugfix,
habe Dein Skript getest. Das Verschieben von Items in einer Listview gelingt Dir wie mir. Nur das Markieren (Blau hinterlegen) nicht. Irgendwas flackert bei Dir auf und ist augenblicklich weg.
Noch einmal. Item 2 und Item5 sollen um 1 aufrutschen und die blaue Markierung auch nach der Verschiebung beibehalten. Item2 müsste auf dem neuen Platz1 und Item5 auf dem neuen Platz 4 noch immer blau markiert sein. Gruss Jan
Hi,
Dein Script muss ich noch studieren, da ich dieses Skript mittlerweile verfasste, dass das Problem gut beleuchtet d.h. Der Inhalt einer listviw wandert nach oben oder unten. Es gelingt mir aber nicht, die Markierung mitwandern zu lassen. Weder so noch so .Herzlichst Jan
S k r i p t ü b e r a r b e i t e t
===================
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <array.au3>
Opt ('MustDeclareVars', 1)
Dim $listview, $Btn_MoveUp, $Btn_MoveDown, $Btn_Exit, $msg, $Status, $GUI, $i, $j
Global $avRowCache[1][2], $sHighlightNew =''; Cache vor Rowtxt
$GUI = GUICreate("Move Up/Down and hightlight it", 392, 322)
$listview = GUICtrlCreateListView("col1|col2|col3", 40, 30, 310, 149, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))
GUICtrlCreateListViewItem("line1|data1|more1", $listview)
GUICtrlCreateListViewItem("line2|data2|more2", $listview)
GUICtrlCreateListViewItem("line3|data3|more3", $listview)
GUICtrlCreateListViewItem("line4|data4|more4", $listview)
GUICtrlCreateListViewItem("line5|data5|more5", $listview)
$Btn_MoveUp = GUICtrlCreateButton("Move Up", 75, 200, 90, 40)
$Btn_MoveDown = GUICtrlCreateButton("Move Down", 200, 200, 90, 40)
$Btn_Exit = GUICtrlCreateButton("Exit", 300, 260, 70, 30)
$Status = GUICtrlCreateLabel("", 0, 302, 392, 20, BitOR($SS_SUNKEN, $SS_CENTER))
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
ExitLoop
Case $msg = $Btn_MoveUp
_MoveUpDown($listview, 0)
Case $msg = $Btn_MoveDown
_MoveUpDown($listview, 1)
EndSelect
WEnd
Exit
Func _MoveUpDown($sLView, $iUpDown)
Dim $avTxt1, $avTxt2, $i, $j, $sHighlightNew = '', $iErr = 0, $avSelectRows, $iNextIndex = 0, $avHighlightNew
;$iUpDown = 0 means up, $iUpDown = 1 means down
If $iUpDown < 0 then $iErr = $iErr + 1
If $iUpDown < 1 then $iErr = $iErr + 2
$avSelectRows = _GUICtrlListViewGetSelectedIndices($listview, 1)
For $i = 1 to $avSelectRows[0]
If $iUpDown == 0 AND $avSelectRows[$i] == 0 then $iErr = $iErr +4 ; has already the lowest pos.
If $iUpDown == 1 AND $avSelectRows[$i] ==_GUICtrlListViewGetItemCount ($listview) then $iErr = $iErr +8 ; has already the hightest pos.
If $iUpDown == 0 Then $iNextIndex = Number($avSelectRows[$i])-1
If $iUpDown == 1 Then $iNextIndex = Number($avSelectRows[$i])+1
$avTxt1 = StringSplit(_GUICtrlListViewGetItemText($listview, $avSelectRows[$i]), '|')
$avTxt2 = StringSplit(_GUICtrlListViewGetItemText($listview, $iNextIndex), '|')
For $j = 0 to $avTxt1[0]-1 ;cause cero-based, swap contents of both rows
_GUICtrlListViewSetItemText ($listview, $avSelectRows[$i], $j, $avTxt2[$j +1])
_GUICtrlListViewSetItemText ($listview, $iNextIndex, $j, $avTxt1[$j +1])
$sHighlightNew = $sHighlightNew & '|' & $iNextIndex
Next
Next
$avHighlightNew = StringSplit(StringTrimLeft ($sHighlightNew,1),'|')
For $i = 1 to $avHighlightNew[0]
_GUICtrlListViewSetItemSelState ($listview, $avHighlightNew[$i])
Next
SetError ($iErr, 0, $iErr)
EndFunc
Mein Problem ist zwei Vorgänge gleichzeitig zu skripten. In einer Listview sollen ein oder mehrere Elemente nach oben oder nach unten um 1 verschoben werden und die Markierung beibehalten werden. Element3, Element6 sollen bei 1 nach oben an 2. und 5.Stelle und gleichzeitig die Markierung (Unterlegeung mit Blau) beibehalten. Verschieben klappt, aber die blaue Markierung bleibt an der alten Position "kleben". Hab leider nichts im Archiv gefunden und mein Skript ist so lang, dass das eigentliche Problem darin untergeht und die meisten wegen Länge wohl abschreckt, aber vielleicht gab es dieses Thema schon irgendwo einmal. Gruss Jan
Okay, hat sich erledigt. Auf dem PC von meinem Bruder läuft es nach kleineren Korrekturen im Skript, die Scite anmeckerte. Auf meiner ollen Möhre (Pentium I - 166 MHz - 128 MB RAM)) hatte Scite nichts angezeigt Jan
Ganz kurz: Ich habe Probleme einen Eintrag in einer zweiten Listview ($SecListView) zu erstellen. In SCITE gibt es keine Fehlerhinweise und eine erste Listview ($listview) funktioniert tadellos.Die Funktion _GUICtrlListViewInsertItem
fügt nur in die erste, nicht aber in die zweite Spalte etwas ein. Probierte verschiedenes ohne Erfolg oder einen Hinweis auf den Fehler. Der Rückgabewert meldet keinen Fehler.
Fehler reprodzieren. Klicke auf dem 3.Tab das erste oder zweite Element des Treeviews an. Darauf erscheinen rechts Optionsfelder
(Radiobuttons). Klicke eines davon an und gehe unten rechts im Tab auf den rechten quadratischen Button. Ein Arraydisplay erscheint
mit der Beschriftung des angeklickten Radiobutton. Schliesse es und gehe auf den 4.Tab in dieser Listview sollten in der ersten
Spalte die Reihenfolge und in der zweiten Spalte die Beschriftung des angeklickten Radiobuttons erscheinen. In der zweiten
Spalte erscheint jedoch nichts!!
Diese Skriptzeilen sind wichtig für Dich:
224-228 Erstellung des $SecListView
581-585 Aufruf von _GUICtrlListViewInsertItem, um einen Eintrag in $SecListView zu machen
Die anderen Zeilen sind nicht relevant, sind aber für den Kontext vielleicht erforderlich. Probiert es mit
dem Einfügen eines reinen Textes in die $SecListView. Es ist das gleiche Problem!
Hi BugFix,
[autoit]$iVisibleHeight = $oIE.document.body.clientHeight
$oIE.document.parentWindow.scrollBy(0,$iVisibleHeight)
ist die Lösung. Trotzdem vielen Dank - zumal es nur wenige sich anscheinend an IEFormulare wagen, obwohl es gar nicht mal so schwer ist. Jan ![]()
Hi, ich möchte den Internet Explorer vertikal durch Objektsteuerung abwärts scrollen und möchte den Befehl
[autoit]Send('{PGDOWN}')
[/autoit]vermeiden. Hab schon die UDFs IE.au3 und Inet.au3 durchstöbert und nichts gefunden. _IEAction(ByRef $o_object, $s_action) kennt leider auch keine solche Aktion. Hat jemand irgendeine Idee.
Benötige nur Wink mit dem Zaunpfahl. d.h. Name der Funktion oder Beispielsskript. Danke Jan
Hi,
zu den wenigen Eigenheiten von AutoIt gehört auch die richtige Reihenfolge bei Deklarationen.
Deklarationen von Globalvariablen in der Function Main() gheören dort heraus und am Anfang des Skriptes gestellt. FileInstall z.B. reagiert ähnlich sensibel. Gruss Jan
Hallo muh-kuh, beimir funktioniert das Auswählen im Hocladeformular von Wikiipedia
$oSelect = _IEFormElementGetObjByName($oForm, 'Avatar')
_IEFormElementOptionSelect($oSelect, 'vollständiger Textlaut des Eintrages', 1, 'byText')
Bei dieser Funktion hast Du auch die Option den Eintrag statt Text auch mit seiner Position anzuwählen - siehe Hilfedatei. Gruss Jan
P r o b l e m G E L Ö S T !!!!!!!!!
Mit _IEAction($o_object, "click") statt _IEFormSubmit($oFormFW, 1) fubnktioniert es - siehe Hilfedatei. Johannes
Hi Laetterman, anstelle eines Schattens kannst Du auch zwei Balken rechts und unten stellen, die nicht unbedingt transparent sein müssen - ein Grau reicht auch aus. Machmal kommt es mitunterzu unerwünschten Nebeneffekten , besonders wenn die Cover auf Registerkarten erscheinen (insbesondere auf den darunterliegenden Registerkarten).Herzlichst Jan
P.S. Sin ddie CD-Cover in einer festen Grösse (HöhexBreite) oder sind auch DVD-Covers darunter?