Morgen,
ich wollte mal dein Script ausprobieren. Bei mir funktioniert es nicht wenn ich es ausführe über GO.
Mach mal $Error ersetzen durch $Error_replace
Dann sollte es gehen.
Morgen,
ich wollte mal dein Script ausprobieren. Bei mir funktioniert es nicht wenn ich es ausführe über GO.
Mach mal $Error ersetzen durch $Error_replace
Dann sollte es gehen.
Check mal:
[autoit]StdoutRead(...)
[/autoit]Der Timeout-Wert ist wie auch in der Hilfe erwähnt, nur ein Schätzwert. Nach einer Zeit geht der Traytip auch weg.
Und was funktioniert nicht?
Folgendes Script sperrt das A.
[autoit]HotKeySet("a", "tue_nichts")
[/autoit][autoit][/autoit][autoit][/autoit][autoit]While 1
Sleep(100)
WEnd
Func tue_nichts()
;nichts
EndFunc
Nutze doch einfach die Excel-UDF, die AutoIt von Haus aus mitbringt. Da gibt es u.a. _ExcelBookOpen()
FileSearch.au3
Die UDF nutze ich.
Was spricht gegen folgendes Script?
[autoit]Func _restart()
Run(@ScriptFullPath)
Exit
EndFunc
neue Zeile 66:
[autoit]IniWrite("ini\confic.ini", "InstallPath", "path", GUICtrlRead($pfadi))
[/autoit]
In $pfadi ist nur die ControlID des Elements gespeichert. In deinem Fall die 14. Du musst aus diesem Element noch den Inhalt auslesen.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
ConsoleWrite("abc1")
_GUICtrlListView_DeleteAllItems
[/autoit]Hallo zusammen,
ich hab eine Funktion geschrieben, mit der das Logging innerhalb eines Scripts besser gesteuert werden kann.
Durch die Unterscheidung von Loggingstufen ist es möglich die Logausgaben gezielt zu filtern.
ERROR-Logausgaben sind für Fehlerfälle vorgesehen und werden immer geloggt.
INFO-Logausgaben sind für informierende Ausgaben vorgesehen und werden bei den Logstufen DEBUG und INFO geloggt.
DEBUG-Logausgaben sind für fast jeden wichtigen Funktionsaufruf vorgesehen und werden nur bei der Logstufe DEBUG geloggt.
Die Loggingstufe wird in der Registry gespeichert.
_logging.au3
#include <File.au3>
[/autoit] [autoit][/autoit] [autoit];-----------------------------------------------------------------------------------------------------------------
; Function _logging($s_text, [$s_stufe = "ERROR"[, $s_logfile = ""]])
;
; Description Schreibt den übergebenen Text in eine Logdatei. Ist ein Logginglevel im System
; gesetzt, wird der Text nur geloggt, wenn es dem Logginglevel entspricht.
; - Text als ERROR eingestuft: wird geloggt, wenn Logginglevel DEBUG, INFO oder ERROR ist (immer)
; - Text als INFO eingestuft: wird geloggt, wenn Logginglevel DEBUG oder INFO ist
; - Text als DEBUG eingestuft: wird geloggt, wenn Logginglevel DEBUG ist
;
; Logginglevel ist in Registry-Wert gespeichert. (siehe Script $reg_pfad + $reg_key)
;
;
; Parameter notwendig $s_text: Logging Text
; optional $s_stufe: Logging Stufe (ERROR, INFO oder DEBUG) (Default: ERROR)
; optional $s_logfile: a) Logdatei inkl. Pfad (angegebene Datei als Zieldatei
; b) Default (Default-Logdatei als Zieldatei)
; c) leer (Default-Pfad + Scriptname als Logdateiname)
;
;
; Return Erfolg 1
; Fehler 0
; @Error: 0 = No error.
; 1 = Logdatei konnte nicht geöffnet werden
; 2 = Logdatei konnte nicht beschrieben werden
;
;
; Version 0.1
;
; Author zemkedesign (http://www.autoit.de/index.php?page=User&userID=200384)
;-----------------------------------------------------------------------------------------------------------------
Func _logging($s_text, $s_stufe = "ERROR", $s_logfile = "")
Local Const $reg_pfad = "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3"
Local Const $reg_key = "loglevel"
Local Const $logfile_pfad = "C:\tmp\" ;Pfad endet mit \
Local Const $logfile_default = $logfile_pfad & "default.log"
Local $logfile, $computername, $stufe, $logstufe, $result, $a, $b
$s_stufe = StringUpper($s_stufe)
;kein Loglevel gesetzt, dann nur ERROR loggen
;falls Loglevel gesetzt, dann alles über dem LEVEL loggen
$result = RegRead($reg_pfad, $reg_key)
;Pfad existiert nicht
If @error Then RegWrite($reg_pfad, $reg_key, "REG_SZ", "")
Switch StringUpper($result)
Case "ERROR", ""
If $s_stufe = "INFO" Or $s_stufe = "DEBUG" Then Return
Case "INFO"
If $s_stufe = "DEBUG" Then Return
EndSwitch
;Logfile setzen
If $s_logfile = Default Then
$logfile = $logfile_default
ElseIf $s_logfile = "" Then
;Datei-Endung ersetzen
_PathSplit(@ScriptName, $a, $a, $b, $a)
$logfile = $logfile_pfad & $b & ".log"
Else
$logfile = $s_logfile
EndIf
;Logging
Return _FileWriteLog($logfile, "[" & StringUpper(@ComputerName) & "/" & @IPAddress1 & "] [" & $s_stufe & "] :: " & $s_text)
EndFunc ;==>logLevel
_logging_Example.au3
#include "_logging.au3"
[/autoit] [autoit][/autoit] [autoit]_logging("Scriptstart von " & @ScriptName, "INFO", Default)
[/autoit] [autoit][/autoit] [autoit]_logging("MsgBox aufgerufen", "DEBUG")
If MsgBox(1, "", "Abbrechen stellt Fehlerfall dar") = 2 Then
_logging("MsgBox fälschlicherweise abgebrochen", "ERROR")
Else
_logging("MsgBox korrekt geschlossen", "DEBUG")
EndIf
_logging("Scriptende von " & @ScriptName, "INFO", Default)
[/autoit]
Verbesserungsvorschläge sind natürlich willkommen.
Check mal
[autoit]_FileWriteLog
[/autoit]
Dies musst du manuell in deinem Script so verteilen, dass alle wichtigen Schritte des Scripts geloggt werden.
Das Icon mit der ID 1 wird bei mir angezeigt.
[Blockierte Grafik: http://www.glennslayden.com/shell32_icons.jpg]
Btw: Kann FF.au3 mittlerweile wieder den FF versteckt öffnen?
P.S. Glückwunsch zum Thread 10000
Der Fehler liegt in der Sleep-Anweisung, denn du fragst @error nach dem Sleep ab. Sleep läuft ohne Fehler durch und @error ist nicht gesetzt. Daher wird die If-Anweisung auch ausgeführt, obwohl PixelSearch vorher nicht erfolgreich war und somit gar kein Array erstellt hat.
Darauf hin stürzt dein Programm beim Zugriff auf $coord[0] ab, weil $coord nicht deklariert ist.
[autoit]Alles anzeigen#Include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
Opt("TrayMenuMode",1)TraySetIcon("Shell32.dll")
[/autoit] [autoit][/autoit] [autoit]
$settingsitem = TrayCreateMenu("Settings")
$displayitem = TrayCreateItem("Display", $settingsitem)
$printeritem = TrayCreateItem("Printer", $settingsitem)
TrayCreateItem("")
$aboutitem = TrayCreateItem("About")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")TraySetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg1 = TrayGetMsg()
Select
Case $msg1 = 0
ContinueLoop
Case $msg1 = $aboutitem
Msgbox(64,"About:","AutoIt3-Tray-sample")
Case $msg1 = $exititem
ExitLoop
EndSelect
WEndExit
[/autoit]
Dieser Code
[autoit]TraySetIcon("Shell32.dll")
[/autoit]soll mir aber ein neues Erzeugen....tut es aber nicht
Bei mir funktioniert dein Script. Es wird ein TrayIcon angezeigt. WinXp Pro SP3
Versuch mal folgendes:
[autoit]$oSubmitButton = _IEFormElementGetObjByName ($oForm1, "Login")
_IEAction ($oSubmitButton, "click")
Durch dein Formsubmit wird Klick auf den Button nur simuliert. Evtl. gefällt dem Loginscript das nicht. Ein _IEAction sollte wirklich den Klick simulieren, den du auch manuell machen würdest.
Den Dateinamen bekommst mit _PathSplit heraus.
Mein WinXP Pro SP3 zeigt auch die Größe von Verzeichnissen an.