Soweit ich weiß wird das automatisch geregelt. Es gibt ja die Möglichkeit, z.B. auf dem Desktop die Symbole größer zu machen (STRG+Mausrad). Dabei wird dann automatisch beim heranzoomen das größere Icon genutzt. Es kommt also auf die Einstellung des Nutzers an.
Beiträge von Kanashius
-
-
Achja, was ich noch sagen wollte:
Großes Lob an dich. Es war alles wichtige im Post und du hast so viel wie möglich schon selbst herausgefunden. Dadurch war es recht einfach, das ganze umzusetzen.
(Und es ging auch sehr schnell ~10-20 min.) -
Ich hab das ganze mal so gelöst. Bei dem verwendeten Beispielbild funktioniert es. Du solltest es einmal testen, ob es auch wirklich so funktioniert, wie du es willst.
Was die Verwendung des IE angeht: Ich hab ihn dennoch verwendet. Das Problem war im Script. Der IE wurde für jedes Bild neu geöffnet, statt einmal zu öffnen und dann nurnoch zu navigieren (neue Seite aufrufen). Das neustarten des IEs dauert relativ langeSpoiler anzeigen
[autoit]#include "IE.au3"
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <String.au3>Opt('MustDeclareVars', 0)
[/autoit] [autoit][/autoit] [autoit]Global $folderitem, $okbutton, $cancelbutton, $test, $msg, $empty, $status, $statuscheck
[/autoit] [autoit][/autoit] [autoit]
Global $sFilename2 = ''
Global $sFilename = @UserProfileDir
Global $sFilename2 = "Pfad Exiftool.exe"
Global $sCurFilename, $hFile, $folder, $Filelist, $Filelist2, $progressbar, $i, $rows, $exiftool, $hFile2, $sCurFilename2, $sTmpFile, $statusbutton, $progressbar2
Global $file, $oIE, $oLinks, $keywords, $oLinks2, $bildNAME, $oLinks3, $bildID, $batch, $FertigeBilder, $stopvar, $FertigeBilder2, $rows2, $shutter_num, $shutter_num2, $batch2, $keywords2, $bildNAME2_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]GuiCreate("Shutterstock EXIF Übernahme", 400, 290)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Shutterstock Metadaten übernahme für .jpg und .eps Bilder.", 10, 15, 380, 15)
GUICtrlCreateLabel("Geben Sie bitte nun den Ordner zu Ihren Shutterstock Bildern an.", 10, 45, 380, 12)
GUICtrlCreateLabel('(Bilder müssen im Format "shutterstock_XXX.jpg/.eps" beschriftet sein.)', 10, 60, 380, 15)
$hFile = GUICtrlCreateInput($sFilename, 10, 85, 250, 20, -1, $WS_EX_STATICEDGE)
$folderitem = GUICtrlCreateButton("Bilder Ordner...", 270, 85, 120, 20)
;$statusbutton = GuiCtrlCreateCheckbox("inkl. Unterordner", 280, 105, 120, 25)
GuiCtrlSetState(-1, $GUI_UNCHECKED)
GUICtrlCreateLabel("Geben Sie nun den Pfad zur Exiftool.exe bekannt.", 10, 130, 380, 15)
;$hFile2 = GUICtrlCreateInput($sFilename2, 10, 140, 250, 20, -1, $WS_EX_STATICEDGE)
$exiftool = GUICtrlCreateButton($sFilename2, 10, 145, 250, 20)
$okbutton = GUICtrlCreateButton("Batch starten!", 10, 175, 90, 20)
$test = GUICtrlCreateButton("Ausgewählte Bilder anzeigen", 105, 175, 155, 20)
GUICtrlCreateLabel(".Jpg", 10, 206, 30, 20)
$progressbar = GuiCtrlCreateProgress(50, 206, 340, 20)
GUICtrlCreateLabel(".Eps", 10, 230, 30, 20)
$progressbar2 = GuiCtrlCreateProgress(50, 230, 340, 20)
$cancelbutton = GUICtrlCreateButton("Abbrechen", 150, 260, 100, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()
; Code below will check if the file is dropped (or selected)$sCurFilename = GUICtrlRead($hFile)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $sCurFilename <> $sFilename Then
$sFilename = $sCurFilename
EndIf
$sCurFilename2 = GUICtrlRead($exiftool)
If $sCurFilename2 <> $sFilename2 Then
$sFilename2 = $sCurFilename2
EndIf
$statuscheck = GUICtrlRead($statusbutton)
IF $statuscheck = $GUI_CHECKED Then
$status = "/s"
Else
$status = " "
EndIfSelect
[/autoit] [autoit][/autoit] [autoit]
Case $msg = $GUI_EVENT_CLOSE
_Cancel()
ExitCase $msg = $cancelbutton
[/autoit] [autoit][/autoit] [autoit]
_Cancel()Case $msg = $folderitem
[/autoit] [autoit][/autoit] [autoit]
$folder = FileSelectFolder("Ordner wählen...", "")
If @error Then ContinueLoop
GUICtrlSetData($hFile, $folder); GUI will be updated at next iterationCase $msg = $exiftool
[/autoit] [autoit][/autoit] [autoit]
$sTmpFile = FileOpenDialog("Exiftool.exe auswählen:", "", "Exiftool.exe (exiftool.exe;)")
If @error Then ContinueLoop
GUICtrlSetData($exiftool, $sTmpFile); GUI will be updated at next iterationCase $msg = $test
[/autoit] [autoit][/autoit] [autoit]
$Filelist = _FileListToArrayEx($sFilename, "shutterstock_*.jpg; shutterstock_*.eps")
_ArrayDelete($Filelist, 0)
_ArrayDisplay($Filelist, 'Bilddaten')Case $msg = $okbutton
[/autoit] [autoit][/autoit] [autoit]
;$Filelist = _FileListToArray($sFilename, "shutterstock_*.jpg")
;$rows = UBound($Filelist)
;$Filelist2 = _FileListToArray($sFilename, "shutterstock_*.eps")
;$rows2 = UBound($Filelist2)
If $sFilename2 = "Pfad Exiftool.exe" Then
MsgBox(64, "Fehler!", "Bitte geben Sie den Pfad zu Ihrer exiftool.exe bekannt.")
;ElseIf $rows <= 0 Then
; MsgBox(64, "Fehler!", "Keine passenden Bilder im Ordner vorhanden.")
Else
; If $rows2 <= 0 Then
; MsgBox(64, "Fehler!", "Keine passenden Bilder im Ordner vorhanden.")
; Else
_startBatch()
; EndIf
EndIf
GUICtrlSetData($progressbar, 0)
GUICtrlSetData($progressbar2, 0)EndSelect
[/autoit] [autoit][/autoit] [autoit]
WEnd
EndFuncFunc _startBatch()
[/autoit] [autoit][/autoit] [autoit]
Dim $descript$Filelist = _FileListToArrayEx($sFilename, "shutterstock_*.jpg")
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($Filelist, 0)
_ArrayTrim($Filelist, 13, 0)
_ArrayTrim($Filelist, 4, 1)$Filelist2 = _FileListToArrayEx($sFilename, "shutterstock_*.eps")
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($Filelist2, 0)
_ArrayTrim($Filelist2, 13, 0)
_ArrayTrim($Filelist2, 4, 1)$rows = UBound($Filelist)
[/autoit] [autoit][/autoit] [autoit]
$FertigeBilder = 0
$rows2 = UBound($Filelist2)
$FertigeBilder2 = 0$oIE = _IECreate("about:blank",0,0,1,0)
[/autoit] [autoit][/autoit] [autoit]
If $rows > 0 Then
For $shutter_num In $Filelist
$msg = GUIGetMsg()
If $msg = $cancelbutton Then ExitLoop
$FertigeBilder += 1
GUICtrlSetData($progressbar,Round(($FertigeBilder / $rows) * 100, 2) )$file = "http://www.shutterstock.com/pic-" & $shutter_num & ".html"
[/autoit] [autoit][/autoit] [autoit]
_IENavigate($oIE,$file)
#cs
$oLinks = _IETagNameGetCollection ($oIE, "a")
$keywords = ""
For $oLink In $oLinks
If $oLink.className <> "0" Then
If ($oLink.className = "middlelink") Then
$keywords = $keywords & $oLink.getAttribute("x_shutterstock_keyword") & ', '
EndIf
EndIf
Next
#ce
;von hier
$keywords = ""
$html=_IEDocReadHTML($oIE)
$ar=_StringBetween($html,'<div id="image_keyword_container" class="section_content secondary_links">','</div>')
$ar2=_StringBetween($ar[0],'>','<')
for $i=0 to UBound($ar2)-1 step 2
$keywords=$keywords&$ar2[$i]&', '
next
;bis hier
$oLinks2 = _IEGetObjById ($oIE, "display-pic-description")
$bildNAME = _IEPropertyGet($oLinks2, "innertext")_IEQuit ($oIE)
[/autoit] [autoit][/autoit] [autoit]$batch = $sFilename2 & ' -m -L -overwrite_original -keywords="' & $keywords & '" -title="' & $shutter_num & '" -description="' & $bildNAME & '" "' & $sFilename & '\shutterstock_' & $shutter_num & '.jpg"'
[/autoit] [autoit][/autoit] [autoit]
ClipPut($batch)
RunWait(@ComSpec & " /c " & $batch & "")
Sleep(50)Next
[/autoit] [autoit][/autoit] [autoit]
EndIfIf $rows2 > 0 Then
[/autoit] [autoit][/autoit] [autoit]
For $shutter_num2 In $Filelist2
$msg = GUIGetMsg()
If $msg = $cancelbutton Then ExitLoop
$FertigeBilder2 += 1
GUICtrlSetData($progressbar2,Round(($FertigeBilder2 / $rows2) * 100, 2) )$file = "http://www.shutterstock.com/pic-" & $shutter_num2 & ".html"
[/autoit] [autoit][/autoit] [autoit]$keywords2 = ""
[/autoit] [autoit][/autoit] [autoit]
$html=_IEDocReadHTML($oIE)
$ar=_StringBetween($html,'<div id="image_keyword_container" class="section_content secondary_links">','</div>')
$ar2=_StringBetween($ar[0],'>','<')
for $i=0 to UBound($ar2)-1 step 2
$keywords2=$keywords2&$ar2[$i]&', '
next
_IENavigate($oIE,$file)$oLinks2 = _IEGetObjById ($oIE, "display-pic-description")
[/autoit] [autoit][/autoit] [autoit]
$bildNAME2 = _IEPropertyGet($oLinks2, "innertext")_IEQuit ($oIE)
[/autoit] [autoit][/autoit] [autoit]$batch2 = $sFilename2 & ' -m -L -overwrite_original -description="' & $keywords2 & '" -title="' & $shutter_num2 & '-' & $bildNAME2 &'" "' & $sFilename & '\shutterstock_' & $shutter_num2 & '.eps"'
[/autoit] [autoit][/autoit] [autoit]
RunWait(@ComSpec & " /c " & $batch2 & "") ; @SW_HIDE
Sleep(50)Next
[/autoit] [autoit][/autoit] [autoit]
EndIfMsgBox(64, "Vorgang Beendet", "Die Bilder wurden erfolgreich bearbeitet.")
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _Cancel()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _FileListToArrayEx($s_path, $s_mask = "*.*", $i_flag = 0, $s_exclude = -1, $f_recurse = True, $f_full_path = False)
[/autoit] [autoit][/autoit] [autoit]If FileExists($s_path) = 0 Then Return SetError(1, 1, 0)
[/autoit] [autoit][/autoit] [autoit]; Strip trailing backslash, and add one after to make sure there's only one
[/autoit] [autoit][/autoit] [autoit]
$s_path = StringRegExpReplace($s_path, "[\\/]+\z", "") & ""; Set all defaults
[/autoit] [autoit][/autoit] [autoit]
If $s_mask = -1 Or $s_mask = Default Then $s_mask = "*.*"
If $i_flag = -1 Or $i_flag = Default Then $i_flag = 0
If $s_exclude = -1 Or $s_exclude = Default Then $s_exclude = ""; Look for bad chars
[/autoit] [autoit][/autoit] [autoit]
If StringRegExp($s_mask, "[/:><\|]") Or StringRegExp($s_exclude, "[/:><\|]") Then
Return SetError(2, 2, 0)
EndIf; Strip leading spaces between semi colon delimiter
[/autoit] [autoit][/autoit] [autoit]
$s_mask = StringRegExpReplace($s_mask, "\s*;\s*", ";")
If $s_exclude Then $s_exclude = StringRegExpReplace($s_exclude, "\s*;\s*", ";"); Confirm mask has something in it
[/autoit] [autoit][/autoit] [autoit]
If StringStripWS($s_mask, = "" Then Return SetError(2, 2, 0)
If $i_flag < 0 Or $i_flag > 2 Then Return SetError(3, 3, 0); Validate and create path + mask params
[/autoit] [autoit][/autoit] [autoit]
Local $a_split = StringSplit($s_mask, ";"), $s_hold_split = ""
For $i = 1 To $a_split[0]
If StringStripWS($a_split[$i], = "" Then ContinueLoop
If StringRegExp($a_split[$i], "^\..*?\..*?\z") Then
$a_split[$i] &= "*" & $a_split[$i]
EndIf
$s_hold_split &= '"' & $s_path & $a_split[$i] & '" '
Next
$s_hold_split = StringTrimRight($s_hold_split, 1)
If $s_hold_split = "" Then $s_hold_split = '"' & $s_path & '*.*"'Local $i_pid, $s_stdout, $s_hold_out, $s_dir_file_only = "", $s_recurse = "/s "
[/autoit] [autoit][/autoit] [autoit]
If $i_flag = 1 Then $s_dir_file_only = ":-d"
If $i_flag = 2 Then $s_dir_file_only = ":D"
If Not $f_recurse Then $s_recurse = ""; $i_pid = Run(@ComSpec & " /c dir /b " & $s_recurse & "/a" & $s_dir_file_only & " " & $s_hold_split, "", @SW_HIDE, 4 + 2) - Original
[/autoit] [autoit][/autoit] [autoit]$i_pid = Run(@ComSpec & " /c dir /b " & $status & "/a" & $s_dir_file_only & " " & $s_hold_split, "", @SW_HIDE, 4 + 2)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$s_stdout = StdoutRead($i_pid)
If @error Then ExitLoop
$s_hold_out &= $s_stdout
WEnd$s_hold_out = StringRegExpReplace($s_hold_out, "\v+\z", "")
[/autoit] [autoit][/autoit] [autoit]
If Not $s_hold_out Then Return SetError(4, 4, 0); Parse data and find matches based on flags
[/autoit] [autoit][/autoit] [autoit]
Local $a_fsplit = StringSplit(StringStripCR($s_hold_out), @LF), $s_hold_ret
$s_hold_out = ""If $s_exclude Then $s_exclude = StringReplace(StringReplace($s_exclude, "*", ".*?"), ";", "|")
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $a_fsplit[0]
[/autoit] [autoit][/autoit] [autoit]
If $s_exclude And StringRegExp(StringRegExpReplace( _
$a_fsplit[$i], "(.*?[\\/]+)*(.*?\z)", "\2"), "(?i)\Q" & $s_exclude & "\E") Then ContinueLoop
If StringRegExp($a_fsplit[$i], "^\w:[\\/]+") = 0 Then $a_fsplit[$i] = $s_path & $a_fsplit[$i]
If $f_full_path Then
$s_hold_ret &= $a_fsplit[$i] & Chr(1)
Else
$s_hold_ret &= StringRegExpReplace($a_fsplit[$i], "((?:.*?[\\/]+)*)(.*?\z)", "$2") & Chr(1)
EndIf
Next$s_hold_ret = StringTrimRight($s_hold_ret, 1)
[/autoit] [autoit][/autoit] [autoit]
If $s_hold_ret = "" Then Return SetError(5, 5, 0)Return StringSplit($s_hold_ret, Chr(1))
[/autoit]
EndFuncDas ist der Befehl, der an das externe Tool gesendet wird (für das Beispielbild):
Spoiler anzeigen
D:\Desktop\dateien\Patrick\autoit\autoit forum\exiftool\exiftool.exe -m -L -overwrite_original -keywords="becken, becker, lache, pfütze, gewässer, gewässer, bild, foto, schutzbrille, schwimmbrille, amüsement, lustig, lustiger, spaß, spaßig, vergnügen, vergnügung, teenager, schwimmen, sommer, unterwasser, wasser, selbstvertrauen, vertrauen, vertraulichkeit, zutrauen, zuversicht, beenden, hautnah, nah, sackgasse, schließen, zumachen, azul, blau, blauem, blaues, bläuen, depressiv, niedergeschlagen, schwermutig, schwermütig, traurig, traurige, kindheit, anpeilen, daheim, eigenheim, elternhaus, hause, heim, heimat, heimwärts, nachhause, nest, ruhestätte, wohnung, zielen, zuhause, mädchen, bild, erscheinungsbild, image, speicherabbild, lichtreflexe, lichtreflexe, reflektionen, reflektionen, reflexionen, zeit zum spielen, " -title="178731845" -description="0" "D:\Desktop\dateien\Patrick\autoit\autoit forum\shutterstock-au3\shutterstock_178731845.jpg"
Viel Freude (oder Zeitersparnis) mit dem Fix
Die Exe ist im Anhang
-
Du hast den unterstrich vergessen...
[autoit]
NichtYouTube_GetTitle($hVideo)
[/autoit]Sondern:
[autoit]_YouTube_GetTitle($hVideo)
[/autoit] -
In der neusten Version 2.3 werden nun alle benötigten dlls mitgeliefert (7zip und Sqlite). Somit muss nichts mehr vorinstalliert sein.
Desweiteren ist es nun möglich, den Pfad der Epubs unabhängig vom Ordner des Programmes festzulegen. (Lokale und Globale Pfade möglich).Es wurden ein paar Fehler beim Importieren, etc. behoben.
-
Entpacke die dlls in den Ordner, wo auch die Programme sind. Dann müsste der 7-zip Error behoben sein. (Ich habe 7zip installiert, weshalb der die Dlls nicht in dem Ordner braucht).
Was den Array-Fehler beim Reader betrifft wäre ich dir dankbar, wenn du mir die Zeile geben könntest (ohne Includes). Dafür einfach mit Autoit den Quellcode ausführen. (Ich denke, es hat etwas mit dem TTS zu tun, dass er da den Fehler erzeugt, bin mir aber nicht sicher.)
-
Für die 7-Zip Fehlermeldung versuch mal, die folgenden dlls in das gleiche Verzeichnis zu packen.
Ich habe gelesen, dass man die haben muss (ich habe 7-zip installiert, weshalb ich die nicht in dem Ordner haben muss). -
Ich hab einfach mal leere Felder generieren lassen (20 "Bilder"). Das funktionierte einbahnfrei.
Ich hoffe, das war es, was du meintest. Viel Spaß damit.
(Hab einfach alles mit FTP,... auskommentiert und die labels bunt gemacht (statt guictrlcreatepic nen buntes label))Spoiler anzeigen
[autoit]#include <FTPEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <Zip.au3>;Form1 | Laden
[/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Profilbilder | LADEN", 301, 40, 192, 122)
GUISetBkColor(0x99B4D1)
$Label100 = GUICtrlCreateLabel("Bitte haben sie Geduld, ladet...", 8, 8, 291, 28)
GUICtrlSetFont(-1, 16, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
If Not FileExists(@ScriptDir & "\images") Then
DirCreate(@ScriptDir & "\images")
EndIfIf Not FileExists(@TempDir & "\images") Then
[/autoit] [autoit][/autoit] [autoit]
DirCreate(@TempDir & "\images")
EndIf_FTP_FileGet($FTP_Connect, "Profilbilder.zip", @TempDir & "\images\Profilbilder.zip")
[/autoit] [autoit][/autoit] [autoit]
_Zip_UnzipAll(@TempDir & "\images\Profilbilder.zip", @TempDir & "\images")$Bilder = _Zip_Count(@TempDir & "\images\Profilbilder.zip")
[/autoit] [autoit][/autoit] [autoit]
FileDelete(@TempDir & "\images\Profilbilder.zip")
;Form2 | Profilbilder P1
GUISetState(@SW_HIDE, $Form1)
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Profilbilder", 354, 426, 192, 124)
global $Controls[$Bilder][4]
GUISetBkColor(0x000000)
$Tab1 = GUICtrlCreateTab(8, 8, 337, 409)
for $i=0 to $Bilder step 2
if $i=$Bilder then
ExitLoop 1
endif
GUICtrlCreateTabItem("Seite "&$i/2+1)
for $j=$i to $i+1 step 1
if $j=$Bilder then
ExitLoop 2
endif
$Controls[$j][0] = GUICtrlCreateLabel("Dateiname:", 16, 32+(174*($j-$i)), 154,34)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Controls[$j][1] = GUICtrlCreateLabel("Größe:", 16, 70+(174*($j-$i)), 76, 17)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Controls[$j][2] = GUICtrlCreatePic("",175,32+(174*($j-$i)),150,150)
$Controls[$j][3] = GUICtrlCreateButton("Download", 16,90+(174*($j-$i)), 75, 17)
next
next
#EndRegion ### END Koda GUI section ###
GUISetState(@SW_SHOW, $Form2)While sleep(100)
[/autoit]
WEnd -
wie sieht denn diese Fehlermeldung aus? (ist der Ordner, in den du das Programm entpackt hast eventuell schreibgeschützt?)Es könnte auch sein, dass sich das Epub nicht in einem Unterordner des Programmes befindet. Momentan muss es sich dort befinden.
Das hat den Vorteil, dass man die Epubs,... problemlos mit dem Programm verschieben kann. Ich überleg mir mal, ob es nicht sinnvoll wäre, beides zu nutzen und baue das dann ebenfalls ein.
(Bei mir klappt nämlich alles problemlos...) -
Nun sind wir bei Version 2.2, da mir die Funktion zum vergößern und verkleinern der Schrift beim Reader fehlte
Da die Änderung nur den Reader betrifft muss auch nur Part2 neu heruntergeladen werden -
Dieses Programm funktioniert für dein Beispiel: (aussortiert wird nach der ersten Nummer)
Spoiler anzeigen
[autoit]#include <array.au3>
[/autoit]
#include <file.au3>
$file=FileOpenDialog("",@DesktopDir,"All (*.*)")
local $data[1]
_FileReadToArray($file,$data,0)
local $2DData[UBound($data)][4]
for $i=0 to UBound($data)-1 step 1
$ar=StringSplit($data[$i],"|")
$2DData[$i][0]=$ar[1]
$2DData[$i][1]=$ar[2]
$2DData[$i][2]=$ar[3]
$2DData[$i][3]=$ar[4]
next
$meToo=false
$end=UBound($2DData)-1
for $i=0 to $end step 1
ConsoleWrite("Outer:"&$i&" "&$end&@crlf)
for $j=0 to $i-1 step 1
ConsoleWrite("Inner:"&$i&" "&$j&@crlf)
if $2DData[$i][0]=$2DData[$j][0] then
_ArrayDelete($2DData,$i)
$end=$end-1
if $i+1=$end or $i=$end then
ExitLoop 2
endif
ExitLoop
endif
next
next
$string=""
for $i=0 to UBound($2DData)-1 step 1
$string&=$2DData[$i][0]&"|"&$2DData[$i][1]&"|"&$2DData[$i][2]&"|"&$2DData[$i][3]&"|"&@crlf
next
$fileHandle=FileOpen($file,2)
FileWrite($fileHandle,$string)
FileClose($fileHandle)
exit -
Nach dem netten Server-Crash veröffentliche ich die E-PUB Verwaltung mit Reader erneut
Diesmal gleich mit Version 2.1Ich Freu mich schon auf erneutes Feedback (falls überhaupt jemand E-Pubs liest :D:D)
-
Ich freue mich, euch eine UDF vorzustellen, welche eine TreeView und/oder ListView zu einem FileExplorer umwandelt
Ein kleines Beispielscript:
Spoiler anzeigen
[autoit]#include "FileExplorerTreeAndListview UDF.au3"
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)$GUI=GUICreate("Explorer",500,800)
[/autoit] [autoit][/autoit] [autoit]
$TreeView=GUICtrlCreateTreeView(10,10,480,385)
$ListView=GUICtrlCreateListView("",10,405,480,385)
GUISetState(@SW_SHOW)
$oExplorer=_TLE_CreateTreeViewExplorer(true,$TreeView,$ListView)
GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
GUISetOnEvent($GUI_EVENT_CLOSE, "_ExplorerGui_Close")_TLE_TreeViewOpenPath(@DesktopDir,$oExplorer)
[/autoit] [autoit][/autoit] [autoit]while 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndFunc _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
_TLE_WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam,$oExplorer)
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_NOTIFYFunc _ExplorerGui_Close()
[/autoit]
exit
EndFuncEs muss also eine Notifity eingerichtet werden, welche die genannte Funktion aufruft und dann muss nur noch die Funktion zum umwandeln aufgerufen werden.
Viel Freude damit! Ich freue mich schon auf eure Kritik!
Im Anhang befindet sich auch die benötigte AutoIt-Objekt UDF.
-
Das ganze noch entsprechend anpassen:
[autoit]$oIE=_IECreateEmbedded()
[/autoit][autoit][/autoit][autoit]$data=FileReadToArray(FileOpenDialog("",@DesktopDir,"all (*.*)");Datei wählen und in Array speichern
[/autoit][autoit][/autoit][autoit]
for $i=0 to ubound($data)-1 step 1;array durchlaufen (jede zeile (IP) einzeln an die Funktion _blockIp übergeben
_blockIp($data[$i])
nextFunc _blockIp($IP)
[/autoit]
;IEsachen ;Die Ip in den input für die Ip auf deiner Webside eintragen.
_IENavigate($oIE,"www.DeineSeite.de");Seite aufrufen
$obj=_IEFormElementGetObjByName($oIE,"IpInput");Ip adressfeld abfragen
_IEFormElementSetValue($obj,$IP);ip adresse eintragen
$obj=_IEFormElementGetObjByName($oIE,"bname_firewall_from_add");button object abfragen
_IEAction($obj,"click");click auf das object
EndFunc
[autoit]
Eventuell statt des klicks auf den button die funktion from_add_oC();return false; aufrufen._ienavigate($oIE," from_add_oC();")
[/autoit] -
du kannst auch filereadtoarray() benutzen und dann das array durchlaufen
[autoit]
[/autoit]
$x=filereadtoarray();bei altem autoit mit _ vor der funktionfor $i=0 to ubound($x)-1 step 1 _blockIp($x[$i])next
Func _blockIp($Ip);mit Ie.au3 die formulardaten eintragen und mit _ieAction den button abschickenEndFunc -
Ich kenn die Funktion StringIsInt garnicht. Damit ist es natürlich viel kürzer
(lieber kompliziert, als die Hilfe nach nem Befehl zu durchsuchen ) -
Hab mal kurz was gebastelt. Das funktioniert für alle deine Beispiele
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
local $strings[3]=["Test Auto Mofa 988 1 72 Hupe","Test 900 1 2 LOL","Test Udo 133 9 1 Auto"]
for $i=0 to UBound($strings)-1 step 1
msgbox(48,"",_workAtString($strings[$i]))
nextFunc _workAtString($string)
[/autoit]
$ar=StringSplit($string," ")
local $data[UBound($ar)][2]
$isWord=false
for $i=1 to UBound($ar)-1 step 1
$ar2=stringsplit($ar[$i],"")
for $j=1 to UBound($ar2)-1 step 1
$asc=Asc($ar2[$j])
if $asc>65 and $asc<90 or $asc>97 and $asc<122 then
$isWord=true
endif
next
if $isWord then
$data[$i][0]=$ar[$i]
$data[$i][1]="word"
$isWord=false
else
$data[$i][0]=$ar[$i]
$data[$i][1]="number"
endif
next
$string=""
for $i=1 to UBound($data)-1 step 1
if $data[$i][1]="word" then
$string&=$data[$i][0]
if $i<UBound($data)-1 and $data[$i+1][1]="number" then
$string&=","
endif
else
$string&=$data[$i][0]&","
endif
next
return $string
EndFunc
Jenachdem, was bei dir als Word definiert wird musst du die asciis austauschenEvtl. auch so, dass die nummern erkannt werden, und nicht die wörter :). Momentan werden alle nichtbuchstaben als zahlen gewertet :D:D
Viel Spaß damit -
Ich habs einfach ausgeführt (VMWare)
Ist ganz nett. Für mich überflüssig, da ich auf so etwas keinen Wert lege, baer eine coole Idee und gut umgesetztIch denke das Feedback hängt auch davon ab, wie nützlich einem etwas erscheint. Meine Epub-Bibliothek mit integriertem Epub-Reader mit Vorlese-Funktion hat auch kein Feedback. Ich denke das liegt daran, dass fast niemand etwas damit anfangen kann (wer hat denn schon genug epubs, dass sich meine Bibliothek lohnt :P)
-
Bitte schön. An deinem Beispiel hat es funktioniert
Viel Spaß damit
[autoit]#include <array.au3>
[/autoit][autoit][/autoit][autoit]
#include <file.au3>$file=FileOpenDialog("",@DesktopDir,"All (*.*)")
[/autoit]
local $data[1]
_FileReadToArray($file,$data,0)
local $2DData[UBound($data)][3]
for $i=0 to UBound($data)-1 step 1
$ar=StringSplit($data[$i],";")
$2DData[$i][0]=$ar[1]
$2DData[$i][1]=$ar[2]
$2DData[$i][2]=$ar[3]
next
$meToo=false
for $i=0 to UBound($2DData)-1 step 1
if $2DData[$i][0]<>"DeleteMe" then
for $j=0 to UBound($2DData)-1 step 1
if $i<>$j then
if $2DData[$i][0]=$2DData[$j][0] then
$2DData[$j][0]="DeleteMe"
$meToo=true
endif
endif
next
endif
if $meToo then
$2DData[$i][0]="DeleteMe"
$meToo=false
endif
next
$string=""
for $i=0 to UBound($2DData)-1 step 1
if $2DData[$i][0]<>"DeleteMe" then
$string&=$2DData[$i][0]&";"&$2DData[$i][1]&";"&$2DData[$i][2]&";"&@crlf
endif
next
$fileHandle=FileOpen($file,2)
FileWrite($fileHandle,$string)
FileClose($fileHandle)
exit -
[autoit]
#include <file.au3>
[/autoit]
$aData=_FileReadToArray(FileOpenDialog("",@DesktopDir,"All (*.*)"))
local $gesData[UBound($aData)][3]
for $i=0 to UBound($aData)-1 step 1
$ar=StringSplit($aData[$i],";")
$gesData[$i][0]=$ar[1]
$gesData[$i][1]=$ar[2]
$gesData[$i][2]=$ar[3]
next
;jetzt hast du alle einträge in einem 2dimensionalen array
;Dann sieh dir mal _ArrayUnique() an
;oder bau es dir selbst nach dem prinzip, für jeden arrayeintrag einmal das array durchlaufen,...
Viel Spaß beim weitermachen