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

  • Wie frage ich einen USB Port ab? Will Tastendruck eines Presenters verwenden.

    • misterspeed
    • 4. April 2015 um 10:20

    Vermutlich wird der Presenter ganz normal als Maus eingebunden? In dem Fall ist _IsPressed(...) dein Freund.

  • Programm startet zu häufig!! -- $cmdline fehler?

    • misterspeed
    • 4. April 2015 um 09:36

    Ich verstehe sowieso nicht warum er ispressed verwendet um einen Klick auf die Buttons zu erkennen. Ich würde den ganzen murks raushauen und im guigetmsg switch case alle Buttons mit dem Event vergleichen:

    [autoit]


    While 1
    $guimsg = GUIGetMsg()
    Switch $guimsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case else
    If IsArray($_SCRIPT_COUNT_EXEFILE) Then
    For $i = 1 To $_SCRIPT_COUNT_EXEFILE[0]
    if $_SCRIPT_GUI_BUTTONS[$i] = $guimsg then
    ShellExecute($_SCRIPT_FOLDER & guictrlread($guimsg) & ".exe", " -start")
    exitloop
    endif
    Next
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Updater

    • misterspeed
    • 10. März 2015 um 21:27
    Zitat


    Hi,
    DomainRep is a new feature of Avast, so let me explain a bit. It blocks EXE files downloads if these conditions are *all* met:
    1. The file is not prevalent enough, ie. not enough Avast users launched the file yet,
    2. The domain is not prevalent enough, ie. not enough Avast users downloaded (any) EXE files from the domain yet,
    3. The file is not signed or Avast does not trust the signature.

    Once
    one of these conditions are not met anymore, Avast will stop flagging
    the download. In other words, just wait until more people try to
    download the file, or digitally sign your files :-).
    Honza

    Alles anzeigen

    Liegt schlichtweg an Avast. Mehr dazu kannst du hier nachlesen:
    https://forum.avast.com/index.php?topic=163221.0

    Hab den Thread selbst nicht gelesen, evtl. findet man dort aber weitere Tipps / Lösungen zum Problem...

  • Eigene Syntax Highlighting

    • misterspeed
    • 10. März 2015 um 11:54

    Verwende ein richedit anstatt einem input, dann kannst du soweit ich mich erinnere jedes einzelne Zeichen nach belieben formatieren.

  • Permanente Zustandsabfrage / Schleifen SOFORT verlassen

    • misterspeed
    • 10. März 2015 um 10:17

    Wenn man mit Autoit echte zeitgleiche Ausführung realisieren will führt in der Regel kein Weg an multiplen Prozessen vorbei. In deinem Fall könntest du z.B. einen Hauptprozess nutzen, welcher nichts anderes macht als die gedrückten Tasten auszuwerten und die Funktionen die wirklich etwas (zeitintensives) tun in extra Scripte auslagern. Das Hauptscript nutzt dann run(...) um die anderen Scripte auszuführen und sofern keine komplexere Kommunikation zwischen den Scripten realisiert wird processclose(...) um diese abzubrechen. Daten wie z.B. eine globale statische Zählervariable oder die Prozess IDs von paralell laufenden Prozessen könnte man per Parameter an die untergeordneten Prozesse weitergeben.

    Wenn man das richtig machen will muss man sich aber auch mit den verschiedensten Möglichkeiten zur Inter Prozess Kommunikation beschäftigen.

  • Runs Befehl und ich steh auf dem Schlau

    • misterspeed
    • 9. März 2015 um 21:10
    Zitat von SCCSSF

    Mit ConsoleWrite habe ich es nicht laufen bekommen.

    Was meinst du damit? Warum sollte es damit nicht laufen?
    Du weist schon was consolewrite(...) macht oder? Wenn nicht lies bitte in der Autoit Hilfe nach.

    Andy wollte dir mit seine Beispielcode in erster Linie verständlich machen, dass man Debugging betreiben sollte wenn etwas nicht wie gewünscht funktioniert. Bevorzugt macht man das schon vorher wenn man sich unsicher ist welche Konsequenzen die reale Code Ausführung haben könnte. Und genau dafür verwendet man sinnvollerweise meistens consolewrite() bevor man eine Zeichenkette an eine Funktion übergibt die evtl. richtig Scheiße bauen kann wenn die Zeichenkette fehlerhaft ist.

  • FlashObjekt Problem!

    • misterspeed
    • 8. März 2015 um 13:51

    Funktioniert hier auch einwandfrei. Vermutlich wurde Flash via Firefox heruntergeladen / installiert? Für das COM Objekt benötigst du denke ich die ActiveX Version, welche nur beim Zugriff über den Internet Explorer von Adobe augeliefert wird.
    Hier kannst du alle verfügbaren Varianten herunterladen: https://get.adobe.com/de/flashplayer/otherversions/

    Ansonsten bleibt noch der übliche Verdächtige... ein übervorsichtiger Virenscanner.

  • Runs Befehl und ich steh auf dem Schlau

    • misterspeed
    • 6. März 2015 um 19:44
    Zitat von SCCSSF
    [autoit]

    run ("c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /t "$folder4&$t&"_test.pdf" "Printer","",)

    [/autoit]

    Da fehlt nicht nur ein &, da fehlen evtl. auch Backslashe und definitiv ein Leerzeichen und auch Anführungszeichen die Pfade oder Parameter mit Leerzeichen umschließen, wenn du das ausführen willst sollte dich Scite erstmal mit Syntaxfehlern bombardieren.

    So dürfte das eher korrekt sein:

    [autoit]

    run('"c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"' & ' /t "' & $folder4 & $t & '_test.pdf"' & ' Printer')

    [/autoit]

    Jenachdem ob dein Pfad mit Backslash endet oder nicht könnte auch das hier korrekt sein:

    [autoit]

    run('"c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"' & ' /t "' & $folder4 & '\' & $t & '_test.pdf"' & ' Printer')

    [/autoit]

    Und um das ganze übersichtlicher und leichter austauschbar zu machen würde ich cmdline Aufrufe eher komplett aus Variablen zusammensetzen:

    [autoit]


    $sProgramm = "c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"
    $sFile = $folder4 & $t & "__test.pdf"
    $sParameter = "Printer"

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

    run('"' & $sProgramm & '" "' & $sFile & '" ' & $sParameter)

    [/autoit]


    Beachten sollte man immer, dass Pfade und Dateinamen die dynmaisch verändert werden auch Leerzeichen enthalten könnten. Sofern das der Fall ist muss man Anführungszeichen verwenden. Deswegen ist es wesentlich sicherer wenn man diese grundsätzlich verwendet.

  • Exe startet nicht im Vordergrund/Vollbild (ohne explorer.exe)

    • misterspeed
    • 27. Februar 2015 um 18:46
    Zitat von Kanashius

    Für Prozesse musst dus so nehmen wies im Taskmanager unter Prozessen steht. Also mit dem " *32".
    (Kannst du auch leicht prüfen indem du ProcessList() aufrufst und dir das Array anzeigen lässt.

    Erzähl keinen Unsinn. Processclose erwartet entweder den Namen des Prozesses (der name der exe Datei) oder die Prozess ID. Das "*32" ist lediglich eine optische Anzeige im Taskmanager um 32bit von 64bit Prozessen unterscheiden zu können. Für processclose spielt das aber keine Rolle.

  • sum() liefert falsche werte

    • misterspeed
    • 27. Februar 2015 um 18:33
    Zitat von Kanashius

    @ProgrammingDonkey Es geht hier um SQL, nicht um AutoIt ;)

    Natürlich gehts hier um Autoit!
    Der Threadstarter möchte das rechnerisch korrekte SQL Ergebnis schlichtweg optisch anderst (mit 2 Dezimalstellen) in seiner Ausgabe darstellen. Dafür wurde die Funktion stringformat(...) erfunden.

    [autoit]


    $test = StringReplace(StringFormat("%.2f", 20.5),".",",")
    ConsoleWrite($test & @CRLF)
    $test = StringReplace(StringFormat("%.2f", 20.55),".",",")
    ConsoleWrite($test & @CRLF)
    $test = StringReplace(StringFormat("%.2f", 20.555),".",",")
    ConsoleWrite($test & @CRLF)
    $test = StringReplace(StringFormat("%.2f", 20),".",",")
    ConsoleWrite($test & @CRLF)

    [/autoit]
  • Script Pause

    • misterspeed
    • 22. Februar 2015 um 17:02
    Zitat von heyhey83

    Mit Schleife meinst du

    [autoit]

    While if traygetmsg() = $idExit then exit WEnd

    [/autoit]

    Wenn du den onEvent Mode verwendest natürlich nicht. Benutz dann eben das hier:

    [autoit]

    TrayItemSetOnEvent(...)

    [/autoit]
  • Script Pause

    • misterspeed
    • 22. Februar 2015 um 15:13

    Versteh dein Problem grad nicht...

    Mit

    [autoit]

    opt(TrayAutoPause,0)

    [/autoit]


    deaktiviert man, dass das Script pausiert wenn man auf das Trayicon klickt. Das hat erstmal rein garnix mit den verfügbaren Menüeinträgen zu tun.

    Mit

    [autoit]

    opt(TrayMenuMode,0)

    [/autoit]


    macht man exakt garnichts, denn das ist das Standardverhalten, sprich du hast sowohl einen Eintrag für Pause, als auch einen für Exit.

    Mit

    [autoit]

    opt(TrayMenuMode,1)

    [/autoit]


    entfernt man beide Standardeinträge, das Menü ist nun leer.

    Mit

    [autoit]

    $idExit = TrayCreateItem("Mein eigenes Beenden")

    [/autoit]


    erstellt man einen eigenen Menüeintrag um das Script zu beenden.

    Mit

    [autoit]

    if traygetmsg() = $idExit then exit

    [/autoit]


    in deiner GUI Schleife kannst du letzlich auf den Klick im Traymenü reagieren und dein Script beenden.

    Steht aber auch alles in der Hilfe zu

    [autoit]

    autoitsetoption()

    [/autoit]


    bzw. in den Hilfeinträgen und Beispielen der anderen Trayfunktionen.

  • Aktuelle Java-Runtime ermitteln

    • misterspeed
    • 22. Februar 2015 um 07:59

    Man muss da noch mehr beachten. Zum einen ist es möglich sowohl Java 7 als auch Java 8 paralell installiert zu haben, zum anderen kann man auch noch unterschiedliche Java Versionen für 32 und 64bit installiert haben. Anstatt sich die Mühe zu machen das alles zu prüfen ist es vielleicht einfacher regelmässig die neueste Version in 32 und 64bit auszurollen, unabhängig davon ob diese evtl. schon manuell installiert wurde. Der Setup erkennt denke ich selbsständig wenn Java bereits in der aktuellen Version installiert ist und bricht dann einfach ab. Müsstest du aber natürlich testen.

    Damit dein Clientscript das nicht unnötig oft wiederholt könntest du lokal auf dem Client eine Logdatei anlegen in der das Clientscript nachschauen kann ob es bereits das letzte Update vom Rollout Server installiert hat.

    Natürlich kannst du aber auch wie oben beschrieben vorgehen und sämtliche Registrykeys zerlegen und prüfen.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • misterspeed
    • 15. Februar 2015 um 16:58
    Zitat von BugFix

    Dass im Protokoll als Gegenstelle "mail.autoitscript.com" auftaucht, ist evtl. auf einen Alias zurückzuführen (reine Vermutung).

    Alias ist der falsche Begriff dafür. mail.autoitscript.com ist der Reverse DNS Eintrag für die Server IP auf der neben der Webseite autoitscript.com scheinbar auch noch ein Mail Server läuft. Da es für Mailserver wichtig ist einen korrekten Reverse DNS Eintrag zu haben wurde der wohl so gesetzt.

    Code
    nslookup autoitscript.com
    Name:    autoitscript.com
    Address:  87.106.181.57
    
    
    nslookup 87.106.181.57
    Name:    mail.autoitscript.com
    Address:  87.106.181.57

    Sprich wenn das Analysetool die IP mit der da kommuniziert wurde zurückauflöst wird es mail.autoitscript.com anzeigen, auch wenn es sich hier wohl dann wie vermutet nur um den Download der sqlite.DLL vom Webserver handelt und nicht um Emailkommunikation.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • misterspeed
    • 15. Februar 2015 um 10:43

    Ich hab das nicht selbst nachgeprüft und mich auf die Vermutung von Bugfix gestützt. Ich verwende auch noch eine alte Autoit Version und kann sowieso nichts zu den aktuellen Versionen sagen. Allerdings könnte ich mir bei der Kommunikation mit mail.autoitscript.com auch vorstellen, dass das lediglich in Alpha oder Beta Versionen von Autoit passiert. Aber auch das wäre nur eine Vermutung.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • misterspeed
    • 13. Februar 2015 um 18:49
    Zitat von BugFix

    wenn nicht wird eine Internetverbindung aufgebaut und diese Dll vom AutoIt-Server heruntergeladen.

    Was ziemlich unklug ist... zum einen dürften diverse Virenscanner Alarm schlagen wenn eine Software einfach mal so zur Laufzeit eine DLL aus dem Internet nachlädt, zum anderen ist das geradezu eine Einladung Schadsoftware auf den Servern von autoit.com zu platzieren.

    Ich stimme dem Rat von Bugfix also zu, dass es sinnvoller ist die DLL selbst beizulegen. Nur so kann man sicherstellen, dass es sich um eine originale und unveränderte DLL handelt. Davon ab hat man so auch eine Garantie die richtige zur UDF passende Version der DLL zu nutzen.

  • Datei auf Wechseldatenträger starten

    • misterspeed
    • 24. Januar 2015 um 17:56

    Naja das ist schon richtig so. Ein entfernbares Gerät (removable) ist nicht mehr aktiv im System wenn er entfernt wurde. Das CD-Rom oder DVD-Laufwerk verbleibt aber im System wenn man die CD/DVD auswrift und ist somit auch kein beliebig entfernbares Gerät. Das CD/DVD Laufwerk behält im übrigen auch seinen Laufwerksbuchstaben und bleibt ansprechbar (z.B. eject), völlig unabhängig davon ob ein Datenträger eingelegt ist oder nicht.

  • Projekt-Technikerarbeit

    • misterspeed
    • 23. Januar 2015 um 21:09

    Die Antwort auf deine Frage lautet... ja kann man mit Autoit realisieren. Da es dir sowieso nicht um produktiven Einsatz geht brauchst du lediglich die TCP Funktionen von Autoit. Sinnvollerweise realisiert man sowas durch einen zentralen Server und mehrere Clients (deine Stationen) die eine Verbindung zum Server halten oder in Intervallen aufbauen um abzufragen ob es neue Aufgaben oder Statusänderungen gibt. Bei einer permanenten Verbindung kann der Server die verbundenen Clients sofort bei Änderungen informieren.

    Wenn du in deiner Abschlussarbeit etwas glänzen willst solltest du aber auch die hier genannten Sicherheitsaspekte berücksichtigen und dir z.B. über verschlüsselte Datenübertragung Gedanken machen und ggf. auch noch Wege suchen um Pager oder Telefonanlagen mit in den Kommunikationsweg eintzubinden. Letzteres solltest du zumindestens im theoretischen Teil der Arbeit nicht unberücksichtigt lassen, da in der Praxis ja anscheinend eher auf telefonischen Kontakt gesetzt wird.

  • PixelGetColor - 60 Pixel in 1.8 Sekunden?

    • misterspeed
    • 18. Januar 2015 um 17:29

    Davon mal abgesehen gibt es für mich keinen sinnvollen Grund Pixel auf dem Desktop auszulesen. Was soll damit erreicht werden? Ich würde wetten es gibt zig bessere und schnellere Möglichkeiten das Ziel zu erreichen.

  • String umformen

    • misterspeed
    • 9. Januar 2015 um 22:05

    Dann schau doch einfach in die string.au3 und nutze eine modifizierte _stringbetween() Funktion die dir das zurückgibt was du willst.

    [autoit]


    Func _MyStringBetween($s_String, $s_Start, $s_End, $v_Case = -1)

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

    ; Set case type
    Local $s_case = ""
    If $v_Case = Default Or $v_Case = -1 Then $s_case = "(?i)"

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

    ; Escape characters
    Local $s_pattern_escape = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
    $s_Start = StringRegExpReplace($s_Start, $s_pattern_escape, "\\$1")
    $s_End = StringRegExpReplace($s_End, $s_pattern_escape, "\\$1")

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

    ; If you want data from beginning then replace blank start with beginning of string
    If $s_Start = "" Then $s_Start = "\A"

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

    ; If you want data from a start to an end then replace blank with end of string
    If $s_End = "" Then $s_End = "\z"

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

    Local $a_ret = StringRegExp($s_String, "(?s)" & $s_case & $s_Start & "(.*?)" & $s_End, 3)

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

    If @error Then Return SetError(1, 0, 0)
    Return $a_ret[0] ; <----------- gibt kein array mehr zurück, sondern den ersten Treffer im Array
    EndFunc ;==>_StringBetween

    [/autoit]

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™