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

Beiträge von Moombas

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 1. Oktober 2021 um 08:31

    Bitnugger Leider muss ich dich korrigieren, seine Ursprungsaussage war falsch. Er will nicht 16 Sekunden, sondern 16 Minuten nach der vollen Stunde die Bat ausführen. Und ich verstehe nicht ganz warum du auf "And $iCurrentMin = 12" schaust aber scheinbar bekomme ich gerade dazu den Bezug nicht.

    $sCMD würde ich wenn schon sofort definiert, als Global Const setzen.

    Ich halte das mit dem fixen sleep für 1h für gefärlich aber ggf. bin ich da etwas gebrandmarkt von anderen Projekten, wo so etwas nicht hin haute (1h theoretischer sleep <> 1h Realität)? (Einfluss von PC-Auslastung etc.)

    War zumindest mein Grund das nicht zu nutzen.

    Desweiteren hat er ja ein "Ausführungsproblem" mit seiner Batch, das sie nicht macht was er will wenn sie über autoit gestartet wird. Das wurde hierbei nun auch nicht beachtet.

    diebratwurst Das script von bitnugger macht vom Prinzip nichts anderes als meins, wird also an deinem Problem nichts ändern.

    Des weiteren ist die ideale Verfahrensweise weiterhin die Aufgabenplanung.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 15:42

    Du, ja aber das ausgeführte Programm, wenn durch die Exe aufgerufen wird, nicht unbedingt.

    Aber wie gesagt wenn du keine Informationen gibst, kann man auch nicht helfen.

    Ich schmeiße trotzdem mal was in den Raum für dich zur Selbstrecherche:

    #RequireAdmin

    Runas()

    P.s.: Berechtigungen sind auch "Datei ist im Zugriff",... , das hat nicht immer was mit Benutzerrechten zu tun. Aber du bist ja Administrator und kannst auch sicherlich trotz laufendem Windows das Windowsverzeichnis löschen...

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 15:35
    Zitat von diebratwurst

    Also ein kleines Update:

    Also die "Lösung" von gmmg habe ich ausprobiert. und er hat auch zur angegebenen Zeit gestartet.

    Nach dem ausführen der Batch Datei, hat diese nicht gemacht was sie machen soll.

    Ich habe die Batch dann händisch ausgeführt um zu prüfen ob diese evtl. fehlerhaft ist. Fehlanzeige - per Hand funktioniert sie.

    Könnte es von jetzt an tatsächlich kein Autoit Problem sondern viel mehr ein Server Problem sein mit der aus dem script erstellten .exe?

    Weil diese jetzt dauerhaft läuft und daher Software seitig eher als Dienst läuft und nicht mehr als normales Programm?

    Alles anzeigen

    Zunächst einmal, die Lösung stammt von mir, gmmg hat nur eine Zeile auskommentiert, was auch noch falsch war. (S.o.)

    Nehme das normalerweise nicht so genau aber richtig stellen will ich das schon!

    Das die Batch nicht macht was sie soll ist eine fadenscheinige Aussage mit der hier keiner was anfangen kann.

    Da musst du schon genauer werden, was sie machen soll und was sie nicht macht.

    Ich vermute mal in den blauen Dunst, wie so oft, Berechtigungsprobleme. Aber halt nur aus der :Glaskugel:

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 14:25

    Man kann es natürlich noch verfeinern, hab das mal getan in #8

    Aber das spart im worst case nur 16 Minuten bis zur ersten Ausführung, das fand ich nun nicht so dramatisch.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 13:58
    Zitat von gmmg

    Das $Hour +=1 hat am Anfang immer die Zeit Automatisch hochgezählt, ehe es in die Batch Schleife gesprungen ist.

    Das hat auch einen Grund!

    Wenn ich um 12:17 das script starte würde er sonst bis 12:16 (also 23 Stunden und 59 Minuten) warten bevor es starten würde, daher +1, damit es das erste mal in der folgenden Stunde um 13:16 gestartet wird.

    Zum testen sollte man es natürlich auskommentieren...

    Man sollte also erst mal das ganze verstehen bevor man "einfach mal" etwas auskommentiert und sagt "hey das ist die Lösung"...

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 10:54

    Ich glaube ich habe den Fehler gefunden.

    Ich bin bei Stringsplit warum auch immer von einem 0-basiertem Array ausgegangen. Das ist im Standard aber ein 1-Basiertes Array. einmal ändern (oben bereits passiert).

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 10:05

    Noch ein Tippfehler: das $ vor StringLen muss natürlich weg.

    Oben korrigiert.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 10:00

    Oops, BatchStart umbennen in BatchRun

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 09:49

    Ich habe oben (#8) ein Beispiel gepostet das funktionieren könnte. (ungetestet).

    Inkl. Variablen Initialisierung.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 09:40
    Zitat von diebratwurst

    Also das Script scheint tatsächlich zu funktionieren. :)

    Ich hatte es erst für 24 Stunden erstellt. - Der Server läuft allerdings auf einem 12 Stunden Zeitsystem (AM,PM).

    Daher habe ich nur die ersten 12 Stunden genommen.

    Gibt es eine Möglichkeit zwischen AM und PM zu unterscheiden?

    mit dem _NowTime(3) mit der (3) sollte er ja automatisch das Zeit Format von Windows auswählen richtig?

    Dein Skript kann nicht richtig laufen, da er nicht die richtige Zeit zu deiner Anforderung hat.

    Deine Anforderung X Stunden + 16 Sekunden.

    Deine Annahme ist aber: 01:16 = 1 Stunde und 16 Minuten!

    Im 12 Stunden Format hast du dennoch das Problem, das der Abstand zwischen 12:00 und 00:00 12 Stunden sind...

    Und bei einem Intervall von 100ms, könnte das Script theoretisch 10mal Pro Stunde laufen!

    Zu deiner Frage in Fett: Ja, er nimmt das Systemschema.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 09:37

    ungetestet:

    AutoIt
    #Include <Date.au3>
    Global $Hour = StringSplit(_NowTime(4), ':')[1]
    
    if StringSplit(_NowTime(4), ':')[2] >= 16 then
        $Hour += 1
    EndIf
    
    While 1
        If $Hour = 24 Then $Hour = 0
        If BatchRun($Hour) Then $Hour += 1
        sleep(100)
    WEnd
    
    Func BatchRun($Time)
        If StringLen($Time) = 1 then $Time = '0' & $Time
        $Time = $Time & ':16'
    
        If _NowTime(4) = $Time Then
            ShellExecute("D:\AWK\Schnittstelle\Auftraege\PTV_Import.bat")
            sleep(1000) ;Sicherstellen das das Skript nur 1 mal ausgeführt wird!
            Return True
        Else
            Return False
        EndIf
    EndFunc
    Alles anzeigen
  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 09:24

    Das kannst du doch selber am besten testen...

    Ich sehe aber ein Problem (evtl. aber gewollt):

    Zwischen den letzten beiden Ausführungen liegen 12 Stunden!?!

    Und wenn du wirklich Probleme mit der Zeitangabe vom PC hast verwende _NowTime(5) (24h Format mit Sekunden; siehe Hilfe) dann müsstest du mit deiner vorgehensweise aber 24 Einträge schreiben, was du wiederum kürzen könntest in dem du das in eine Funktion packst aber am besten wäre wirklich die Zeit in einer Datei zu speichern (Absturzsicherung) oder einer Variable (Inhalt nach Absturz weg), je nachdem was du brauchst.

  • Do Until - Systemzeit funktioniert nicht

    • Moombas
    • 30. September 2021 um 08:33

    Warum schreibst du die letzte Ausführung nicht in eine Datei (z.B. Ini) und prüfst auf diese (+1h)?

    Dann sparst du dir diese ganzen Zeiten manuell einzutragen, wobei das mit der Aufgabenplanung durchaus am meisten Sinn macht.

    "Aus irgendwelchen Gründen" finde ich immer schwierig, evtl. kann man euch hier besser helfen wenn man den Grund dafür findet und behebt!?

  • Text im Label dynamisch darstellen

    • Moombas
    • 27. September 2021 um 08:32
    Zitat von BugFix

    Das Resizing hat nur Einfluss auf die Abmessung des Labels, die Fontgröße hat damit nichts zu tun. Wenn du das zusätzlich anpassen möchtest, musst du WM_SIZING auswerten und im Verhältnis zur Größenänderung die Schriftgröße anpassen.

    Aber den Zahn kann ich dir gleich ziehen - denn das funktioniert einfach nicht!

    Ursache: Durch das Ermitteln des Verhältnisses musst du zwangsläufig runden. Die Rundungsdifferenzen führen dazu, dass bei mehrfacher Größenänderung du niemals zurück zur Anfangsgröße gelangst. Irgendwann wird die Schrift dann überproportional groß oder klein. Habe ich schon mal probiert.

    Jaein, wenn du die Standardfenstergröße als Default (Const) Wert nimmst wäre das doch egal.

    Sprich Standardfenstergröße (z.B. 1000px = 100%) zu neuer Fenstergröße (z.B. 768px = X%) ins Verhältnis setzen und dementsprechend die Standardschriftgröße vergrößern/verkleinern (Dreisatz). Faktor = X% / 100

    AutoIt
    Global Const $DefaultWidth = 1000 ;px
    Global Const $DefaultHeight = 1000 ;px
    Global Const $DefaultFontSize = 16
    
    Local Const $NewWidth  = 768 ;px ermittelt!
    Local Const $NewHeight = 768 ;px ermittelt!
    Local $NewFontSize, $NewFontSize2
    $NewFontSize  = $DefaultFontSize * ((($NewWidth  * 100) / $DefaultWidth ) / 100)
    $NewFontSize2 = $DefaultFontSize * ((($NewHeight * 100) / $DefaultHeight) / 100)
    if $NewFontSize > $NewFontSize2 then $NewFontSize = $NewFontSize2
    ; dann wäre $NewFontSize immer der zu verwendende Wert.
    Alles anzeigen

    Ggf. musst du beides betrachten (Breite und Höhe) und dann den kleineren Wert wählen. Aber dadurch das du immer die Ausgangsgröße als Maßstab nimmst, müsste das Verhältnis immer passen (und auch immer wieder zum Startwert zurückkehren können).

  • Intel HD Graphics - GUI Steuern

    • Moombas
    • 27. September 2021 um 08:24

    1. Frage: Wie hast du es bisher versucht? Evtl. Quellcode zur Fehlerbehebung?

    2. Frage: Schon mal nach der API gesucht? (https://www.intel.de/content/www/de…4/graphics.html)

  • Url im Hintergrund öffnen und wieder schließen

    • Moombas
    • 24. September 2021 um 13:54

    Wenn ichs richtig sehe musst du fsocket durch ConnectedSocket ersetzen damit es passt.

    funky war schneller

  • Text im Label dynamisch darstellen

    • Moombas
    • 24. September 2021 um 13:51

    Noch nie genutzt aber müsste das nicht mit https://www.autoitscript.com/autoit3/docs/f…SetResizing.htm dem Label mitgeteilt werden können?

  • Url im Hintergrund öffnen und wieder schließen

    • Moombas
    • 24. September 2021 um 11:09

    Hallo Patrick,

    du kannst Shellexecute das Showflag @SW_Hide mitgeben. Siehe hier: https://www.autoitscript.com/autoit3/docs/f…hellExecute.htm

    Bin mir aktuell nicht sicher ob dein Send dann noch funktioniert.

    Ich würde an deiner Stelle auch die PID, die Shellexecute zurück gibt speichern und dann mit ProcessClose() das Fenster schließen. Dann brauchst du den send befehl nicht mehr.

  • sql Einlesen einer Dateistruktur, wie gelöschte Dateien ermitteln?

    • Moombas
    • 21. September 2021 um 09:47

    Geht es dabei nur um lokale Dateien oder auch um welche auf externen Laufwerken (z.B. im Netzwerk)?

    Man könnte auch einen Thread laufen lassen, der bei Änderungen entsprechend Aktionen ausführt, da gibt es Windowsmechaniken für.

    Willst du das wirklich "nur" flaggen oder direkt anpassen? Ggf. wäre ein einfaches "neu einlesen" einfacher.

  • Variable Zeile für Zeile abarbeiten und verändern

    • Moombas
    • 10. September 2021 um 11:40

    1. Schreibst du immer an das Ende deiner Datei, die letzte ausgelesene Zeile = Endlosschleife und macht aus meiner Sicht keinen Sinn. Du müsstest eine neue Datei verwenden und FilewriteLine().

    2. Anstatt Filewrite, nutze doch eine Variable in die du schreibst: $textausfile = $line & @CRLF. Falls notwendig kannst du dann Filewrite($File, $textausfile) vor dem FileClose().

    Zudem würde ich deine Schleife anders aufbauen:

    _FileCountLines nutzen anstatt While und @error

    AspirinJunkie war schneller/besser :)

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™