1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. n00b-it

Beiträge von n00b-it

  • _LogFile - Einfach LogFiles erstellen und schreiben

    • n00b-it
    • 2. Februar 2017 um 13:12

    Nochmal eine Frage.
    Bin ich so auf einem besseren Weg oder habe ich irgendwas falsch verstanden?

    Spoiler anzeigen
    AutoIt: _LogFile.au3
    #include-once
    
    
    #include <File.au3>
    #include <FileConstants.au3>
    
    
    ; #INDEX# =======================================================================================================================
    ; Title .........: LogFile
    ; AutoIt Version : 3.3.14.2
    ; Language ......: English
    ; Author(s) .....: Philip G.
    ; Modifiers .....:
    ; Forum link ....: https://autoit.de/index.php/Thread/84955-LogFile-Einfach-LogFiles-erstellen-und-schreiben
    ; Description ...: -
    ; ===============================================================================================================================
    
    
    ; #CURRENT# =====================================================================================================================
    ;__LogFile_Init
    ;__LogFile_ShutDown
    ;__LogFile_Write
    ; ===============================================================================================================================
    
    
    ; #VARIABLES# ===================================================================================================================
    Global $__g_fHwndLog
    ; ===============================================================================================================================
    
    
    Func __LogFile_Init($s_LOG_FILE = @ScriptDir & "\" & @YEAR & "_" & @MON & "_" & @MDAY & "-logfile.log")
    	$__g_fHwndLog = FileOpen($s_LOG_FILE, $FO_APPEND)
    	If (Not @error) Then Return $__g_fHwndLog
    EndFunc   ;==>__LogFile_Init
    
    
    Func __LogFile_ShutDown()
    	FileClose($__g_fHwndLog)
    EndFunc   ;==>__LogFile_ShutDown
    
    
    Func __LogFile_Write($i_LOG_LEVEL, $s_LOG_MESSAGE)
    	Local $a_LOG_LEVEL[] = ["Nichts ----------------", "Information -----------", "Warnung ---------------", "Fehler ----------------", "Kritischer Fehler -----"]
    	FileWriteLine($__g_fHwndLog, "[" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "] -> " & $a_LOG_LEVEL[$i_LOG_LEVEL] & " -> " & $s_LOG_MESSAGE)
    EndFunc   ;==>
    Alles anzeigen
    Spoiler anzeigen
    AutoIt: Example.au3
    #include "_LogFile.au3"
    
    
    OnAutoItExitRegister("__LogFile_ShutDown")
    
    
    MsgBox(0, "ANFANG", "ANFANG")
    
    
    __LogFile_Init()
    
    
    __LogFile_Write(0, "Nichts")
    __LogFile_Write(1, "Information")
    __LogFile_Write(2, "Warnung")
    __LogFile_Write(3, "Fehler")
    __LogFile_Write(4, "Kritischer Fehler")
    
    
    MsgBox(0, "ENDE", "ENDE")
    Alles anzeigen
  • _LogFile - Einfach LogFiles erstellen und schreiben

    • n00b-it
    • 2. Februar 2017 um 12:45

    Hallo @Kanashius und @BugFix,

    vielen Dank für eure Kommentare. Werde mir das alles noch mal in Ruhe zu Gemüte führen und dann alles neu umsetzten.
    Eure Beiträge tragen viel zum Verständnis von UDFs bei :)
    Hab grade auch noch diesen Link gefunden. Weiß jemand ob der aktuell ist oder ob es was aktuelleres gibt?

  • _LogFile - Einfach LogFiles erstellen und schreiben

    • n00b-it
    • 2. Februar 2017 um 12:01

    Hallo @autoiter,
    danke für Deine Rückmeldung.
    Aus diesem Blickwinkel habe ich das noch nie betrachtet. Macht eigentlich mehr Sinn, da man ja direkt den Eintrag sieht der einen Eventuellen Fehler verursacht hat.
    Ich werde mal versuchen das mit einzubauen.

  • _LogFile - Einfach LogFiles erstellen und schreiben

    • n00b-it
    • 2. Februar 2017 um 09:06

    Guten Morgen zusammen,
    ich hatte Ende 2015 mal eine kleine UDF für mich geschrieben mit der ich leichter LogFiles erstellen und schreiben kann.
    Nachdem ich meine Festplatten mal aufgeräumt habe, habe ich die UDF endlich wiedergefunden.

    Spoiler anzeigen
    AutoIt: _LogFile.au3
    #include <File.au3>
    Global $h_LOG_FILE = Null
    Global $s_LOG_FILE = @ScriptDir & "\" & @YEAR & "_" & @MON & "_" & @MDAY & "-logfile.log"
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _WriteLogMessage
    ; Description ...:
    ; Syntax ........: _WriteLogMessage($i_LOG_LEVEL, $s_LOG_MESSAGE)
    ; Parameters ....: $i_LOG_LEVEL         - an integer value. Can be a value from 0 to 4. Each value is specifying a certain string in $a_LOG_LEVEL
    ;                  $s_LOG_MESSAGE       - a string value. The message to be written in the logfile
    ; Return values .: None
    ; Author ........: Philip G.
    ; Modified ......: 2015-10-01
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: _WriteLogMessage(1, "Das ist eine Information")
    ; ===============================================================================================================================
    Func _WriteLogMessage($i_LOG_LEVEL, $s_LOG_MESSAGE)
    	Local $a_LOG_LEVEL[] = ["Nichts ----------------", "Information -----------", "Warnung ---------------", "Fehler ----------------", "Kritischer Fehler -----"]
    	__OpenLogFile()
    	FileWriteLine($h_LOG_FILE, "[" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "] -> " & $a_LOG_LEVEL[$i_LOG_LEVEL] & " -> " & $s_LOG_MESSAGE)
    	__CloseLogFile()
    EndFunc
    
    
    ; #INTERNAL_USE_ONLY# ===========================================================================================================
    ; Name ..........: __OpenLogFile
    ; Description ...: Opens a logfile and returns the handle to the file
    ; Syntax ........: __OpenLogFile()
    ; Parameters ....: None
    ; Return values .: None
    ; Author ........: Philip G.
    ; Modified ......: 2015-10-01
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: No
    ; ===============================================================================================================================
    Func __OpenLogFile()
    	If (Not FileExists($s_LOG_FILE)) Then _FileCreate($s_LOG_FILE)
    	$h_LOG_FILE = FileOpen($s_LOG_FILE, 1)
    	If (Not @error) Then Return $h_LOG_FILE
    EndFunc
    
    
    ; #INTERNAL_USE_ONLY# ===========================================================================================================
    ; Name ..........: __CloseLogFile
    ; Description ...: Closes the logfile
    ; Syntax ........: __CloseLogFile()
    ; Parameters ....: None
    ; Return values .: None
    ; Author ........: Philip G.
    ; Modified ......: 2015-10-01
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: No
    ; ===============================================================================================================================
    Func __CloseLogFile(  )
    	FileClose($h_LOG_FILE)
    	If (Not @error) Then $h_LOG_FILE = Null
    EndFunc
    Alles anzeigen
    Spoiler anzeigen
    AutoIt: ExampleScript.au3
    #include "_LogFile.au3"
    _WriteLogMessage(0, "Nichts")
    _WriteLogMessage(1, "Information")
    _WriteLogMessage(2, "Warnung")
    _WriteLogMessage(3, "Fehler")
    _WriteLogMessage(4, "Kritischer Fehler")

    Es ist nichts großartiges, aber vielleicht kann es mal jemand gebrauchen.

    Für Tipps und Anregungen bin ich jederzeit offen :)

  • formular drucken

    • n00b-it
    • 4. Januar 2017 um 12:35

    Dann mach die beiden @CRLF hinter dem GUICtrlRead() weg. Dann passiert der große Abstand nicht mehr.

  • Desktop Verknüpfung erstellen bei allen Benutzern ?

    • n00b-it
    • 23. November 2016 um 20:10

    Hallo,
    du kannst die Verknüpfung z.b. bei Windows 7 in den öffentlichen Desktop legen dann erscheint sie auch bei allen :)


    Gesendet von meinem SM-G920F mit Tapatalk

  • Drag und Drop von Outlook

    • n00b-it
    • 15. November 2016 um 12:35

    Hallo,

    evetuell kannst du mit der Outlook-UDF da etwas machen.

  • Emailkonten: Abfrage in gewünschter Reihenfolge. <-- Erledigt

    • n00b-it
    • 18. Oktober 2016 um 13:38

    Das kann man doch bestimmt in den Einstellungen des Email Programms verändern.
    Hab das Tool mal vor Jahren genutzt. Schaue es mir aber später noch mal an und gebe dir eine Rückmeldung

  • Laufwerk verstecken. (gelöst)

    • n00b-it
    • 1. Oktober 2016 um 18:47

    Moin,

    dann erstell ihn doch einfach und schau was passiert

  • Versionsnummer und Installationsdatum eines Dienstes

    • n00b-it
    • 20. September 2016 um 17:47

    Vielleicht kannst du das ja für dich passend umbauen

    Spoiler anzeigen
    AutoIt
    #cs ----------------------------------------------------------------------------
    	AutoIt Version: 3.3.14.2
    	Author:         Philip G.
    	Date:			 2016-09-20
    	Script Function:
    	Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    _GetServiceDetails("SERVICE-NAME")
    Func _GetServiceDetails($sServiceName)
    	Local $Output
    	ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sServiceName = ' & $sServiceName & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    	$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
    	$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Service WHERE Name="' & $sServiceName & '"', "WQL", 0x10 + 0x20)
    	If IsObj($colItems) Then
    		For $objItem In $colItems
    			$Output = $Output & "AcceptPause: " & $objItem.AcceptPause & @CRLF
    			$Output = $Output & "AcceptStop: " & $objItem.AcceptStop & @CRLF
    			$Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    			$Output = $Output & "CheckPoint: " & $objItem.CheckPoint & @CRLF
    			$Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
    			$Output = $Output & "DelayedAutoStart: " & $objItem.DelayedAutoStart & @CRLF
    			$Output = $Output & "Description: " & $objItem.Description & @CRLF
    			$Output = $Output & "DesktopInteract: " & $objItem.DesktopInteract & @CRLF
    			$Output = $Output & "DisplayName: " & $objItem.DisplayName & @CRLF
    			$Output = $Output & "ErrorControl: " & $objItem.ErrorControl & @CRLF
    			$Output = $Output & "ExitCode: " & $objItem.ExitCode & @CRLF
    			$Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    			$Output = $Output & "Name: " & $objItem.Name & @CRLF
    			$Output = $Output & "PathName: " & $objItem.PathName & @CRLF
    			$Output = $Output & "ProcessId: " & $objItem.ProcessId & @CRLF
    			$Output = $Output & "ServiceSpecificExitCode: " & $objItem.ServiceSpecificExitCode & @CRLF
    			$Output = $Output & "ServiceType: " & $objItem.ServiceType & @CRLF
    			$Output = $Output & "Started: " & $objItem.Started & @CRLF
    			$Output = $Output & "StartMode: " & $objItem.StartMode & @CRLF
    			$Output = $Output & "StartName: " & $objItem.StartName & @CRLF
    			$Output = $Output & "State: " & $objItem.State & @CRLF
    			$Output = $Output & "Status: " & $objItem.Status & @CRLF
    			$Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    			$Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
    			$Output = $Output & "TagId: " & $objItem.TagId & @CRLF
    			$Output = $Output & "WaitHint: " & $objItem.WaitHint & @CRLF
    			MsgBox(0, "", $Output)
    		Next
    	EndIf
    EndFunc
    Func WMIDateStringToDate($dtmDate)
    	Return (StringMid($dtmDate, 5, 2) & "/" & StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
    EndFunc   ;==>WMIDateStringToDate
    Alles anzeigen

    Bei groben Schnitzern durft ihr mich gerne auf den richtigen Weg bringen :)

  • Versionsnummer und Installationsdatum eines Dienstes

    • n00b-it
    • 20. September 2016 um 11:48

    Schau dir die Klasse mal genauer an. Da sollte alles sein was du brauchst. >> Win32_Service <<

  • Menü Problem

    • n00b-it
    • 13. September 2016 um 15:12

    @autoBert
    Ist mir auch schon aufgefallen :)
    Hatte das falsch verstanden. In dem Fall ist natürlich das normale If .. Else zubevorzugen

  • Menü Problem

    • n00b-it
    • 13. September 2016 um 13:30

    Das kann so auch nicht funktionieren.
    Schau dir bitte mal die Hilfe dazu an.

  • Menü Problem

    • n00b-it
    • 13. September 2016 um 13:06

    Damit:
    If ... Then
    ElseIf ... Then

  • Menü Problem

    • n00b-it
    • 12. September 2016 um 20:37

    Erstelle ganz normal die gui und dann überprüfst du den Status der laufwerke und aktivierst bzw deaktivierst die Buttons

    Gesendet von meinem SM-G920F mit Tapatalk

  • Menü Problem

    • n00b-it
    • 12. September 2016 um 19:51

    Wenn du dir die Hilfe von dem Befehl anschaust siehst du die Ruckgabewerte der Funktion und anhand der kannst du dann den Button deaktivieren oder aktivieren.

    Gesendet von meinem SM-G920F mit Tapatalk

  • Menü Problem

    • n00b-it
    • 12. September 2016 um 19:45

    Prüf einfach vorher mit DriveStatus ob das Laufwerk da ist.

  • Netzwerkadapter auslesen

    • n00b-it
    • 12. September 2016 um 19:23

    Oder du machst das mit Hilfe der WMI.
    Hier mal ein kleines Beispiel:

    Spoiler anzeigen
    AutoIt
    MsgBox(64, "_CheckNetConnection()", _CheckNetConnection())
    
    
    Func _CheckNetConnection()
    	; source: https://msdn.microsoft.com/en-us/library/aa394216(v=vs.85).aspx
    	$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
    	$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where Name = 'Killer e2200 Gigabit Ethernet Controller'", "WQL", 0x10 + 0x20)
    	If IsObj($colItems) Then
    		For $objItem In $colItems
    			Select
    				Case $objItem.NetConnectionStatus = 0
    					Return "Disconnected"
    				Case $objItem.NetConnectionStatus = 1
    					Return "Connecting"
    				Case $objItem.NetConnectionStatus = 2
    					Return "Connected"
    				Case $objItem.NetConnectionStatus = 3
    					Return "Disconneting"
    				Case $objItem.NetConnectionStatus = 4
    					Return "Hardware not present"
    				Case $objItem.NetConnectionStatus = 5
    					Return "Hardware disabled"
    				Case $objItem.NetConnectionStatus = 6
    					Return "Hardware malfunction"
    				Case $objItem.NetConnectionStatus = 7
    					Return "Media disconnected"
    				Case $objItem.NetConnectionStatus = 8
    					Return "Authenticating"
    				Case $objItem.NetConnectionStatus = 9
    					Return "Authentication succeeded"
    				Case $objItem.NetConnectionStatus = 10
    					Return "Authentication failed"
    				Case $objItem.NetConnectionStatus = 11
    					Return "Invalid address"
    				Case $objItem.NetConnectionStatus = 12
    					Return "Credentials required"
    			EndSelect
    		Next
    	EndIf
    
    
    EndFunc
    Alles anzeigen

    Es muss nur der Name der Netzwerkkarte angepasst werden

  • Reguläre Ausdrücke

    • n00b-it
    • 7. September 2016 um 12:38

    Die Spaces kannst du doch einfach mit StringReplace() entfernen.
    Und für das zweite würde ich ein StringRegExReplace nehmen. Das genaue Pattern kann ich dir aber leider nicht geben

    LG

  • Excel-, Word-, CSV-Dateien nach einem Suchbegriff durchsuchen

    • n00b-it
    • 6. September 2016 um 16:54

    Ich hab jetzt einfach mal zu Spaß deine Funktion etwas angepasst

    Spoiler anzeigen
    AutoIt
    #Region    ;************ Includes ************
    #Include <Array.au3>
    #include <FileConstants.au3>
    #EndRegion ;************ Includes ************
    
    
    
    
    Example()
    
    
    Func Example()
    	GUICreate("", 320, 55, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1)
    	Local $idFile = GUICtrlCreateInput("", 10, 5, 300, 20)
    	Local $idBtn = GUICtrlCreateButton("Suche", 10, 30, 60, 20)
    
    
    	GUISetState(@SW_SHOW)
    
    
    	While 1
    		Switch GUIGetMsg()
    			Case -3
    				Exit
    			Case $idBtn
    				Local $sString = GUICtrlRead($idFile)
    				Local $bString = StringToBinary($sString)
    				_Search($bString)
    
    
    		EndSwitch
    	WEnd
    EndFunc   ;==>Example
    
    
    
    
    Func _Search($bString)
    
    
    	Local $sFileName, $hFileOpen, $sFileRead
    
    
    	Local $hSearch = FileFindFirstFile("*.*")
    
    
    	While 1
    
    
    		$sFileName = FileFindNextFile($hSearch)
    		If @error Then ExitLoop
    
    
    
    
    		$hFileOpen = FileOpen(@ScriptDir & "\" & $sFileName)
    		If $hFileOpen = -1 Then ConsoleWrite("Fehler beim Einlesen der Datei: " & $sFileName & @LF)
    
    
    		$aFileContent = FileReadToArray($hFileOpen)
    		_ArrayDisplay($aFileContent, $sFileName)
    
    
    ;~ 		$sFileRead = FileRead($hFileOpen)
    
    
    ;~ 		If StringInStr($sFileRead, $bString) Then
    ;~ 			ConsoleWrite("Treffer in " & $sFileName & @LF)
    ;~ 		Else
    ;~ 			ConsoleWrite("Kein Treffer in " & $sFileName & @LF)
    ;~ 		EndIf
    
    
    		FileClose($hFileOpen)
    
    
    	WEnd
    
    
    EndFunc   ;==>_Search
    Alles anzeigen

    Wenn ich das ausführe und mir das Array ansehe, sehe ich nur Hieroglyphen. Dabei spielt es keine Rolle wie die Datei geöffnet ist.
    Eventuell musst du einen anderen Weg gehen. Hast du schon mal überlegt die Word und Excel Funktionen von AutoIt da zuzunehmen? Oder ist auf dem Client kein Office installiert?

    LG

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™