Ist zwar nicht Autoit, aber man kann sich das schon irgendwie umdenken
http://www.motobit.com/tips/detpg_URLDecode/
Zuerst StringReplace '+' durch ' '
Danach nach '%' suchen und Chr() der nachfolgenden 2 Zeichen machen.
Ist zwar nicht Autoit, aber man kann sich das schon irgendwie umdenken
http://www.motobit.com/tips/detpg_URLDecode/
Zuerst StringReplace '+' durch ' '
Danach nach '%' suchen und Chr() der nachfolgenden 2 Zeichen machen.
Sieht nicht so wild aus, was da zu ersetzen ist
Google:
Hab davon zwar keine Ahnung, aber es gibt auch urldecode()
Schadet nicht, hab ich zwar noch nie gemacht, aber ich glaube das geht wenn man den ersten Beitrag editiert.
Ich glaube, jetzt hast du's verstanden. wenn keine neue Datei gefunden wird, dann wird die 'unendliche' Schleife beendet.
Du hast eigentlich alles verstanden.
'While 1' oder auch 'While True' wiederholt den Vorgang bis zum WEnd immer und immer wieder. 1 = Immer
Diese Schleife wird nur durch ExitLoop oder Exit beendet.
Schau dir mal die Hilfe zu FileFindFirstFile an. Wenn keine Datei gefunden wird, dann gibt diese Funktion -1 zurück, das kann dann ausgewertet werden.
Send("!di")
[/autoit]
bedeutet, dass ALT, D, I gesendet wird, also Alt, Datei, Seite eInrichten
Send("{Down 6}")
[/autoit]
bedeutet, dass du 6x Down sendest.
Der restliche Code ist direkt aus der Hilfe entnommen zu FileFindFirstFile.
Es lässt sich in deinem Skript noch einigen verbessern
Seite einrichten in Excel
[autoit]Send("!di")
[/autoit]Zeichen öfter Senden
[autoit]Send("{DOWN 6}")
[/autoit]Hab' nicht getestet, aber wenn das Skript im Ordner mit den xls-dateien ist, sollte es funktionieren.
$search = FileFindFirstFile("*.xls")
[/autoit][autoit][/autoit][autoit]; Check if the search was successful
If $search = -1 Then
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
ShellExecute($File)
Seite_anpassen() ; dein Skript
WinClose("Microsoft Excel -")
WEnd
; Close the search handle
FileClose($search)
Func Seite_anpassen()
WinWait("Microsoft Excel -","")
If Not WinActive("Microsoft Excel -","") Then WinActivate("Microsoft Excel -","")
WinWaitActive("Microsoft Excel -","")
Send("{ALTDOWN}a{ALTUP}{DOWN}{DOWN}{DOWN}{ENTER}")
WinWait("Seite einrichten","")
If Not WinActive("Seite einrichten","") Then WinActivate("Seite einrichten","")
WinWaitActive("Seite einrichten","")
Send("{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}{ENTER}")
WinWait("Microsoft Excel -","")
If Not WinActive("Microsoft Excel -","") Then WinActivate("Microsoft Excel -","")
WinWaitActive("Microsoft Excel -","")
Send("{CTRLDOWN}p{CTRLUP}{SHIFTDOWN}{TAB}{TAB}{TAB}{SHIFTUP}1{TAB}1{ENTER}")
WinWait("Microsoft Excel -","")
If Not WinActive("Microsoft Excel -","") Then WinActivate("Microsoft Excel -","")
WinWaitActive("Microsoft Excel -","")
Send("{ALTDOWN}d{ALTUP}{DOWN}{ENTER}")
WinWait("Microsoft Excel","")
If Not WinActive("Microsoft Excel","") Then WinActivate("Microsoft Excel","")
WinWaitActive("Microsoft Excel","")
Send("{ENTER}")
EndFunc
Wenn die Dateien automatisch geöffnet werden, nicht von Autoit, dann brauchst du keine Variablen
So reicht es doch auch.
WinWait("Microsoft Excel - ")
[/autoit]#
EDIT: Zu langsam
Das bedeutet, dass der Befehl richtig ausgeführt wurde. Die Frage ist nur warum klickt er dann nicht?
Ist das Fenster beim Klicken nicht aktiv (kann auch zu Problemen führen)?
Oder klickt er im falschen Fenster herum?
Ich weiß jetzt dann auch nicht mehr weiter ![]()
Einfach $test = ControlClick(::::)
msgbox(0,"",$test)
Wenn 0, dann passt entweder der Fenstertitel nicht, oder die ControlID
Ich kann so jetzt keine Fehler entdecken
Schau mal den Rückgabewert vom ControlClick an , ob der 1 ist oder 0.
btw: In Abschnitt Add-In Fenster kannst du für WinWait auch ein TimeOut einstellen anstelle des Sleeps.
Probier's einfach mit 2xSelect und lasse Switch weg.
Probier mal RunAsSet in der Daten.exe aus. Könnte sein, dass dass das mit den Rechteübergaben so nicht funktioniert, ansonsten weiß ich leider nichts mehr, mit dem ich dir helfen könnte.
2 Sachen sind mir noch aufgefallen:
1. Ich hoffe Zeile 7 bleibt nicht ausdokumentiert.
2. Der Befehl RunAsSet wurde in der neuen Version durch RunAs ersetzt.
User.exe ???
Zeile 11
[autoit]RunWait("test.txt", "X:",1)
[/autoit]Wie willst du eine Textdatei ausführen, dafür benötigst du ShellExecute.
Ich denke da fehlt ein Backslash
FileCopy("X:\Batch\Daten.cmd", "C:\",1)
Einfach alles in eine Schleife.
[autoit][/autoit]#include <GUIConstantsEx.au3>
Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
$settingsitem = TrayCreateMenu("Settings")
$displayitem = TrayCreateItem("Display", $settingsitem)
$printeritem = TrayCreateItem("Printer", $settingsitem)
TrayCreateItem("")
$aboutitem = TrayCreateItem("About")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")
TraySetState()
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("Form3", 413, 305, 246, 181)
$Button1 = GUICtrlCreateButton("Button1", 40, 40, 321, 209, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
$msg = TrayGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
Msgbox(64,"about:","AutoIt3-Tray-sample")
Case $msg = $exititem
ExitLoop
EndSelect
WEnd
Du kannst ihn mit BlockInput daran hindern, dass er Eingaben machen kann. Wenn dann aber die Automatik nicht 100%ig funkt, dann kann man das Script nur noch über den Taskmanager beenden.
Du kannst auch den WinWaitActive Befehlen ein Timeout verpassen, und bei Timeout die Datei löschen und das Script beenden.
Oder du kannst vor jedem WinWaitActive diesen Code einfügen
If Not ProcessExists($pad) Then
FileDelete($Exe)
Exit
EndIf
btw: Du solltest für 'Nero-8.3.6.0_deu.exe' eine Variable vergeben, sonst funkts sowieso nicht (z.B. $Exe)