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

Beiträge von misterspeed

  • Variablen und Pointer

    • misterspeed
    • 2. April 2016 um 18:33

    Wo genau liegt das Problem? Beispielscript das das Problem veranschaulicht?

    Ist deine Variable global oder local? Wo und wie wird sie verändert? Handelt es sich um eine lokale Variable kommt evtl. noch eine "static local" Deklaration in Frage, sofern der Variableninalt für den nächsten Funktionsaufruf erhalten bleiben soll. Bei einer globalen Variable sehe ich überhaupt kein Problem, diese hat immer den letzten gesetzten Wert und ist funktionsübergreifend les- und veränderbar.

  • Autoit Anfänger Brauche hilfe für schleife

    • misterspeed
    • 2. April 2016 um 17:03

    Es macht absolut keinen Sinn diese Mausbewegerei über Stunden durchzuführen. Wenige Sekunden sind absolut ausreichend, hierbei kommt es auch eher auf Zufälligkeit der Bewegung an und nicht auf die Dauer, daher wird hier ja explizit eine manuelle Benutzereingabe verlangt. Da du das auch nicht täglich machen musst, sondern genau ein einziges Mal beim Erstellen der verschlüsselten HDD/Partition/Datei ist ein solches Script absolut unnötig und bietet keinerlei Mehrwert.

    Es glaubt dir aber sowieso keine Sau, dass du das Script für Trucrypt benötigst. Sehr wahrscheinlicher ist es, dass du das ganze für Spiel XYZ benötigst und noch nichtmal die absoluten Autoit Grundlagen beherscht. Deine einzige Leistung war es bisher dir lustige Geschichten auszudenken und ein fehlerhaftes/unvollständiges Script irgendwo zu kopieren. Achja und vermutlich hast du dir auch mehrere Accounts hier im Forum angelegt, das muss natürlich als weitere Leistung gewürdigt werden.

    Zum Problem selbst. Du schreibst, dass das ganze in einer Schleife ausgeführt werden soll. Dann schlage ich vor die Hilfe von Autoit zu lesen. Dort werden alle gängigen Schleifentypen beschrieben. In deinem Script sehe ich keine einzige Schleife. Fehler erkannt? Dann ist ja gut. Achja wenn du schon dabei bist schau dir an was eine IF-Bedingung ist, denn diese wirst du auch benötigen.

    Mehr gibts hier meiner Meinung nach nicht zu sagen.

  • Control.exe (Systemeigenschaften) resistent gegen ControlClick und ControlSend?

    • misterspeed
    • 2. April 2016 um 14:53

    Mal unabhängig davon ob dein Script nun funktioniert oder nicht... wenn du den Computernamen oder die Domänenmitgliedschaft ändern willst gibt es dafür bessere und direktere Lösungen.

    Eine mögliche Ursache für das Verhalten könnte im Übrigen eine Beschränkung durch UAC von Fensterinteraktionen sein, welche Scripte mit niederen Rechten als die des zu steuernden Fensters blockiert. (Wurde hier schon in einigen anderen W10 Threads als Problem identifiziert). Teste daher mal ob das Script korrekt arbeitet wenn du entweder UAC deaktivierst oder dein Script mit #requireadmin startest. Prinzipiell können aber alle Windows Einstellungen auch auf direkterem Weg manipuliert werden, daher halte ich eine Fensterautomatisierung hier für überflüssig / unangebracht.

  • Winwows10, *.exe als angemeldeter User als Admin starten

    • misterspeed
    • 20. März 2016 um 13:39

    Wozu brauchst du runas? Dein Autoitscript läuft doch bereits mit erhöhten Rechten wenn du #requireadmin verwendest. Alle vom Programm aus gestarteten Prozesse erhalten ebenfalls die Rechte des aufrufenden Scriptes. Ein CMD Fenster brauchst du genausownig wenn die defrag.exe eine Kommandozeilenanwendung ist starte sie einfach direkt.

    Du scheinst auch nicht ganz verstanden zu haben was run oder runas tut. Du kannst nicht ein cmd Fenster öffnen und mit einem zweiten run Aufruf irgendetwas da rein schreiben. Ein run Aufruf gibt dir eine PID (Prozess ID) zurück. Diese kannst du unter Umständen nutzen um etwas in den STDIN des Prozesses zu schreiben, aber sicher nicht so wie du das hier gerne machen würdest.

  • _Excel_BookAttach funktioniert in compilierter Form nicht (mehr)

    • misterspeed
    • 16. März 2016 um 20:01

    Ich tippe eher auf ein 32 vs 64bit Problem. Soweit ich das sehe kompilierst du als 64bit Script. Evtl. wird in scite das ganze aber als 32bit ausgeführt. Da Office in der Regel als 32bit Version vorliegt könnte es hier ggf. zum Problem kommen. Weitere Fehlerquelle könnte auch die Heurisitk Funktion deines Virenscanners sein, welche auf 64bit Kompilate anderst reagiert als auf 32bit. Letzteres hatte ich selbst schon erlebt... der Programmstart war bei der 64bit Version aufgrund des Virenscanners stark verzögert.

    Neben dieser Fehlerquelle solltest du auch ein Berechtigungsproblem durch den Start über den Taskscheduler ausschließen. Tritt das Problem auch bei manueller Ausführung der kompilierten Fassung auf?

  • WMI FileSystemWatcher - Methode .NextEvent() kann nicht manuell verlassen werden

    • misterspeed
    • 29. Februar 2016 um 17:52
    Zitat von BugFix

    Hat jemand von euch eine Idee, wie ich aus der Falle heraus komme?
    Aus dem Skript heraus kann ich keinerlei Aktion ausführen, da ich in der Methode bin.


    Eine Lösung hierfür wäre es denn betreffenden Code in eine separate EXE auszulagern und diesen Prozess zu killen wenn die Ordnerüberwachung beendet werden soll. Oder du verwendest wie vorgeschlagen die WinAPI Variante. ;)

  • svchost verbraucht Internet

    • misterspeed
    • 28. Februar 2016 um 21:31
    Zitat von Bioshade

    Danach macht er - vorerst - nichts mehr in Richtung Windows 10 Und man ist das dauerhafte Herunterladen von den insgesamt 6 GB los.

    GWX braucht man nicht unbedingt löschen, genauso wenig wie die damit verbundenen Updates (welche ohnehin ständig durch Nachfolgeversionen ersetzt werden). Es reicht die richtigen 4 Registry Schlüssel zu setzen und schon startet weder GWX mit seinen aufdringlichen und lästigen Meldungen noch wird das W10 Upgrade von Windows Update heruntergeladen/installiert.

    http://www.wintotal.de/gegenmittel-fuer-genervte-gwx-opfer/

    Achja und mein Beileid an Autobert. Dass er auch heute noch kein gescheites Internet bekommen kann ist wirklich traurig.

  • TCP Server kann Anfragen nicht verarbeiten

    • misterspeed
    • 28. Februar 2016 um 16:38
    Zitat von Leo.1906

    Da ich immer nur ein Wort bzw eine "Line" senden will, brauche ich die Daten die reinkommen nicht nach @crlf oder ähnlichem zu splitten ..

    Muss ich die empfangenen Daten noch irgendwie umformatieren oder so?

    Siehe Autoberts Antwort. Natürlich musst du den empfangenen String "test" & @CRLF vom @CRLF befreien bevor du auf einen String ohne Zeilenumbruch prüfst. Ansonsten wird er eben nicht gefunden, da er so nie an den Server verschickt wurde. Alternativ kannst du dein send im Client natürlich anpassen, wenn du ohnehin nur einzelne Zeilen versenden willst. Grundsätzlich ist ein Trennzeichen zwischen den Nachrichten aber sinnvoll, da bei schnellem Versand mehrere Nachrichten sonst als "einzelne" Nachricht ankommen könnten.

    Achja ein weiterer "Fehler"... dein Server Script führt beim Beenden kein TCPshutdown durch und auch der Mainsocket wird nicht geschlossen, bzw. deine Exitfunktion ruft wieder die waitforconn Funktion auf und somit kann das Script eigentlich garnie sauber beendet werden. Du solltest zusätzlich zur Resetcon Funktion noch eine echte Exitfunktion einbauen, damit alle Verbindungen sauber abgebaut und getrennt werden können. Andernfalls kann es dir unter Umständen passieren, dass dein Listening Socket blockiert bleibt und der Server irgendwann nicht mehr startet.

  • UDPSend() - einige Fragen

    • misterspeed
    • 28. Februar 2016 um 12:45

    Dein Ansatz zuerst mit dem Smartphone zu testen ist ja schonmal okay, aber bevor du Daten über das Netzwerk verschickst solltest du das zunächst lokal am Rechner testen. Sprich erstelle einen Client und einen Server. Wenn die Kommunikation lokal funktioniert teste die Kommunikation wenn dein Serverscript auf einem anderen Rechner im Netzwerk läuft. Klappt das auch kannst du testen ob die Kommunikation mit fremder Software (z.B. Smartphone App oder deinem Arduino Gerät) funktioniert.

    Gründe warum das nicht auf anhieb klappen könnte gibt es jedemenge:

    - Firewalls/Virenscanner (sowohl lokal am Client/Server Rechner als auch zentral am Router)
    - Subnet übergreifende Kommunikation und fehlendes Routing
    - Fehlerhafte Konfiguration des Clients (z.B. falscher Zielport)
    - Fehlerhafte Kommunikation (z.B. falsches Kommunikationsprotokoll). Vielleicht kommen deine Pakete ja an, aber die Smartphone App kann nichts damit anfangen und ignoriert dich daher.
    - Schlechtes Netzwerk in Verbindung mit einem nicht zuverlässigen Übertragungs Protokoll (UDP statt TCP)... deine Pakete könnten schlichtweg verloren gehen.
    - usw.


    EDIT:

    Du verwendest im Übrigen kein UDPStartUp(), daher funktionieren vermutlich alle weiteren Dinge auch nicht. Das könntest du durch Debugging und Auswertung der Fehlercodes der Funktionen auch selbst feststellen. ;)
    Außerdem muss sowohl der Socket als auch UDP selbst bei Programmende sauber geschlossen bzw. heruntergefahren werden. Details dazu kannst du den Beispielen in der Hilfe entnehmen.

  • als Script funktionierts, aber als .exe nur zum Teil

    • misterspeed
    • 27. Februar 2016 um 07:29

    Was heißt nutzlos? Das Makro gibt dir den Pfad zum Interpreter. Im kompilierten Zustand ist der Interpreter nunmal die EXE selbst, andernfalls wären Autoitscripte nur lauffähig wenn Autoit auf dem System installiert ist (vergleichbar mit JAVA). Und ja deine kompilierte EXE kann auch als Interpreter für externe AU3 Dateien missbraucht werden, das Makro ist also durchaus nützlich in bestimmten Anwendungsfällen.

    Zitat von AutoIt Hilfe

    AutoIt specific command Line Switches

    ...

    Form3: Compiled.exe [/ErrorStdOut] [/AutoIt3ExecuteScript file] [params ...]
    Execute another script file from a compiled AutoIt3 Script File. Then you don't need to fileinstall another copy of AutoIT3.exe in your compiled file.

    Form4: AutoIt3.exe [/ErrorStdOut] /AutoIt3ExecuteLine "command line"
    Execute one line of code.

    To execute a single line of code, use the command:
    Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Hello World!'', ''Hi!'')"')
    The tray icon will not be displayed when using /AutoIt3ExecuteLine

    NOTE: Correct usage of single- and double- quotation marks is important, even double single.

    Form3 and Form4 can be disabled for compiled script when using #NoAutoIt3Execute.

    Alles anzeigen
  • SQLite Hilfe benötigt

    • misterspeed
    • 26. Februar 2016 um 21:36

    Außerdem könnte die Tabellendefinition fehlerhaft sein. Laut Dokumentation gibt es keinen Datentyp "single".

    https://www.sqlite.org/datatype3.html

  • als Script funktionierts, aber als .exe nur zum Teil

    • misterspeed
    • 26. Februar 2016 um 21:13

    Wie vermutet ist deine Pfadangabe zum Compiler falsch wenn das Script kompiliert ist.

    Zitat von Autoit Hilfe


    @AutoItExe
    The full path and filename of the AutoIt executable currently running. For
    compiled scripts it is the path of the compiled script.


    Beweis:

    [Blockierte Grafik: http://i.imgur.com/klC2u5M.png]

  • als Script funktionierts, aber als .exe nur zum Teil

    • misterspeed
    • 26. Februar 2016 um 20:21

    Achja und warum verfolgst du diesen Ansatz eigentlich immernoch?

    Hier dein anderer Thread zum Thema...
    Exe aus Script heraus erstellen mit eigenen Parametern

  • als Script funktionierts, aber als .exe nur zum Teil

    • misterspeed
    • 26. Februar 2016 um 20:17

    Ohne dein vollständiges oder zumindestens ein Testscript mit selbem Fehlverhalten kann man nur raten. Ich tippe aber mal auf deinen Virenscanner. Alternativ könnte evtl. auch der Pfad zum Compiler falsch sein, aber du zeigst uns ja leider nicht wie dieser zustande kommt. Vermutlich verwendest du Autoit Makros für den Pfad, welche unterschiedliche Ausgaben haben wenn das Script kompiliert oder nicht kompiliert ist.

  • Während Suche Splashtext anzeigen, Splashtext geht nicht mehr zu

    • misterspeed
    • 26. Februar 2016 um 19:55
    Zitat von Fintan

    Ich meine so natürlich...

    Prinzipiell sollte das doch so funktionieren. Ich verstehe aber nicht warum du den splashtext nicht einfach vor und nach der Suchfunktion einfügst, denn du willst doch signalisieren, dass dein Script gerade eine lange Suche durchführt.

    Code
    SplashTextOn("", "Suche läuft...", 220, 40, 730, 388, 21)
    Local $SuchOrdAngAlt = _FO_FolderSearch($OrdAngAlt2, '*' & $AngAltGanzNum, True, 3, 0, 0)
    SplashOff()
  • Während Suche Splashtext anzeigen, Splashtext geht nicht mehr zu

    • misterspeed
    • 26. Februar 2016 um 19:50

    Erstmal gibt es keine IF Schleife, das ist eine Bedingung und keine Schleife.

    Bei 600 Zeilen Code mit mehr oder weniger kryptischen Variablennamen fehlt mir auch der Überlick was du da überhaupt tust. Vermutlich könnte man deinen Code auf ein fünftel zusammenkürzen. Davon mal abgesehen verstehe ich deine Frage nicht.

    Wenn du splashtext einschaltest musst du auch sicherstellen, dass es wieder ausgeschaltet wird. Endweder in dem du das in jedem Bedingungszweig entsprechend tust oder deinen Code etwas geschickter strukturierst um unnötige Redundanz zu vermeiden. Wenn ich mir deinen Code ansehe sehe ich da erstmal jedemenge Copy&paste Die Code Blöcke sind nahezu identisch, was den Code unübersichtlich, fehleranfällig und schwieriger zu handlen macht wie du ja selbst schon bemerkt hast.

    Dein Problem liegt vermutlich hier
    ;~ 4 AUFTRAG 2014\02-????-14\01-8888-14
    Da du dort noch eine überflüssige endlos while Schleife hast, die evtl. niemals verlassen wird. Grundsätzlich kommt dein splashoff auch erst nach der if Bedingung, in einem Zweig der if Bedingung verlässt du die Funktion aber vorzeitig mit return, das splashoff wird also niemals oder endlos ausgeführt.

  • Während Suche Splashtext anzeigen, Splashtext geht nicht mehr zu

    • misterspeed
    • 26. Februar 2016 um 19:21

    Du willst also, dass der Spalshtext immer dann angezeigt wird, wenn dein Script innerhalb dieser Suchfunktion ist? Warum baust du diesen dann nicht genau dort ein? Einfach ein splashtext am Anfang der Funktion und ein splashoff am Ende (vor dem "return").

    Alternativ baust du das ganze direkt vor bzw. direkt nach jedem Aufruf der Funktion ein (z.B. wenn du bei jeder Suche einen anderen Text anzeigen willst). Du brauchst für den splashtext weder Schleifen noch sonst irgendwas.

    Einfaches Beispielscript:

    AutoIt
    SplashTextOn("", "Suche läuft...", 220, 40, 730, 388, 21)
    sleep(10000) ; macht irgendwas was 10 Sekunden dauert, hier eben schlafen
    SplashOff()
    
    
    ; fertig.... es wurde für 10 Sekunden dein Text angezeigt

    EDIT:

    Ich würde davon abraten den Splashtext direkt in die Funktion einzubauen, da die Funktion Rekursion beinhaltet und sich selbst aufrufen kann. Außerdem müsste man auch im Fehlerfall ein splashoff vor dem entsprechenden return einbauen. Wesentlich einfacher und weniger Problematisch ist also die Variante in meinem sleep() Beispiel.

  • Skript beenden, wenn schon ein anderes mit seinem Namen läuft

    • misterspeed
    • 25. Februar 2016 um 20:51

    Nein das Script funktioniert auch so nicht, weil das Script sich selbst erkennt. Es wird also auch dann beendet, wenn nur eine Instanz davon gestartet wird. Deswegen gibt es ja die Funktion _Singleton() wie hier bereits richtig angemerkt wurde. Im Gegensatz zu processexists sollte Singleton im Übrigen auch dann funktionieren, wenn beide Instanzen auf verschiedenen Benutzeraccounts laufen und man keine Administratorrechte hat. In diesem Fall sieht man nämlich nur die Prozesse des eigenen Accounts, Singleton kann dies bei richtiger Nutzung umgehen.

  • Passwort über Script automatisch ändern

    • misterspeed
    • 25. Februar 2016 um 17:37
    Zitat von Xorianator

    nicht jeder lässt seinen Rechner zuhause 24/7 laufen

    Und? Hier wurde davon geredet das Passwort einmal am Tag zu ändern und nicht alle x Minuten rund um die Uhr. Das lässt sich problemlos über die Windows Aufgabenplanung realisieren. Selbst wenn der Rechner zum eigentlichen Ausführungszeitpunkt nicht online ist kann der Start automatisch nachgeholt werden.

    Davon aber mal abgesehen ist es völlig übertrieben sein Passwort bei jedem Login oder einmal täglich zu ändern. Sofern man ein halbwegs sicheres Passwort wählt und der betreffende Dienst nicht total diletantisch mit fehlerhaften Loginversuchen (z.B. kein effektiver Bruteforcing Schutz) oder Benutzerdaten in der Datenbank (z.B. Klartext Passwörter) umgeht reicht es völlig sein Passwort alle x Monate oder bei einem konkreten Anlass (z.B. Hack mit Zugang zur Datenbank) mal zu ändern. Außerdem ist ein Account für ein Onlinegame ja wohl ohenhin nicht wirklich wertvoll oder schützenswert.

  • Während Suche Splashtext anzeigen, Splashtext geht nicht mehr zu

    • misterspeed
    • 24. Februar 2016 um 18:23

    Wie soll splashoff() auch ausgeführt werden? Du bleibst für immer in deiner Schleife gefangen, weil deine Abbruchbedingung niemals erfüllt wird. Du schreibst zwar in dein Splashtext, dass die Suche läuft, das tut sie aber nicht, denn du machst rein garnichts in deiner Schleife. Es macht auch keinen Sinn den Splashtext tausendemale pro Sekunde in der Schleife zu aktivieren, das macht man wenn dann einmalig vor Beginn der Schleife. Wozu du gleich zwei Schleifen (while und do) mit der selben Abbruchbedingung brauchst ist mit auch nicht klar.

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™