Die Art, wie das ExifTool ausgeführt wurde war falsch... jetzt funktioniert es. Das einzige, was nicht klappt ist das schreiben der Description. Ich hab aber auch keine Idee, warum er das nicht macht.
Beiträge von Kanashius
-
-
Ich hänge es gerne an. Ich bezweifle jedoch, dass das etwas bringt. Ich vermute das exiftool (was auch immer das macht) funktioniert nicht richtig.
Bei mir kann ich bei den Bildern nämlich ebenfalls keinen Unterschied feststellen.
Ich weiß nur, dass die übermittelen Daten aussehen, wie sie aussehen müssen.Beispiel:
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="Girls Underwater Summer Playtime Girls Underwater Swimming Pool Having Fun Summer Playtime" "D:\Desktop\dateien\Patrick\autoit\autoit forum\shutterstock-au3\beispiele\shutterstock_178731845.jpg"
-
So. Ich habs mal angepasst:
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Outfile=shutterstock.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "IE.au3"
#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
$failedPictures=""$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]
$tmp=_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>')
if IsArray($ar) then
$ar2=_StringBetween($ar[0],'>','<')
for $i=0 to UBound($ar2)-1 step 2
$keywords=$keywords&$ar2[$i]&', '
next
;bis hier$bildNAME = _StringBetween($html,'<title>',' Stock Foto '&$shutter_num&' : Shutterstock</title>')
[/autoit] [autoit][/autoit] [autoit]
if IsArray($bildNAME) then
$bildNAME=$bildNAME[0]
Else
$bildNAME="unknown"
endif$batch = $sFilename2 & ' -m -L -overwrite_original -keywords="' & $keywords & '" -title="' & $shutter_num & '" -description="' & $bildNAME & '" "' & $sFilename & '\shutterstock_' & $shutter_num & '.jpg"'
[/autoit] [autoit][/autoit] [autoit]
;msgbox(48,"",$batch)
RunWait(@ComSpec & " /c " & $batch & "")
Sleep(50)
else
$failedPictures&="Failed: shutterstock_"&$shutter_num&".jpg"&@crlf
endifNext
[/autoit] [autoit][/autoit] [autoit]
_IEQuit ($oIE)
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>')
if IsArray($ar) then
$ar2=_StringBetween($ar[0],'>','<')
for $i=0 to UBound($ar2)-1 step 2
$keywords2=$keywords2&$ar2[$i]&', '
next
$tmp=_IENavigate($oIE,$file)$bildNAME2 = _StringBetween($html,'<title>',' Stock Foto '&$shutter_num&' : Shutterstock</title>')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
if IsArray($bildNAME2) then
$bildNAME2=$bildNAME2[0]
Else
$bildNAME2="unknown"
endif$batch2 = $sFilename2 & ' -m -L -overwrite_original -description="' & $keywords2 & '" -title="' & $shutter_num2 & '-' & $bildNAME2 &'" "' & $sFilename & '\shutterstock_' & $shutter_num2 & '.eps"'
[/autoit] [autoit][/autoit] [autoit]
;msgbox(48,"",$batch2)
RunWait(@ComSpec & " /c " & $batch2 & "") ; @SW_HIDE
Sleep(50)
else
$failedPictures&="Failed: shutterstock_"&$shutter_num&".esp"&@crlf
endif
Next
_IEQuit ($oIE)
EndIfMsgBox(64, "Vorgang Beendet", "Die Bilder wurden erfolgreich bearbeitet.")
[/autoit] [autoit][/autoit] [autoit]
if $failedPictures<>"" then
if MsgBox(4, "Vorgang Beendet", "Möchten sie die Info, welche Bilder nicht erfolgreich bearbeitet werden konnten in die Zwischenablage kopieren lassen?")=6 then
ClipPut($failedPictures)
endif
else
MsgBox(64, "Vorgang Beendet", "Die Bilder wurden erfolgreich bearbeitet.")
endifEndFunc
[/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]
EndFunc
So. Bei deinen Beispielen kommt jetzt immer das richtige heraus. Wenn das exiftool funktioniert dürfte es keine Schwierigkeiten mehr geben. -
Ah. Ich werds umarbeiten. Hab grad aber keine Zeit, also werde ich erst ca. gegen 22:00 anfangen
-
Upps...
Ja. Da war ich in Gedanken woanders
Ich meinte guictrlreadund NOT $bSended heißt, dass wenn $bSended False ist, wird true zurückgegeben, andernfalls false. Es negiert den boolschen Wert. (Dadurch wird das ganze nur einmal aufgerufen. Der Inhalt des Eingabefeldes muss erst weniger als 7 zeichen enthalten haben, damit der Button erneut geklickt wird.
(Wobei ich sagen muss, dass BugFix die bessere Möglichkeit gepostet hat. Ich würde sie vorziehen. Hätte er sie nicht vorgeschlagen hätte ich das gemacht ;))
-
Ah. Dann ist das das Problem. Das Programm arbeitet alle Bilder ab. Wenn es zu einem Bild kommt, das nicht vorhanden ist, dann stürzt es ab. Ich habe das nun berücksichtigt. Sobald Bildinfos nicht geladen werden können wird das Bild übersprungen. Am Ende des Vorgangs kann man sich die Fehlgeschlagenen Bilder in die Zwischenablage kopieren lassen.
Quellcode:
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Outfile=shutterstock.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "IE.au3"
#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
$failedPictures=""$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][/autoit] [autoit]
$tmp=_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>')
if IsArray($ar) then
$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")$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)
else
$failedPictures&="Failed: shutterstock_"&$shutter_num&".jpg"&@crlf
endifNext
[/autoit] [autoit][/autoit] [autoit]
_IEQuit ($oIE)
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>')
if IsArray($ar) then
$ar2=_StringBetween($ar[0],'>','<')
for $i=0 to UBound($ar2)-1 step 2
$keywords2=$keywords2&$ar2[$i]&', '
next
$tmp=_IENavigate($oIE,$file)$oLinks2 = _IEGetObjById ($oIE, "display-pic-description")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$bildNAME2 = _IEPropertyGet($oLinks2, "innertext")$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)
else
$failedPictures&="Failed: shutterstock_"&$shutter_num&".esp"&@crlf
endif
Next
_IEQuit ($oIE)
EndIfMsgBox(64, "Vorgang Beendet", "Die Bilder wurden erfolgreich bearbeitet.")
[/autoit] [autoit][/autoit] [autoit]
if $failedPictures<>"" then
if MsgBox(4, "Vorgang Beendet", "Möchten sie die Info, welche Bilder nicht erfolgreich bearbeitet werden konnten in die Zwischenablage kopieren lassen?")=6 then
ClipPut($failedPictures)
endif
else
MsgBox(64, "Vorgang Beendet", "Die Bilder wurden erfolgreich bearbeitet.")
endifEndFunc
[/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]
EndFunc -
[autoit]
While 2
[/autoit]
$sStickbox = GUICtrlRead($StickBox)
$SticknummerS = GUICtrlRead($Sticknummer) If StringLen($SticknummerS) = 7 Then ;ist solange erfüllt, bis das Eingabefeld kürzer ist.
;~ Sleep(500)
$Send = GUICtrlSendMsg($OK,$BM_Click,0,0)
MsgBox(0,"",$Send)
If $Send = 0 then MsgBox(0,0,"")
ExitLoop
ElseIf StringLen($SticknummerS) < 7 Then
ExitLoop
EndIf
WEndDie while-Schloeife allgemein ist unnötig... machs doch einfach so:
[autoit]if stringlen(guictrlgetdata($Sticknummer))>=7 and NOT $bSended then
[/autoit]
GUICtrlSendMsg($OK,$BM_Click,0,0) ;alternativ: mach ne funktion, die beim buttonaufruf und hier aufgerufen wird (sie beihaltet dann alles, was jetzt bei dem button steht)
$bSended=true
elseif $bSended then
$bSended=false
endif -
Ein nettes kleines Tool. 2 Verbesserungsvorschläge:
1. MsgBox(64, "Erfolgreich geladet!", "Sie haben erfoglreich geladet.")
MsgBox(64, "Erfolgreich geladen!", "Sie haben erfoglreich geladen.")
Manche legen auf Sprache Wert ;D2. Es könnte schnell passieren, dass jemand die Taste etwas länger gedrückt hält. Du hast ja versucht, dass mit dem Timer zu beheben (250ms)
Ich denke, es wäre sicherer, das mittels Hooks zu lösen.Du könntes dann jeweils bei der Passenden UP-Meldung deine Funktion aufrufen.
Ich hab mal ein kleines Beispiel-Script gebastelt:Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <MsgBoxConstants.au3>
#include <array.au3>Global Const $MOUSE_MOVE_EVENT = 0x200 ;512 (WM_MOUSEMOVE) ; ==> Mouse moving.
[/autoit] [autoit][/autoit] [autoit]
Global Const $MOUSE_PRIMARYDOWN_EVENT = 0x201 ;513 (WM_LBUTTONDOWN) ; ==> Primary mouse button down.
Global Const $MOUSE_PRIMARYUP_EVENT = 0x202 ;514 (WM_LBUTTONUP) ; ==> Primary mouse button up.
Global Const $MOUSE_PRIMARYDBLCLK_EVENT = 0x203 ;515 (WM_LBUTTONDBLCLK) ; ==> Primary mouse button double click.
Global Const $MOUSE_SECONDARYDOWN_EVENT = 0x204 ;516 (WM_RBUTTONDOWN) ; ==> Secondary mouse button down.
Global Const $MOUSE_SECONDARYUP_EVENT = 0x205 ;517 (WM_RBUTTONUP) ; ==> Secondary mouse button up.
Global Const $MOUSE_SECONDARYDBLCLK_EVENT = 0x206 ;518 (WM_RBUTTONDBLCLK) ; ==> Secondary mouse button double click.
Global Const $MOUSE_WHEELDOWN_EVENT = 0x207 ;519 (WM_MBUTTONDOWN) ; ==> Wheel mouse button pressed down.
Global Const $MOUSE_WHEELUP_EVENT = 0x208 ;520 (WM_MBUTTONUP) ; ==> Wheel mouse button up.
Global Const $MOUSE_WHEELDBLCLK_EVENT = 0x209 ;521 (WM_MBUTTONDBLCLK) ; ==> Wheel mouse button double click.
Global Const $MOUSE_WHEELSCROLL_EVENT = 0x20A ;522 (WM_MOUSEWHEEL) ; ==> Wheel mouse scroll.
Global Const $MOUSE_WHEELSCROLLDOWN_EVENT = 0x20A + 8 ;530 (WM_MOUSEWHEEL + ; ==> Wheel mouse scroll Down.
Global Const $MOUSE_WHEELSCROLLUP_EVENT = 0x20A + 16 ;538 (WM_MOUSEWHEEL + 16) ; ==> Wheel mouse scroll Up.
Global Const $MOUSE_XBUTTONDOWN_EVENT = 0x20B ;523 (WM_XBUTTONDOWN) ; ==> Side mouse button down (usually navigating next/back buttons).
Global Const $MOUSE_XBUTTONUP_EVENT = 0x20C ;524 (WM_XBUTTONUP) ; ==> Side mouse button up.
Global Const $MOUSE_XBUTTONDBLCLK_EVENT = 0x20D ;525 (WM_XBUTTONDBLCLK) ; ==> Side mouse button double click.
global $KeyCodes[205][2]=[[0,"0"] _
,[1,"1"] _
,[2,"2"] _
,[3,"3"] _
,[4,"4"] _
,[5,"5"] _
,[6,"6"] _
,[7,"7"] _
,[8,"[DELETE]"] _
,[9,"[TAB]"] _
,[10,""] _
,[11,""] _
,[12,""] _
,[13,"[ENTER]"] _
,[14,""] _
,[15,""] _
,[16,""] _
,[17,""] _
,[18,""] _
,[19,"[PAUSE]"] _
,[20,"[CAPSLOG]"] _
,[21,""] _
,[22,""] _
,[23,""] _
,[24,""] _
,[25,""] _
,[26,""] _
,[27,"[ESC]"] _
,[28,""] _
,[29,""] _
,[30,""] _
,[31,""] _
,[32,"[LEERTASTE]"] _
,[33,"[BILDHOCH]"] _
,[34,"[BILDRUNTER]"] _
,[35,"[ENDE]"] _
,[36,"[POS1]"] _
,[37,"[PFEILLINKS]"] _
,[38,"[PFEILHOCH]"] _
,[39,"[PFEILRECHTS]"] _
,[40,"[PFEILRUNTER]"] _
,[41,""] _
,[42,""] _
,[43,""] _
,[44,"[DRUCK]"] _
,[45,"[EINFÜGEN]"] _
,[46,"[ENTFERNEN]"] _
,[47,""] _
,[48,"0"] _
,[49,"1"] _
,[50,"2"] _
,[51,"3"] _
,[52,"4"] _
,[53,"5"] _
,[54,"6"] _
,[55,"7"] _
,[56,"8"] _
,[57,"9"] _
,[58,""] _
,[59,""] _
,[60,""] _
,[61,""] _
,[62,""] _
,[63,""] _
,[64,""] _
,[65,"a"] _
,[66,"b"] _
,[67,"c"] _
,[68,"d"] _
,[69,"e"] _
,[70,"f"] _
,[71,"g"] _
,[72,"h"] _
,[73,"i"] _
,[74,"j"] _
,[75,"k"] _
,[76,"l"] _
,[77,"m"] _
,[78,"n"] _
,[79,"o"] _
,[80,"p"] _
,[81,"q"] _
,[82,"r"] _
,[83,"s"] _
,[84,"t"] _
,[85,"u"] _
,[86,"v"] _
,[87,"w"] _
,[88,"x"] _
,[89,"y"] _
,[90,"z"] _
,[91,"[WINDOWS]"] _
,[92,""] _
,[93,"[LISTE]"] _
,[94,""] _
,[95,""] _
,[96,"[Block 0]"] _
,[97,"[Block 1]"] _
,[98,"[Block 2]"] _
,[99,"[Block 3]"] _
,[100,"[Block 4]"] _
,[101,"[Block 5]"] _
,[102,"[Block 6]"] _
,[103,"[Block 7]"] _
,[104,"[Block 8]"] _
,[105,"[Block 9]"] _
,[106,"[Block *]"] _
,[107,"[Block +]"] _
,[108,""] _
,[109,"[Block -]"] _
,[110,"[Block ,]"] _
,[111,"[Block /]"] _
,[112,"[F1]"] _
,[113,"[F2]"] _
,[114,"[F3]"] _
,[115,"[F4]"] _
,[116,"[F5]"] _
,[117,"[F6]"] _
,[118,"[F7]"] _
,[119,"[F8]"] _
,[120,"[F9]"] _
,[121,"[F10]"] _
,[122,"[F11]"] _
,[123,"[F12]"] _
,[124,""] _
,[125,""] _
,[126,""] _
,[127,""] _
,[128,""] _
,[129,""] _
,[130,""] _
,[131,""] _
,[132,""] _
,[133,""] _
,[134,""] _
,[135,""] _
,[136,""] _
,[137,""] _
,[138,""] _
,[139,""] _
,[140,""] _
,[141,""] _
,[142,""] _
,[143,""] _
,[144,"[NUM]"] _
,[145,"[ROLLEN]"] _
,[146,""] _
,[147,""] _
,[148,""] _
,[149,""] _
,[150,""] _
,[151,""] _
,[152,""] _
,[153,""] _
,[154,""] _
,[155,""] _
,[156,""] _
,[157,""] _
,[158,""] _
,[159,""] _
,[160,"[SHIFTLINKS]"] _
,[161,"[SHIFTRECHTS]"] _
,[162,"[STRG]"] _
,[163,""] _
,[164,"[ALT]"] _
,[165,"[ALT GR]"] _
,[166,""] _
,[167,""] _
,[168,""] _
,[169,""] _
,[170,""] _
,[171,""] _
,[172,""] _
,[173,""] _
,[174,""] _
,[175,""] _
,[176,""] _
,[177,""] _
,[178,""] _
,[179,""] _
,[180,""] _
,[181,""] _
,[182,""] _
,[183,""] _
,[184,""] _
,[185,""] _
,[186,"ü"] _
,[187,"+"] _
,[188,","] _
,[189,"-"] _
,[190,"."] _
,[191,"#"] _
,[192,"ö"] _
,[193,""] _
,[194,""] _
,[195,""] _
,[196,""] _
,[197,""] _
,[198,""] _
,[199,""] _
,[220,"^"] _
,[219,"ß"] _
,[221,"´"] _
,[222,"ä"] _
,[226,"<"] _
]$hmod = _WinAPI_GetModuleHandle(0)
[/autoit] [autoit][/autoit] [autoit]
$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
$hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
$hMouseHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)While sleep(100)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _KeyProc($nCode, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
$r=DllStructGetData($tKEYHOOKS, "vkCode")
Local $flags = DllStructGetData($tKEYHOOKS, "flags")
Switch $flags
Case $LLKHF_ALTDOWN
ConsoleWrite("[Alt]"&@crlf)
EndSwitch
keyDown($r)
endif
If $wParam = $WM_KEYUP Then
$r=DllStructGetData($tKEYHOOKS, "vkCode")
Local $flags = DllStructGetData($tKEYHOOKS, "flags")
Switch $flags
Case $LLKHF_ALTDOWN
ConsoleWrite("([Alt] UP)"&@crlf)
EndSwitch
keyUP($r)
endif
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProcFunc _MouseProc($nCode, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hMouseHook, $nCode, $wParam, $lParam) ;Continue processing
EndIf
Local $iEvent = _WinAPI_LoWord($wParam)
Local $iRet
Local $iBlockDefProc_Ret
Local $iWScrollDirection = 0
Switch $iEvent
Case $MOUSE_PRIMARYDOWN_EVENT
ConsoleWrite("Linke Maustaste gedrückt"&@crlf)
Case $MOUSE_PRIMARYUP_EVENT
ConsoleWrite("Linke Maustaste losgelassen"&@crlf)
Case $MOUSE_PRIMARYDBLCLK_EVENT
ConsoleWrite("Linke Maustaste doppelklick"&@crlf)
Case $MOUSE_SECONDARYDOWN_EVENT
ConsoleWrite("Rechte Maustaste gedrückt"&@crlf)
Case $MOUSE_SECONDARYUP_EVENT
ConsoleWrite("Rechte Maustaste losgelassen"&@crlf)
Case $MOUSE_SECONDARYDBLCLK_EVENT
ConsoleWrite("Rechte Maustaste doppelklick"&@crlf)
Case $MOUSE_WHEELDOWN_EVENT
ConsoleWrite("Mausrad gedrückt"&@crlf)
Case $MOUSE_WHEELUP_EVENT
ConsoleWrite("Mausrad losgelassen"&@crlf)
Case $MOUSE_WHEELSCROLLDOWN_EVENT
ConsoleWrite("Mausrad nach unten gedreht"&@crlf)
Case $MOUSE_WHEELSCROLLUP_EVENT
ConsoleWrite("Mausrad nach oben gedreht"&@crlf)
Case $MOUSE_XBUTTONDOWN_EVENT
ConsoleWrite("Andere Maustaste gedrückt"&@crlf)
Case $MOUSE_XBUTTONUP_EVENT
ConsoleWrite("Andere Maustaste losgelassen"&@crlf)
Case $MOUSE_XBUTTONDBLCLK_EVENT
ConsoleWrite("Andere Maustaste doppelklick"&@crlf)
EndSwitch
Return _WinAPI_CallNextHookEx($hMouseHook, $nCode, $wParam, $lParam) ;Continue processing
EndFunc ;==>_KeyProcFunc keyDown($keycode)
[/autoit] [autoit][/autoit] [autoit]
$x=_ArraySearch($KeyCodes,$keycode,0,0,0,0,1,0)
if $x=-1 then
ConsoleWrite("(KEY:"&$keycode&")"&@crlf)
else
if $KeyCodes[$x][1]="" then
ConsoleWrite("(KEY:"&$x&")"&@crlf)
else
ConsoleWrite($KeyCodes[$x][1]&@crlf)
endif
endif
EndFuncFunc keyUp($keycode)
[/autoit]
$x=_ArraySearch($KeyCodes,$keycode,0,0,0,0,1,0)
if $x=-1 then
ConsoleWrite("(KEY UP:"&$keycode&")"&@crlf)
else
if $KeyCodes[$x][1]="" then
ConsoleWrite("(KEY UP:"&$x&")"&@crlf)
else
ConsoleWrite("("&$KeyCodes[$x][1]&" UP)"&@crlf)
endif
endif
EndFuncDu kannst das Script ja eventuell bei dir mit einbauen
Viel Spaß
-
Die Anzahl der Einträge ist egal. Es wird ja das ganze Array durchgegangen.
Ich vermute, dass die Seite nicht existiert (am Dateinamen etwas nicht stimmt, etc.)Füg hinter der Zeile
[autoit]$batch = $sFilename2 & ' -m -L -overwrite_original -keywords="' & $keywords & '" -title="' & $shutter_num & '" -description="' & $bildNAME & '" "' & $sFilename & '\shutterstock_' & $shutter_num & '.jpg"'
[/autoit]
[autoit]
dies hinzu:ClipPut($batch)
[/autoit]Danach kannst du das Notepad öffnen und mit STRG + V (einfügen) den letzten Eintrag auslesen. Jenachdem, ob etwas ausgelesen wurde müsste das dann dort stehen. Mit dem Testbild, dass ich herausgesucht habe standen dann dort die Daten, so wie sie von der Seite ausgelsen wurden.
Ich vermute, dass die Bildnamen dem hier nicht entsprechen:
shutterstock_*.jpg
shutterstock_*.eps* ist die Nummer des Bildes.
-
Bekommst du. Sie ist aus und geht nicht an.
Ich wünsch mir ganz viele coole Techno Mukke
-
Bekommst du... Leider nur einen Milliliter.
Ich wünsch mir keine Autoversicherung bezahlen zu müssen (obwohl ich ein Auto hab)
ZitatReicht dir nicht der Horror Arbeit, Putzen, Wäsche waschen, koschen?
Arbeit: Hab ich momentan nicht... Studiumanfang is noch nen bisschen hin
Putzen: Einmal die Woche reicht
waschen: Mama
kochen: Mama -
Das wird SEHR hart
Ich wünsch mir mehr gute Filme wie Transformers. Aber mit nem bisschen mehr Horror
-
Wenn ich mir das ansehe gefällt mir ConsoleWirte ja doch ganz gut... Immer son nerviges Notepad im Vordergrund haben und bei irgendnem falschen klick wird alles irgendwo anders hingeschrieben :wacko:
Dann doch lieber so:
[autoit]$notepad=Run("notepad.exe")
[/autoit]
WinWaitActive($notepad)
ControlSend($notepad,"",15,$blablabla)Wesentlich sicherer
und am besten noch
[autoit]WinSetOnTop($notepad,"",1)
[/autoit]
damit man auch alles sieht(Besonders zu empfehlen, falls man mit einer eigenen Gui arbeitet. Dann sieht man alles wichtige, was man ausgeben muss )
-
Ich habe eine neue Tastatur. Diese hat eine sehr nette Beleuchtung. Dabei ist ein Logo, welches recht groß ist und ebenfalls leuchtet. Dieses Logo kann über ein Tool einzelnt an und ausgemacht werden. Da das Programm ca. 1 Minute zum laden braucht, wenn man es startet, möchte ich die Message mit Autoit an die Tastatur senden, dass das Logo aus sein soll. Es wird nämlich bei jedem neustart wieder angemacht... Mein Script soll dann Das Logo beim hochfahren ausschalten. Autostart des Programmes, etc. ist kein Problem. Die Frage ist, welche Message ich an die (per USB angeschlossene) Tastatur senden muss und wie ich das mache.
Es handelt sich um die
Thermaltake Challenger Pro
Folgende Dlls sind dabei (Falls es hilft... Ich habe keine Dokumentationen zu den Dlls gefunden.):
GNHIDUSB.dll
WMINPUT.dll
wtsapi32.dllAm besten wäre es vermutlich, die Messages abzufangen, welche an die Tastatur gesendet werden. Leider weiß ich nicht, wie das geht...
Danach kann man ja die entsprechende Message an die Tastatur senden...Ich hoffe ihr könnt mir helfen
-
Den schreibst du dir selber, vergisst aber, wie man ihn verwendet
Ich wünsch mir, dass nicht nur Schwachsinn im Fernseh läuft.
-
Ich frag mich gerade, welchen Sinn es haben soll, eine Listview als Parent zu nutzen...
Falls du in der Schleife nach dem Fenster fragst ist das dann natürlich auch nicht das Eigentliche Fenster... Wobei ich auch bezweifle, dass die ListviewID eine Fenster-ID/handle zurückgibt... -
Überprüf mal, was in $html steht... Ich vermute, dass das leer sein wird... (msgbox(48,"",$html).
Vermutung: Falscher Bildname. Stand auf der Seite... andernfalls sind die Seiten nicht alle gleich aufgebaut. -
Es wird klappen... bis der Server sich nicht mehr starten lässt.
Ich möchte einen 2-Meter Bildschirm (mit entsprechender Pixelanzahl), sodass ich AutoIt in HD genießen kann
-
Den Fehler hatte ich, weil er Internetexplorer vorher noch nie gestartet hatte. (hab sonst immer andere Browser genutzt)
Versuch mal Internetexplorer so zu starten und dann alles wegzuklicken, sodass es nicht wiederkommt.
Ansonsten wäre es gut, wenn du das au3 Script ausführen könntest... Mit der Zeile in der Fehlermeldung kann ich leider nicht viel anfangen (Außer ich Zähl die Include-Zeile und deren Include-Zeilen,... alle zusammen :D)Ansonsten probier mal, Zeile 136 von
[autoit]$oIE = _IECreate("about:blank",0,0,1,0)
[/autoit]zu
[autoit]$oIE = _IECreate("about:blank",0,1,1,0)
[/autoit]zu ändern.
-
Wird es, aber deine Freundin stirbt.
Ich will mehr zu tun haben