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

Beiträge von alpines

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 22. Februar 2017 um 09:33

    Da sind einige Fehler im Code die ihn nicht mal lauffähig machen. Hast du von dem Code Teilt geändert / weggelassen als du ihn hochgeladen hast?
    Ich schätz mal das dein Script sich beendet weil er bis zum Case läuft aber dann crasht.

    @autoiter
    Man kann ja Scripte trotz Errors ausführen lassen und sie bei einem Error crashen lassen. Compile das mal, dann läuft das auch bis dahin wie er es beschreibt.

  • TV-Ton auf Boxen/Minianlage o.ä. - regelbar über Fernbedienung

    • alpines
    • 21. Februar 2017 um 20:22
    Zitat von BugFix

    Regelt die Lautstärkeänderung der Fernbedienung auch den Kopfhörerausgang?

    Im Normalfall schaltet ein Fernseher seine internen Lautsprecher ab und gibt nur noch auf den Externen aus. Die Lautstärke bleibt durch die Fernbedienung steuerbar.
    Um ehrlich zu sein solltest du mit deiner Mutter in einen Laden spazieren und einfach mal die Anlagen ausprobieren wenn sie nicht mehr so gut hören kann.

    Da es kein High-Definition-Ultra-Sound sein muss, denke ich das du mit stinknormalen 20/30€ Lautsprechern gut das erreichen wirst was du brauchst. Einziger Nachteil ist nur das die meisten Anlagen das selbe Verfahren beim AUX-out verwenden wie der Fernseher. Schließt du ein Headset an, verstummt der Ton über die Lautsprecher, aber du kannst ja einen AUX-Splitter nehmen.

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 19:44
    Zitat von looxis

    Danke, es hat geklappt.
    Habe zu dem ganzen jetzt testweise eine GUI erstellt mit Buttons usw.
    Problem ist jetzt nachdem ich ein Case ausgeführt habe z.B. Fahre den \\XXXXX Pc herunter geht das Programm zu,
    was muss ich ergänzen das es offen bleibt?

    Vielen Dank

    Das Script zu posten wäre ganz hilfreich.

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 15:23
    Zitat von Busti

    Gibts mittlerweile ein Sinnvolles Multithreading für AutoIt?

    Ja, du kannst tatsächlich mit AutoIt multithreaden. Dazu gabs schon genug Helden die das versucht haben, aber es läuft instabil und sollte deshalb vermieden werden.
    Wenn du wirklich parallel Sachen ausführen möchtest rate ich dir zu multiprocessing mit mehreren Scripten.

    Zitat von Busti

    Jetzt gibtsschon Objecte in Autoit, warum dann nicht auch echtes Multi-Threading

    Die Entwicklung der Sprache geht auch eher schleppend voran da viele Entwickler (meines Wissens nach) das Interesse verloren haben.

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 15:02
    Zitat von Busti

    Kann man in AutoIT nicht, die rechenlastigen aufgaben, an irgenteine C++ Bibliothek übergeben, und sich das Ergebnis holen?
    Ich mein, für AutoIT würde das wahnsinnig Sinn ergeben, da das langsame Script, einfach die 'Standart' aufgaben erledigt und die Hochkomplexen-Polygon-Muster die 3D Animiert sind und sich bewegen, lässt man chillig über die C++ Bibliothek ausführen und geniesst voll speed- bei easy AutoIt Code?

    BugFix hat es schon angeschnitten. Mit AutoIt hat man die Möglichkeit ASM-Code auszuführen oder DLLs zu callen. ASM ist die schnellste Variante, denn man ruft CallWindowProc (glaube ich) auf und führt den ASM Code aus, dieser wird rasend schnell ausgeführt da er in Maschinensprache direkt vorhanden ist und nicht als AutoIt Code interpretiert werden muss was ich dir beim nächsten Punkt erläutern werde.

    Ich hatte vor einer Weile ein Tutorial geschrieben womit man C# DLLs in AutoIt callen kann um rechenintensive Aufgaben zu verlagern. Das ganze klappt mit C++ auch!
    Man erstellt eine DLL die z.B. etwas sehr aufwändiges berechnet und nutzt sie mit AutoIt indem man DllCall verwendet. Der ausgeführte Code liegt in Maschinensprache vor und muss nicht interpretiert werden.

    Zitat von Busti

    Warum ist AutoIt überhauptso god damn slow? hab gehört hat mit dem Aufbau und dem Linearen Scriptablauf zutun?
    Soweit hab ich mich dann noch nicht über AutoIt informiert, bzw mit jemand darüber geredet, der den Anschein macht das auch wirklich alles zu verstehen. Was wichtig ist, man will ja auch kein Mist abspeichern.

    AutoIt ist deshalb so langsam, weil es eine interpretative Sprache ist. AutoIt-Code wird NICHT zu Assembler konvertiert und in Maschinencode in eine Exe-Datei gespeichert, sondern eine AutoIt-Exe besteht immer aus dem Interpreter und dem AutoIt-Script.

    Der Interpreter interpretiert zur Laufzeit des Scriptes die Befehle und führt die entsprechenden Routinen aus, und du kannst dir vorstellen das das ganze dann deutlich langsamer ist wenn man das mal in einem Vergleich zu C++ anschaut:

    am schnellsten: 1) Hardcore Assembler, beste menschenmögliche Optimierung ==== übersetzen ====> Maschinencode
    schnell: 2) C++ Programm (main.cpp) ==== Compiler übersetzt in Assembler und optimiert so gut es kann ====> Maschinencode
    langsam: 3) AutoIt Script (main.au3) ==== C++ Interpreter interpretiert das Script zur Laufzeit und führt entsprechende Routinen aus ====> Maschinencode des Interpreters nur vorhanden

    Du siehst also das AutoIt niemals so schnell sein kann wie ein "normales" C++ Programm, denn das Script wird interpretiert und es liegt nicht als Maschinencode vor.
    Die Optimierung des Interpreters bestimmt im großen und ganzen die Geschwindigkeit deines Scriptes.

    Aber das Designziel von AutoIt war es nie Routinen so schnell wie möglich abzuarbeiten sondern eine Scriptplattform zu bieten mit der man sehr schnell gute Resultate erreichen kann.
    Schau dir mal an wie man in C++ oder C# z.B. globale Hotkeys setzt. Das ist ein Albtraum!! In AutoIt gibts dafür HotKeySet().

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 14:06
    Zitat von Busti

    Aber wegen der Ineffizienz, stimm ich dir voll und ganz zu.

    Die musst du aber in einen gewissen Kontext setzen. Wenn mir das Kopieren eines Objektes 0.0000005 Sekunden Zeit in Anspruch nimmt und ich beim ByRef die Veränderungen rückgängig machen muss um das ursprüngliche Objekt zu haben sieht das ganze schon wieder ganz anders aus.

    In Anwendungen die sehr rechenlastig sind kommt man um ByRef eigentlich nicht rum, da sich diese Zeit zum kopieren deutlich vergrößert und einen nennenswerten Vorteil bringt.
    In AutoIt (was für meist nicht rechenintensive Aufgaben genutzt wird) ist es eher stil- und komfortbasiert.

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 13:53
    Zitat von Busti

    StringReplace( $String, "$sTarget", $sTarget )

    Das ist aber vollgas am Ziel vorbei meiner Meinung nach. Bei deinem Parser verstehe ich das ja vielleicht noch aber nicht in einem Script wo man da fix per Hand selber lösen kann.
    Zu so einer Situation sollte es ja sowieso nicht kommen wenn man am coden ist.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 21. Februar 2017 um 13:14
    Zitat von Busti

    So hatt ichs mir auch gedacht. Aber neben den gespaarten Speicherplatz müsste doch auch Geschwindigkeit++ wahrzunehmen sein?

    Das ist ja der nette Nebeneffekt davon das man das ursprüngliche Objekt verwendet. Es wird keine Zeit damit verschwendet eine neue Kopie anzulegen indem man neuen Speicherplatz allokiert und die Daten rüberkopiert sondern direkt mit dem Original arbeitet. Der Nachteil ist nur das man dann keine Kopie vom ursprünglichen Zustand des Originals mehr hat, wenn das aber egal ist kann man sich so oft es geht ByRefs um die Ohren hauen.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 21. Februar 2017 um 12:59
    Zitat von Busti

    Warscheinlich is der Vorteil von ByRef, das es schneller geht, da nix erstellt werden muss sondern immer weiterverarbeitet, richtig?

    Wie der Name sagt wird statt einer Kopie eine Referenz verwendet.
    Das ursprüngliche Objekt das in die Funktion gegeben wird wird maniupuliert und es muss kein neuer Speicherplatz allokiert werden um eine Kopie (ByValue) zu erstellen.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 21. Februar 2017 um 12:58
    Zitat von Busti

    Viel spaß beim lachen haha

    :rofl: Es ist noch kein Meister vom Himmel gefallen.

    \s ist ein Bezeichner für Whitespaces. Da sind z.B. Leerzeichen und Tabs inbegriffen.
    (\s{1}) matcht \s einmal.
    | hast du richtig erkannt, das ist ein Oder. Beispiel: (aber|doch) würde aber oder doch matchen im Pattern.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 21. Februar 2017 um 12:29
    Zitat von Busti

    Versteh mich nicht falsch, es wär echt cool, natürlich nur falls du Zeit und lust hast, mir den PATTERN zu erklären....

    Es ist eine Kunst regexen zu können. Schau dir diverse Tutorials an und probier dich mal an ein paar Patterns.
    Als Liveparser kann ich dir regex101 empfehlen, da dieser standardmäßig die selbe RegEx-Engine verwendet wie AutoIt.

  • Neustart eines Remote Rechners mit Inputbox

    • alpines
    • 21. Februar 2017 um 12:27
    Zitat von autoiter

    Du hast nicht die Variable $sTarget im Befehl, sondern den String $sTarget..

    Es ist genauso wie autoiter es beschreibt. Wenn du den Inhalt einer Variable nutzen/manipulieren willst darfst du sie nicht innerhalb von String-Literalen (" " oder ' ') stehen haben.

    Wenn du das allerdings so machen möchtest um nicht immer die Strings zu beenden und für Variablen neu zu starten, kannst du auch den Modus 'ExpandVarStrings' in der AutoItSetOption auf 1 setzen um z.B. "Hallo, ich heiße $sMeinName$" als Hallo, ich heiße blubb auszugeben.

  • Autoit String nach C# übergeben [erledigt]

    • alpines
    • 21. Februar 2017 um 11:42

    Zuerst würde ich probieren ob AutoIt oder C# das Handle nicht richtig schließt. Bei AutoIt würde ich mit FileOpen und FileClose arbeiten statt nur mit einem FileWrite.

    Es würde sich doch anbieten in C# einen Speicherplatz zu allokieren dessen Adresse dann in eine Datei schreibst um mit AutoIt und NomadMemory.au3 in den C# Prozess den String zu schreiben (sofern er nicht allzugroß ist). (C# string Variable deklarieren und z.B. 2 kB Text reinschreiben. Adresse in Datei speichern, mit AutoIt und NomadMemory in die Adresse speichern und Ende des Strings kennzeichnen.)

    Andernfalls kannst du eine GUI erstellen (mit AutoIt) und mit C# ein Inputcontrol / Label auslesen und den String dann verarbeiten.
    Du könntest auch TCP lokal verwenden aber das würde ich nicht empfehlen um ehrlich zu sein, der Aufwand lohnt sich nicht.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 21. Februar 2017 um 09:49
    Zitat von Busti

    Hoffe es ist okay, das ich neuerungen in einen neuen Post schreibe, falls nicht, bitte einfach drauf hinweisen, dann strukturier ich alles um.

    Kannst du gerne machen, würde dir aber raten im Hauptpost noch einen kompletten Changelog zu führen.

  • Drag & Drop in Inputfeld geht nicht mehr?

    • alpines
    • 20. Februar 2017 um 21:18

    Tatsächlich, wenn man den Extended Style für die GUI setzt ($WS_EX_ACCEPTFILES) dann funktioniert das ganze auch schon wieder.

  • mehrere Textdateien zusammenfügen

    • alpines
    • 20. Februar 2017 um 15:50

    In etwa so:

    Code
    $aList = _FileListToArray()
    
    
    For $i = 1 To $aList[0]
    	FileWrite("neue datei.txt", FileRead($aList[$i]) & @CRLF)
    Next


    Du kannst (sofern du dir nicht sicher bist) mal mit _ArrayDisplay aus der Array.au3 das $aList-Array ausgeben lassen um zu schauen ob du auch die Datei auflistest die du haben willst.

  • Drag & Drop in Inputfeld geht nicht mehr?

    • alpines
    • 20. Februar 2017 um 12:59

    Scheint bei mir auch nicht zu gehen. Nimm stattdessen lieber den OnEventMode mit $GUI_EVENT_DROPPED ung @GUI_CtrlId.

  • mehrere Textdateien zusammenfügen

    • alpines
    • 20. Februar 2017 um 12:56
    Zitat von daMeier

    Jetzt noch eine for schleife die anhand der Dateinamen aus dem Array eine txt Datei mit deren Inhalten erstellt...

    Ich denke das ist machbar. _FileListToArray gibt dir ja im Index [0] zurück wie viele Funde enthalten sind also kannst du das mit einer For-Schleife und FileWrite verknüpfen.

  • Warteliste für mehrere Programme

    • alpines
    • 20. Februar 2017 um 11:46
    Zitat von Sonderbaar

    Nehmen wir mal an, ich rufe mir ein CAD-Programm auf (über run/runwait und vorherigem erstellen einer Flag-Datei) mit einem bestimmten Bauteil, will dann das Bauteil in eine bestimmte Position drehen und dann davon mit sagen wir einem Snippingtool (ebenfalls über run/runwait und flagdatei) eine festdefinierte Position abfotografieren. Da man unter Umständen 500 Bauteile hat, die letztlich genauso "aufgenommen" (abfotografiert) werden sollen, macht es durchaus Sinn dafür ein Script zu schreiben..

    Ich bin mir ziemlich sicher das @autoiter die Situation beschreibt wenn man selber die Skripte geschrieben hat. Wenn man das getan hat, so kann man alles in ein Script packen und sich die Mühe sparen. Sind es Fremdprogramme kann man ShellExecuteWait/RunWait verwenden.

    Da hier aber die Programme offenbar alle nacheinander abgearbeitet werden sollen ist es doch banane jetzt darüber so eine Diskussion zu führen ob man die Skripte (falls man überhaupt welche hat) zusammenzuführen oder nicht.
    Einfach ein Script schreiben und alle Programme mit Wait nacheinander starten. Fertig.

  • mehrere Textdateien zusammenfügen

    • alpines
    • 20. Februar 2017 um 10:56
    Zitat von daMeier

    ich bin im Forum und in der AutoIT welt neu und habe gleich eine Frage.

    Es heißt AutoIt und nicht "AutoIT" ;)

    Schau dir mal den Befehl _FileListToArray aus der File.au3 an. Damit kannst du dir alle Dateien mit bestimmter Endung in ein Array abspeichern lassen.
    Liegen sie einmal im Array nimmst du einfach eine For-Schleife und gehst das Array durch und schreibst in die neue Datei rein.

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™