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. BugFix

Beiträge von BugFix

  • In 1 Tag und 5 Stunden ist es ... Uhr

    • BugFix
    • 25. April 2008 um 22:51

    Du kannst es auch mit einer Funktion lösen:

    Spoiler anzeigen
    [autoit]

    ; oder mit einer Funktion:
    MsgBox( 0, '', _TargetDateTime(-1, 2, 12, 34, 43) )

    [/autoit] [autoit][/autoit] [autoit]

    Func _TargetDateTime($Source=-1, $Day=0, $Hour=0, $Min=0, $Sec=0)
    If $Source = -1 Then
    $Source = _NowCalc()
    Else
    If Not StringRegExp($Source, '(\d{4}\/\d{2}\/\d{2} \d{2}\:\d{2}\:\d{2})') Then Return SetError(1,0,-1)
    EndIf
    Return _DateAdd('s', $Sec, _DateAdd('n', $Min, _DateAdd('h', $Hour, _DateAdd('d', $Day, $Source))))
    EndFunc

    [/autoit]

    Aber was willst du denn genau tun? Hier hast du doch nun schon die Lösungswege zum Datumsrechnen bekommen. Du kannst dir die Funktionsweise auch nochmal in der Hilfe nachlesen.

  • Anfänger braucht hilfe =)

    • BugFix
    • 25. April 2008 um 21:26

    Vielleicht solltest du einen Quellpfad angeben....? :rolleyes:

  • extended TimerDiff()

    • BugFix
    • 25. April 2008 um 21:15

    Hi,
    ich habe die Funktion TimerDiff() erweitert und die Funktion _TimerDiffExt() erstellt.
    Die Funktion gibt ein Array mit folgenden Inhalten zurück:
    - Originalrückgabe der Funktion TimerDiff()
    - Nachkommateil des Sekundenwertes
    - Sekundenanteil
    - Minutenanteil
    - Stundenanteil
    - Tage

    Edit 04.01.09
    Erweiterung auf folgende zusätzliche Ausgabemöglichkeiten (formatierter String)
    - 1d 01:58:02
    - 1d 01:58:02,562
    - 15:02:02
    - 15:02:02,563
    - 57:02
    - 57:02,563

    _TimerDiffExt
    [autoit]

    ;===============================================================================
    ; Function Name: _TimerDiffExt($INIT=-1, $Ret='a', $PostDec=0, $DelimDec=',')
    ; Description:: Erweiterte TimerDiff-Funktion, splittet Differenz auf
    ; Rückgabe als Array oder formatierter String
    ; Parameter(s): $INIT Variable der Initialisierung mit TimerInit()
    ; $Ret Return-Type (a=Array[Standard]; d=d hh:mm:ss[,ms]; h=hh:mm:ss[,ms]; m=mm:ss[,ms];)
    ; $PostDec Nachkommastellen für Sekunden 0=Nein(Standard); 1=Ja
    ; $DelimDec Trenner für Nachkommastellen, Standard=','
    ; Return Value(s): Erfolg Array[0] - Return von TimerDiff()
    ; Array[1] - Nachkommateil von Sekunden, 3-stellig
    ; Array[2] - Sekundenanteil
    ; Array[3] - Minutenanteil
    ; Array[4] - Stundenanteil
    ; Array[5] - Tageanteil
    ; oder String [1d 01:58:02/ 1d 01:58:02,562] [15:02:02/ 15:02:02,563] [57:02/ 57:02,563]
    ; Fehler -1 @error 1 (keine TimerInit-Referenz übergeben)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _TimerDiffExt($INIT=-1, $Ret='a', $PostDec=0, $DelimDec=',')
    If $INIT = -1 Then Return SetError(1,0,-1)
    Local $aReturn[6] = [0,0,0,0,0,0]
    $aReturn[0] = TimerDiff($INIT)
    Local $sec = Floor($aReturn[0]/1000)
    Local $msec = StringRegExp($aReturn[0], '\A\d+', 1)
    $aReturn[1] = StringRight('00' & $msec[0], 3)
    Select
    Case $sec > 86399 ; s/min/h/d
    $aReturn[2] = Mod(Mod(Mod($sec,86400),3600),60)
    $aReturn[3] = Floor(Mod(Mod($sec,86400),3600)/60)
    $aReturn[4] = Floor(Mod($sec,86400)/3600)
    $aReturn[5] = Floor($sec/86400)
    Case $sec > 3599 ; s/min/h
    $aReturn[2] = Mod(Mod($sec,3600),60)
    $aReturn[3] = Floor(Mod($sec,3600)/60)
    $aReturn[4] = Floor($sec/3600)
    Case $sec > 59 ; s/min
    $aReturn[2] = Mod($sec, 60)
    $aReturn[3] = Floor($sec/60)
    Case Else ; s
    $aReturn[2] = $sec
    EndSelect
    If $PostDec <> 0 Then $PostDec = 1
    Local $sReturn
    Switch StringLower($Ret)
    Case 'd'
    $sReturn = StringFormat('%ud %.2u:%.2u:%.2u', $aReturn[5], $aReturn[4], $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case 'h'
    $sReturn = StringFormat('%.2u:%.2u:%.2u', $aReturn[4], $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case 'm'
    $sReturn = StringFormat('%.2u:%.2u', $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case Else
    Return $aReturn
    EndSwitch
    Return $sReturn
    EndFunc ;==>_TimerDiffExt

    [/autoit]

    DL bisher: 26

  • In 1 Tag und 5 Stunden ist es ... Uhr

    • BugFix
    • 25. April 2008 um 21:08

    Ich habe grade eine erweiterte TimerDiff-Funktion erstellt. Die findest du gleich im Board Entwickler.
    Da kannst du die Methoden der Umrechnung sehen.

    Edit:
    Du kannst auch mit _DateAdd() arbeiten.
    Hier mal als Bsp. mit deinen Werten:

    [autoit]

    #include <Date.au3>
    $day = 2
    $hour = 12
    $min = 34
    $sec = 43
    $now = _NowCalc() ; das aktuelle Datum/Uhrzeit

    [/autoit][autoit][/autoit][autoit]

    $dest = _DateAdd('d', $day, $now)
    $dest = _DateAdd('h', $hour, $dest)
    $dest = _DateAdd('n', $min, $dest)
    $dest = _DateAdd('s', $sec, $dest)
    MsgBox(0, $now, $dest)

    [/autoit][autoit][/autoit][autoit]

    ; oder in einer Zeile:

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, $now, _DateAdd('s', $sec, _DateAdd('n', $min, _DateAdd('h', $hour, _DateAdd('d', $day, $now)))))

    [/autoit]
  • Anfänger braucht hilfe =)

    • BugFix
    • 25. April 2008 um 20:11

    Ich hab mal etwas angepaßt:

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #include <GUIConstants.au3>
    Global $Zielordner = ''

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 634, 447, 200, 147)
    $Button1 = GUICtrlCreateButton("Umbenennen", 16, 384, 169, 49, 0)
    $Button2 = GUICtrlCreateButton("Auf PSP Kopieren", 448, 384, 169, 49, 0)
    $Button3 = GUICtrlCreateButton("Wähle ordner", 233, 384, 169, 49, 0)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ; wozu umbenennen? - beim kopieren einfach den neuen Namen vergeben in Variable $Datei
    Case $Button2
    If $Zielordner = '' Then
    MsgBox(0, '', 'Kein Zielordner gewählt!')
    Else
    FileCopy("Quellpfad", $Zielordner & '\' $Datei)
    EndIf
    Case $Button3
    $Zielordner = FileSelectFolder('Bitte PSP-Ordner wählen', @MyDocumentsDir)
    EndSwitch
    WEnd

    [/autoit]
  • SNMP UDF Wer macht mit ?

    • BugFix
    • 23. April 2008 um 21:43

    Ich hab mit SNMP selber nix zu tun - aber ich hab Quellen :D
    Vielleicht ist diese WMI-Variante etwas, was du verwenden kannst? Hab da noch ein paar Skriptbeispiele (System Group Information, TCP und UDP Verbindungen und Listening Ports)

    Bsp.

    SNMP MIB-II Interface Table Information
    [autoit]

    $strTargetSnmpDevice = "192.168.0.1"

    $objWmiLocator = ObjCreate("WbemScripting.SWbemLocator")
    $objWmiServices = $objWmiLocator.ConnectServer("", "root\snmp\localhost")

    $objWmiNamedValueSet = ObjCreate("WbemScripting.SWbemNamedValueSet")
    $objWmiNamedValueSet.Add ("AgentAddress", $strTargetSnmpDevice)
    $objWmiNamedValueSet.Add ("AgentReadCommunityName", "public")

    $colIfTable = $objWmiServices.InstancesOf("SNMP_RFC1213_MIB_ifTable", , $objWmiNamedValueSet)

    For $$objInterface In $colIfTable
    MsgBox(0, '', _
    "ifIndex [Key]: " & $objInterface.ifIndex & @CRLF & _
    " ifAdminStatus: " & $objInterface.ifAdminStatus & @CRLF & _
    " ifDescr: " & $objInterface.ifDescr & @CRLF & _
    " ifInDiscards: " & $objInterface.ifInDiscards & @CRLF & _
    " ifInErrors: " & $objInterface.ifInErrors & @CRLF & _
    " ifInNUcastPkts: " & $objInterface.ifInNUcastPkts & @CRLF & _
    " ifInOctets: " & $objInterface.ifInOctets & @CRLF & _
    " ifInUcastPkts: " & $objInterface.ifInUcastPkts & @CRLF & _
    " ifInUnknownProtos: " & $objInterface.ifInUnknownProtos & @CRLF & _
    " ifLastChange: " & $objInterface.ifLastChange & @CRLF & _
    " ifMtu: " & $objInterface.ifMtu & @CRLF & _
    " ifOperStatus: " & $objInterface.ifOperStatus & @CRLF & _
    " ifOutDiscards: " & $objInterface.ifOutDiscards & @CRLF & _
    " ifOutErrors: " & $objInterface.ifOutErrors & @CRLF & _
    " ifOutNUcastPkts: " & $objInterface.ifOutNUcastPkts & @CRLF & _
    " ifOutOctets: " & $objInterface.ifOutOctets & @CRLF & _
    " ifOutQLen: " & $objInterface.ifOutQLen & @CRLF & _
    " ifOutUcastPkts: " & $objInterface.ifOutUcastPkts & @CRLF & _
    " ifPhysAddress: " & $objInterface.ifPhysAddress & @CRLF & _
    " ifSpecific: " & $objInterface.ifSpecific & @CRLF & _
    " ifSpeed: " & $objInterface.ifSpeed & @CRLF & _
    " ifType: " & $objInterface.ifType )
    Next

    [/autoit]
    Printer Port Properties
    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")

    [/autoit] [autoit][/autoit] [autoit]

    $colPorts = $objWMIService.ExecQuery _
    ("Select * from Win32_TCPIPPrinterPort")

    [/autoit] [autoit][/autoit] [autoit]

    For $objPort in $colPorts
    MsgBox(0, '', "Description: " & $objPort.Description & @LF & _
    "Host Address: " & $objPort.HostAddress & @LF & _
    "Name: " & $objPort.Name & @LF & _
    "Port Number: " & $objPort.PortNumber & @LF & _
    "Protocol: " & $objPort.Protocol & @LF & _
    "SNMP Community: " & $objPort.SNMPCommunity & @LF & _
    "SNMP Dev Index: " & $objPort.SnMPDevIndex & @LF & _
    "SNMP Enabled: " & $objPort.SNMPEnabled )
    Next

    [/autoit]
  • StopUhr Wie würdet ihrs machen?

    • BugFix
    • 23. April 2008 um 11:43

    Oder etwas anders ;)
    Hier mit 3 Modi:
    - Messung absolut
    - Anzeigestop, weiterlaufende Messung (z.B. Rundenzeiten)
    - unterbrochene Messung
    Momentan für Anzeige mm:ss,zht

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $start, $UsedTime, $diff_Alt = 0
    Global $SetTime = False, $Break = False, $Pause = False, $Run = True

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
    $Time = GUICtrlCreateInput('00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
    $bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
    $bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While True
    $msg = GUIGetMsg()
    If $SetTime Then $UsedTime = SetTime()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $bStart ; Start/Stop Messung absolut
    $Run = Not $Run
    If $Run Then
    $SetTime = False
    SetTime()
    GUICtrlSetData($bStart, 'Start')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit()
    GUICtrlSetData($bStart, 'Stop')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
    $Break = Not $Break
    If $Break Then
    $SetTime = False
    GUICtrlSetData($bBreak, 'Fortsetzen')
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    GUICtrlSetData($bBreak, 'Unterbrechen')
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bPause ; Messung wird angehalten (Additionsmessung)
    $Pause = Not $Pause
    If $Pause Then
    $diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
    $SetTime = False
    GUICtrlSetData($bPause, 'Weiter')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit() ; Zeitmessung neu initialisieren
    GUICtrlSetData($bPause, 'Pause')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func SetTime()
    Local $diff = TimerDiff($start)/1000 + $diff_Alt
    Local $min = 0
    Local $sec = Floor($diff)
    Local $rest = ($diff-$sec)*1000
    If $sec > 59 Then
    $min = Floor($sec/60)
    $secShow = Mod($sec, 60)
    Else
    $secShow = $sec
    EndIf
    GUICtrlSetData($Time, StringFormat('%02u', $min) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
    Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
    EndFunc

    [/autoit]
  • StopUhr Wie würdet ihrs machen?

    • BugFix
    • 22. April 2008 um 20:13
    Zitat von Funktionsbeschreibung

    Anzeige: herunterzählend (Standard) oder heraufzählend

  • pixel überwachen

    • BugFix
    • 22. April 2008 um 19:08

    PixelGetColor ?

  • StopUhr Wie würdet ihrs machen?

    • BugFix
    • 22. April 2008 um 19:03

    Hi, ich hatte mal eine Countdown-Funktion erstellt.
    Da kannst du dir Anregungen holen ;)

  • Finale Form

    • BugFix
    • 22. April 2008 um 17:54

    1. Wieso hast du den Inhalt der Funktionen in dein Skript kopiert?
    Du brauchst nur die Funktionsnamen um diese aufzurufen (entsprechende Includes vorausgesetzt)

    2. Ich sehe nicht, was du eigentlich machen willst *grübel*
    Schreib mal ohne Code (also mit deinen Worten), was das Ziel ist.

  • Finale Form

    • BugFix
    • 22. April 2008 um 17:49

    Und was ist jetzt die Fragestellung?

  • Ich kann Array nicht erweitern ...

    • BugFix
    • 22. April 2008 um 17:35

    Wenn du ein Array dynamisch erweitern willst, hast du aber bei einem 2D-Array sicher die 2.te Dimension mit fester Anzahl, also z.B. $Array[n][2]

    Dynamisch zuweisen geht dann so:

    [autoit]

    ; Deklaration
    Global $Array[1][2] ; ein Element muß auf jeden Fall deklariert werden - [0] geht nicht
    ; Zuweisung
    $Array[Ubound($Array)-1][0] = 'Wert 1_0'
    $Array[Ubound($Array)-1][1] = 'Wert 1_1'
    ; Array vergrößern
    ReDim $Array[Ubound($Array)+1][2]

    [/autoit]
  • Frage beim Complieren zu exe!

    • BugFix
    • 21. April 2008 um 21:30

    Das ist die 'Beschreibung' und die kannst du beim Kompilieren angeben.
    <Kompilieren> Registerkarte: <Resource Update> <Description>

  • Festplatte nach Standby verschwunden.

    • BugFix
    • 21. April 2008 um 20:29

    :D Und ich dachte schon, nur ich habe das Problem :rofl:
    Es scheint ein Problem zu geben bei Einsatz eines Bootmanagers und damit verbundener Aktivierung/Deaktivierung der jeweiligen Primärpartition.
    Bei mir ist folgende Konfiguration:
    - hda: WIN XP #1 auf erster Primärpartition; weitere logische Lw für Daten etc.
    - hdb: WIN XP #2 auf erster Primärpartition; Linuxpartition für GRUB-Dateien
    (2 x XP, da einmal privat, einmal beruflich)

    Ich habe noch kein System erkannt, aber in ca. 60% aller Fälle bekomme ich beim Starten die Meldung , dass kein bootbares Medium vorhanden sei. :wacko: Ein Warmstart und schon begrüßt mich mein Bootmenü. 8o
    Ich habe schon etliche Foren durchforstet, Spezialisten (und solche, die sich dafür halten :D) befragt - aber eine einleuchtende Erklärung hatte bisher keiner.

  • Sound deaktivieren und Lautsprechersymbol ausblenden

    • BugFix
    • 21. April 2008 um 12:53

    Ich weiß ja nicht, warum der Sound deaktiviert werden soll.
    So läßt es sich aber von jedem halbwegs Computerfähigen User wieder reaktivieren.
    Wenn die Nutzung der Soundkarte nicht gewünscht wird, deaktiviere sie doch im BIOS oder per 'dxdiag' in der DirectX-Umgebung. Da wird sicher kaum wer nach suchen. :D

  • Skins frage

    • BugFix
    • 20. April 2008 um 23:21

    Machbar ist das.
    Voraussetzung:
    Alle Deklarationen zu deiner Oberfläche sind mit Variablen belegt. z.B.: statt BkColor-ListView = 0xFFAB00 verwendest du eine Variable $BkCol_ListView1 und je nach Skin wird diese belegt.

    Wie übernimmt man den neuen Skin? - Tja, eine Funktion schreiben, die alle erforderlichen Werte setzt. In etwa so:

    [autoit]

    Func _SetSkin($SKIN)
    ; Skin-Datei einlesen (am besten in Array)
    ; Werte für aufgerufenen Skin für jedes Control setzen
    ; z.B. GUICtrlSetColor($Label1, $Col_Label1) usw.
    EndFunc

    [/autoit]

    Das ist nur ein ganz grobes Bsp.

    Die Skin Datei kannst du gestalten, wie du willst (INI, XML, TXT). Hängt davon ab, wie du am besten mit umgehen kannst. Ich würde aber nur dann eine eigene Datei für die Skins verwenden, wenn geplant ist, dass später weitere Skins hinzukommen.
    Ansonsten ist es einfacher, alle erforderlichen Angaben im Programm zu führen.
    Für Nicht-Windows-Eigene Grafikelemente (also Icons etc.) mußt du die erforderlichen Dateien auf jeden Fall separat mitliefern. Praktischerweise als Ordner IMAGES im Skriptverzeichnis. Kannst du ja einbauen, dass bei Programmstart auf diese Elemente geprüft wird, wenn nicht vorhanden, werden sie per FileInstall() installiert.

  • controlclick u Paint

    • BugFix
    • 20. April 2008 um 20:32

    Probier mal so:

    [autoit]

    ControlClick ('02.bmp - Paint' ,'' ,'[CLASSNN:Afx:1000000:81; INSTANCE:1]' )

    [/autoit]
  • Problem mit Schleife und Abfrage

    • BugFix
    • 20. April 2008 um 17:18

    Versuchs mal so, Abbruchbedingung solltest du aber noch einbinden:

    Spoiler anzeigen
    [autoit]

    While True ; besser eine Abbruchbedingung definieren, z.Zt. endlos
    Do
    Sleep(1000)
    $PID = ProcessExists ( "Limewire.exe" )
    Until $PID <> 0
    $PID_alt = $PID
    If MsgBox(262180, '', '') = 6 Then ; Ja
    RunWait('bla.exe')
    Else
    Do
    Sleep(1000)
    $PID = ProcessExists ( "Limewire.exe" )
    Until ($PID <> 0) And ($PID <> $PID_alt)
    EndIf
    WEnd

    [/autoit]
  • Brauche Hilfe bei Run Funktion oder änliches.

    • BugFix
    • 20. April 2008 um 16:37

    Wieso fällt mir da die AutoIt-Hilfe ein und anderen nicht? *grübel* Denke ich falsch? :rofl:

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™