Beiträge von Moombas

    Ich habe ja erst an meinem Code gezweifelt aber ein Test ergab, das dieser passt.


    Ergebnis (mit Kommentaren):


    Daher vermute ich, das mit deinem String etwas nicht passt.

    Ich weiß nicht ob dir das hier hilft aber ich hatte mal den Fall, das ich "." anstatt " " in dem String hatte, was nur im Hexmode des Texteditors (Ultraedit) zu sehen war. Da ich nun nicht weiß wo deine Daten ursprünglich herkommen, wäre dies einen Test wert. Also mal deine Quelldatei in Hexadezimal zu öffnen und zu schauen ob die Leerzeichen auch welche sind.

    Möchte jetzt nicht ewig hin und her zitieren.


    Musashi : Das kann sein, das es mal bei mir durchaus bei Parameterübergabe der Fall war oder wenn ich in einem String " mit übergeben möchte, genau kann ich mich daran aber nicht mehr erinnern, nur das ich seit dem halt wie gesagt lieber ' als " verwende, da ich damit in der Regel auf der sicheren Seite bin, dies an wichtigen Stellen nicht zu "vergessen".


    Aber nun lasst uns wieder BTT, denn mit unserer Diskussion helfen wir dem TE mit seinem Problem nicht weiter außer, dass mein Vorschlag die " mit ' zu ersetzen Sinnfrei ist :)

    Ihr habt ja recht^^


    Vorschlag:

    Um zu prüfen ob hier evtl. Stringreplace ein Problem hat, könntest du mit Stringsplit testen ob die Prüfung auf den Teilstring korrekt läuft

    Code
    if Stringsplit($line3[0], '/')[2] = " Bevollmächtigter des Erzeugers" then ;"OK" in errorfile schreiben

    Was gibt es dabei nicht zu verstehen? Wenn der Wert nicht ersetzt wird, ist eine Prüfung ob der zu ersetzende Wert überhaupt vorhanden ist durchaus Sinnvoll. Bestes Beispiel hierbei ist das Umlaute nicht als Umlaut verarbeitet wurden etc., das kann man dann mit einer solchen einfachen Prüfung kontrollieren.


    Wenn der Wert vorhanden ist aber trotzdem nicht ersetzt wird (Achtung: auch auf doppelte Leerzeichen etc. prüfen) liegt der Fehler in der Umsetzung der Ersetzen-Routine.

    Wenn der Wert nicht vorhanden ist, liegt der Fehler in der Quelle oder deren Einlese/Entstehungs-Routine.


    Ich nutze hier und in Delphi, wenn die Werte passen, liegt meist ein Logik- oder Programmierfehler vor. Nur ohne es zu prüfen, wer kann sich 100%ig sicher sein, das die Werte passen?

    Du kannst eine MsgBox verwenden (temporär zum Fehler finden) oder eine Logdatei (z.B. error.txt) schreiben. Es gibt garantiert noch mehr Möglichkeiten aber MsgBox würde ich nur bei wenigen Datensätzen empfehlen die er durchläuft, sonst wirst du damit zugeballert, dann sollte man eine Logdatei nehmen. Aber bei wenigen durchläufen ist MsgBox die einfachste Prüfung.


    Ich nutze beides nach Bedarf wenn ich im laufenden Programm Fehler suchen muss um die Fehlerquelle einzugrenzen. Bei Fehlern eine error.txt (oderr auch error.log) zu schreiben kann ggf. auch in der finalen Fassung sinnvoll sein.

    Hast du mal geprüft, was er bei dem als x64 kompilierten Skript in $line3 stehen hat bevor er die Prüfung macht?


    OT @TE: Wäre hier nicht auch eine select case Abfrage einfacher als die ganzen if then Abfragen? Dann könntest du mit "else" einen Wert eintragen, wenn keine der Strings gefunden wurden (=Fehler?).


    Code
    Select
      Case StringInStr($line3[0], "Bevollmächtigter des Erzeugers")
              Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")
      Case StringInStr($line3[0], "Erzeuger")
              Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ")
    ;- ...
      Case Else
              ;-Fehlermeldung 
    EndSelect

    Moinsen,


    ich melde mich mal weder mit einem kleinen Problem.

    Hat jemand von euch sich schon mal damit beschäftigt in W7 per Skript eine Verknüpfung ans Startmenü anzuheften? Ich komme dort nicht weiter.

    Unter XP wars ja noch easy: Verknüpfung erstellen und rein kopieren - fertig.

    Win 7 stellt sich da allerdings etwas an.

    Verknüpfung erstellen kein Problem (bzw. ist schon vorhanden), aber beim Anheften scheitert es.


    Probiert habe ich bereits https://www.autoitscript.com/f…ems-to-windows-7-taskbar/ aber leider ohne erfolg.


    Ok, habe nun Code der funktioniert aus obigem Beitrag, allerdings muss ich dies nun noch per Remote schaffen. Da sträubt er sich noch ein wenig.

    Kann sein, das ich hier zu "einfach" gedacht habe, da ich alles was mit GUI's zu tun hat, die mehr als nur eine Ausgabe enthalten, meist in Delphi programmiere und dort ist das "OnEnter"-Event Standardmäßig aktiv für den ausgewählten Button, was bei Autoit natürlich nicht der Fall ist.


    Müsste doch aber über

    Code
    ; Set an accelerator key - ENTER will fire $press
    Local $aAccelKeys[1][2] = [["{ENTER}", $press]]
    GUISetAccelerators($aAccelKeys)

    Ergänzbar sein und somit bräuchte man keine Tastenabfrage und muss nur beim starten des Timers, den Button aktivieren, der den Timer startet/ stoppt.

    Ich denke dieser Buzzer kann in der Systemsteuerung oder per Software so eingerichtet werden, daß bei Betätigung ein bestimmter Tastencode gesendet wird,


    und diesen kannst du dann im Script auswerten(evtl per Hotkey und sonst per _IsPressed) oder wenn du es kompliziert magst geht sowas sicher auch per DLL Calls oder per WinApi.

    Wenn man dem Buzzer sagen kann er soll "Enter" betätigen brauchst du nicht mal die Taste abfragen, sofern der Knopf immer ausgewählt ist.

    Haste Recht, nicht bedacht ;) Zumindest sollte dem so sein^^


    Hab das mal in meinem Vorschlag für Landfloh ergänzt.

    Den Vorschlag mit OpenOffice kann ich nur vor warnen, zumindest wenn man es nur für die Prüfungen machen würde.

    In einer Prüfung hat man keine Zeit/Lust sich mit neuen Bedienungen und Funktionen eines anderen Programms rum zu ärgern.

    Wenn man OpenOffice generell nutzen würde wäre es was anderes.


    Und sonst wäre deine Alternative mit "Stecker ziehen am Switch" (sofern dieser überhaupt zugänglich ist), die von der Umsetzung einfachste Möglichkeit.

    Blöde Frage, da ich selber nicht mit Office 365 arbeite: Was wäre, wenn die Schüler Office 365 starten und du die Verbindung danach kappst?


    Normalerweise müsste Office sich doch nur beim Starten wegen der Lizenz "erkundigen" und danach braucht es die Verbindung nicht mehr oder sehe ich das falsch?

    Das wäre dann die einfachste und kostengünstigste Variante.


    Ich würde es dann so machen:

    1. Auf dem PC des Lehrers läuft ein Programm, welches einen lokalen (freigegebenen Ordner) überwacht.


    2. Du hast ein Programm auf den Schüler-PC's welches Office startet


    3a. Optional: Das Programm fragt den Schüler nach seinem Namen. Dieses Programm legt eine Datei (ohne Inhalt) auf dem PC des Lehrers ab, mit dem Namen des Schülers. (Gibt hierfür auch sicherlich bessere Lösungen!)

    3b. Dieses Programm legt eine Datei (ohne Inhalt) auf dem PC des Lehrers ab, mit der PC-Kennung des Schüler PC's. (Gibt hierfür auch sicherlich bessere Lösungen!)


    4a. Optional: Das Programm vom Lehrer schreibt ein Deaktivierungspasswort (verschlüsselt?) in die Datei. und vermerkt im Lehrerprogramm, das dieser Schüler-PC das Programm gestartet hat und das generierte Passwort wird im Programm gespeichert und kann nur (je Platz) durch ein MasterPasswort sichtbar gemacht werden. (Office soll ja nicht manuell gestartet werden).

    4b. Das Programm löscht die Datei und vermerkt im Lehrerprogramm, das dieser Schüler-PC das Programm gestartet hat. (Office soll ja nicht manuell gestartet werden)


    5a. Optional(4a): Das Schülerprogramm überwacht seine erstellte Datei und liest das Passwort ein (sobald vorhanden) und löscht die Datei. Danach wird die Internetverbindung gekappt (über host).

    5b. Die Internetverbindung wird gekappt (über host).


    6. Optional: Ggf. musst du den Taskmanager, Alt+F4 etc. auch für diese Zeit sperren, wobei die Internetverbindung ja gekappt bleibt da dein Programm nicht Ordnungsgemäß beendet wurde.


    7. Das Schülerprogramm kann nur durch Eingabe eines Passwortes (Standard oder -> 4a) wieder beendet werden, da du beim Beenden des Programms die Sperre wieder aufheben würdest.


    8. Nach der Abgabe der Prüfung:

    - Bei generiertem Passwort: Kann der Lehrer dem Schüler das Passwort geben und dieser kann das Programm beenden -> Sperre wird aufgehoben.

    - Bei "Standard" Passwort: Der Lehrer muss jeden PC einzeln selber entsperren. Ständiges Updaten für Passwortänderungen wäre hier erforderlich.


    Ergänzung: Falls Office die dauerhafte Internetverbindung braucht, mal alternativ überlegt zu überwachen ob die installierten Browser gestartet werden (iexplore.exe)? Und wenn ja werden sie sofort geschlossen! Hätte den Vorteil, dass wenn ein Schüler aus versehen Office beendet, dieses auch wieder sofort starten kann. Ich gehe mal davon aus, das Schüler keine Programme installieren dürfen und somit keine unbekannten Browser vorhanden sind? Das geht aber nur zuverlässig wenn wie gesagt Alt+F4 etc. (temporär) Abgeschaltet sind.

    Hallo zusammen,


    ich bräuchte mal wieder euren Rat.

    Ich möchte über AutoIt eine Festplatte/Partition automatisch löschen lassen (muss über diskpart gemacht werden). Ich möchte dabei aber sicher gehen, das nicht die Systempartition erwischt wird und brauche daher die Zahl aus der Datenträgerverwaltung der "nicht Systempartition". Aktuell Frage ich den Benutzer (Er muss das in der Datenträgerverwaltung nachschauen), würde das aber gerne auslesen.


    Mit den Drive-Funktionen kam ich da aktuell nicht weiter, jemand eine Idee?


    Moombas

    Wie bereits oben geschrieben - unter Win10 heißt offensichtlich alles anders ...

    Mit dem Link willst Du mir aber nicht sagen, ich solle auf einem fremden Rechner !!! nicht unbedingt notwendige Einstellungen verändern!??? Der Besitzer (Ehepartner des Users) würde sich schön bedanken, würde er plötzlich andere Einstellungen auf seinem Rechner vorfinden!


    Würde den Thread gern als erledigt kennzeichnen, kann aber nix diesbezügliches finden !?

    entsel:

    1. Machst du die Einstellung idealerweise mit dem User zusammen (so kann er/sie auch noch was lernen), so setzt man den User nicht vor vollendete Tatsachen und er/sie bekommt ggf. auch einen "Aha" Effekt und findet den Desktop ggf. sogar besser als diese "tollen" Kacheln (was deine Arbeit auch erleichtern würde den Shortcut anzulegen)

    2.a. Ging es nur darum festzustellen / zu zeigen das hier wirklich das Vollbildstartmenü genutzt wird

    2.b. Sollte nur dieses gewünscht sein ist natürlich das anlegen deiner Verknüpfung bzw. Kachel ein ganz anderer Aufwand: Tipp (google -> "win 10 neue kacheln erstellen" ->): https://www.giga.de/downloads/…en-und-anheften-so-gehts/

    2.c. Sagt ja keiner das du die Einstellung nicht wieder Rückgängig machen kannst (nach 2.a.)

    2.d. Ein wenig Offtopic: Im Startmenü reicht ein klick, nur auf dem Desktop oder Explorer brauchst du Doppelklick, da du immer von Doppelklick geredet hast, ging ich noch eher davon aus, das du den Desktop haben willst

    3. Hast du explizit nach Desktop gefragt wo man von ausgehen muss, das du auch diesen haben möchtest. Ich habe dir nur den Weg dahin mit dem Link gezeigt.

    4. Heißt unter Win10 nicht alles anders, es ist halt ein Unterschied (eine andere Funktion) ob du auf den Desktop, das (Vollbild-)Startmenü oder sonst wo drauf zugreifen möchtest. Eine Hupe und ein Lenkrad sind halt nicht das gleiche.


    Möchte man das nun mit AutoIt umsetzen wäre es folgendes aus meinem Verständnis:

    Vollbildstartmenü:

    1. Shortcut erstellen (entweder direkt im Startmenü-Ordner von Win 10 oder danach dorthin kopieren) -> FileCreateShortcut

    2. Das Anheften des Shortcuts -> da weiß ich aktuell nichts aber evtl. kann dir da jemand anderes weiter helfen ob man das emulieren/ steuern kann


    Desktop:

    1. Shortcut erstellen (direkt auf dem Desktop) -> FileCreateShortcut


    Ansonsten manuell nach z.B. oben gezeigten Link (2.b.).