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

  • disable local inputs

    • misterspeed
    • 2. Juni 2013 um 19:01

    Keine Ahnung wie das bei Laptops genau läuft, aber prinzipiell sollte im Gerätemanager sowohl das Touchpad als auch die Tastatur als eigenständige Eingabegeräte vorhanden sein. Diese sollten beide deaktivierbar sein, wie so ziemlich jedes Gerät. Das wäre jedenfalls mein Lösungsansatz. Einfach beide temporär nicht benötigten Geräte deaktivieren bzw später wieder aktivieren.

    Anscheinend gibt es von MS das cmdline Tool "devcon", welches man hierfür verwenden könnte. Das selbe lässt sich aber sicher auch direkt per Autoit realisieren.

  • Edit immer so groß wie GUI

    • misterspeed
    • 2. Juni 2013 um 13:30

    Vergiss meinen Ansatz, das macht es höchstens schlimmer, weil dann der Scrollbar Balken dauernd sichtbar wird und flackert. Mir ist aber noch etwas anderes aufgefallen. Deine resize Funktion wird öffter ausgeführt als notwendig, auch wenn neue höhe gleich alte höhe wird das Fenster resized. Hab das mal entsprechend geändert:


    [autoit]


    Func _CalcEditSize()
    Local $aPos_fenster
    $aPos_fenster = WinGetPos($hGui)

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

    Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
    $iEditH = $iCnt * $iFontHeight
    If $iEditH > $iHoehe_min Then
    $newH = $iEditH + $iFontHeight + 45
    If $newH = $aPos_fenster[3] Then Return ; ohne diese Zeile wird deine Funktion auch ausgeführt wenn neue höhe = alte höhe, siehe consolen output
    ConsoleWrite($newH & " --> " & $aPos_fenster[3] & @CRLF)
    $test = _GUICtrlEdit_BeginUpdate($hEdit)
    ConsoleWrite("return of begin update: " & $test & " / errorcode: " & @error & @CRLF) ; ??????????? scheint nicht zu klappen ???????????
    WinMove($hGui, "", $aPos_fenster[0], $aPos_fenster[1], $aPos_fenster[2],$newH)
    _GUICtrlEdit_EndUpdate($hEdit)
    EndIf
    EndFunc ;==>_CalcEditSize

    [/autoit]

    Dann hatte ich den Gedanken, dass BeginUpdate für das Editcontrol evtl. ein Flackern verhindern könnte, jedoch scheint die Funktion immer False zu liefern und somit wirkungslos zu sein, ich habe keine Ahnung warum.

  • Edit immer so groß wie GUI

    • misterspeed
    • 2. Juni 2013 um 00:33

    Naja so wie ich das verstehe änderst du bei jedem Tastendruck die GUI / edit Größe. Beim Dauerdrücken wird die Funktion also entsprechend oft aufgerufen, was man dann als Flackern wahrnimmt. Verhindern könnte man das z.B. durch einen simplen timer, welche eine Aktualisierung vorübergehnd unterbindet (z.B. mind 20ms seit der letzten Aktualisierung). Unterdrückte Aktualisierungen müssen durch eine Flag Variable vermerkt werden. Adlibregister (oder eine if Bedingung in der Hauptschleife) könnte man dann nutzen um bei gesetztem Flag eine nachträgliche Aktualisierung durchzuführen, ansonsten würde die letzte notwendige Aktualisierung evtl. verloren gehen.

  • Handyzugriff mit AutoIt

    • misterspeed
    • 1. Juni 2013 um 14:29

    Öhm es ging hier denke ich um direkten Anschluss via USB, nicht um Zugriff übers Netzwerk, was aber prinzipiell durchaus auch eine Lösung wäre. Das erfordert aber meiner Meinung nach, dass auf dem Handy eine SMB Freigabe existiert, oder eben vergleichbare Serverdienste laufen (z.B. FTP Server). Beides birgt aber Risiken, da dies prinzipiell auch Zugriffe ohne physikalische Verbindung erlaubt. Standardmässig dürfte sowas auf keinem Smartphone aktiviert sein, mein Nexus 4 ist jedenfalls weder per HTTP noch über den Explorer (SMB) erreichbar, könnte man wohl höchstens über entsprechende Apps nachrüsten. Obs solche Apps für Symbian gibt wäre die nächste Frage...

  • Handyzugriff mit AutoIt

    • misterspeed
    • 31. Mai 2013 um 18:35

    Ich seh zwar in deinem Script beim überfliegen kein fileexists oder fileread, aber ich gehe mal davon aus du willst auf die Daten des Gerätes zugreifen. Dein Hauptproblem hierbei ist, dass das Geräte nicht als Wechseldatenträger/Speichermedium eingebunden wird, sondern als Medienwiedergabe Gerät. Somit ist ein direkter Dateizugriff auch nicht möglich. Entweder du stellst die Art der Verbindung auf dem Handy um oder du musst schaun wie man über den Treiber Zugang bekommt. Sehr wahrscheinlich existieren entsprechende Schnittstellen zur Kommunikation, andernfalls könnte Windows selbst auch keine Daten des Gerätes anzeigen / verändern. Einfacher ist es aber mit Sicherheit wenn das Handy sich gleich als Speichermedium anmeldet.


    Was dein Script angeht:
    So wie ich das überflogen habe soll das Script erstmal nur das Anschließen des Gerätes erkennen und dir Daten darüber liefern, was schonmal ein wichtiger Schritt wäre. Du hast leider nicht geschrieben ob das soweit funktioniert und was dir die ganzen Konsolenausgaben im Script liefern.

  • Zeilenweises Löschen in Textdatei: A bis B

    • misterspeed
    • 31. Mai 2013 um 18:05

    Ich versteh zwar nicht warum du das unbedingt in 2 separaten Schritten machen willst, wenn es auch mit einem einzigen Schleifendurchlauf ginge (performanter), aber hier noch ein paar Anmerkungen zu deinen Fragen:


    [autoit]


    _ArrayDelete($which, 0) ; veraltete Größenangabe löschen (geht das auch einfacher?)

    [/autoit]

    Ja, du kannst es auch einfach bleiben lassen diesen Index zu löschen. Da du im 2. Schritt ohnehin eine Kopie des Arrays machst und den Wert aus Index 0 nicht verwendest, sondern vorbildlicherweise gleich "ubound" verwendest genügt es wenn du einfach erst ab Index 1 statt 0 anfängst zu "kopieren":

    [autoit]


    Func ParseArray($which)
    Local $retArr[UBound($which)]
    Local $j=0
    For $i=1 To UBound($which)-1 ; geändert...

    [/autoit]


    Zitat

    Ein Punkt: _FileWriteFromArray() scheint den Array mit abschließendem/redundantem Zeilenumbruch als Datei zu schreiben.
    Das möchte ich nicht! Gibt es eine Möglichkeit, das zu verhindern?
    Bei meinem allerersten FileRead-Entwurf ließ sich das mit StringRegExpReplace beheben...

    Sofern du filewritefromarray verwenden willst kannst du das nicht ändern. Du könntest aber anstatt mit einem Ergebnis Array zu arbeiten auch gleich einen verketteten String erzeugen und diesen selbst mit filewrite schreiben, filewritefromarray macht im Prinzip genau das, du sparst dir dabei sogar einen zusätzlichen Array Durchlauf und kannst auch selbst beeinflußen ob am Ende noch ein Zeilenumbruch landet oder nicht.

    Hier die modifizierte Fassung:

    [autoit]

    #include <Array.au3>
    ;...
    $NewFileArr = StripArray($FileArr)
    $sResult = ParseArray($NewFileArr)
    $hFile = fileopen(@ScriptDir & "\output.ini",2+8) ; Datei anlegen und sofern vorhanden alten Inhalt löschen
    filewrite($hFile,$sResult)
    fileclose($hFile)
    ;...
    Func ParseArray($which)
    Local $sReturn = ""
    ; Local $j=0
    For $i=0 To UBound($which)-1
    $which[$i] = StringRegExpReplace($which[$i], '(?m)^;\s?(Fanboy.+)\s(\(.+\))', "# \1 (Iron)")
    $which[$i] = StringRegExpReplace($which[$i], '(?m)^;\s?(?=Updated)', "# ")
    $which[$i] = StringRegExpReplace($which[$i], '(?m)^;.*', "")
    $which[$i] = StringRegExpReplace($which[$i], '(?m)^prioritize.*', "")
    $which[$i] = StringRegExpReplace($which[$i], '(?m)^\*?:\/\/.+', "")
    $which[$i] = StringRegExpReplace($which[$i], '\*', "")
    $which[$i] = StringRegExpReplace($which[$i], '\[.+\]\s?', "")
    $which[$i] = StringRegExpReplace($which[$i], '\&amp;?', "&")
    If StringRegExp($which[$i], '(?m)^$', 0) Then
    ContinueLoop
    EndIf
    $sReturn &= $which[$i] & @crlf ; verkettet jede Zeile mit abschließendem Zeilenumbruch
    ; $retArr[$j]=$which[$i]
    ; $j+=1
    Next
    ; ReDim $retArr[$j]
    Return stringreplace($sReturn,@crlf,"",-1) ; entfernt das letzte Auftreten eines Zeilenumbruchs im String
    EndFunc

    [/autoit]
  • Fenster Systemsteuerung\Hardware und Sound\Energieoptionen\Energiesparplaneinstellungen bearbeiten öffnen

    • misterspeed
    • 31. Mai 2013 um 10:12

    Also ganz ehrlich ich würd mich an deiner Stelle schlau machen, wie du all diese Einstellungen auf direktem Weg ohne GUI erledigt bekommst. Grundsätzlich sollte jede systemweite Einstellung über die Registry erreichbar sein, ein simples Script, das dir die Registry Schlüssel erstellt oder auf die gewünschten Werte setzt ist sicher einfacher und letztlich auch deutlich schneller. Alternativ kann vermutlich auch so ziemlich alles per WMI geändert werden, teilweise über von MS bereitgestellte cmdline Tools oder per direkten DLL Calls.

    Hier mal etwas zur power cfg, ganz am Ende ist auch ein Entscheidender Hinweis auf die zugehörige WMI Klasse:

    http://sourcedaddy.com/windows-7/conf…fg-utility.html

  • _ScreenCapture_Capture verursacht Fehler

    • misterspeed
    • 30. Mai 2013 um 23:35

    Naja ist doch logisch, dass du einen Fehler erhältst, denn deine Koordinaten sind schlichtweg falsch:

    Code
    1 438;271;474;180
    fehler 1
    fehler 1

    Ein Blick in die Hilfe verrät uns:

    Code
    $sFileName 	[optional] Kompletter Pfad, Dateiname und Erweiterung der Bilddatei
    $iLeft 		[optional] X Koordinate des linken oberen Ecks des Rechtecks
    $iTop 		[optional] Y Koordinate des linken oberen Ecks des Rechtecks
    $iRight 	[optional] X Koordinate des rechten unteren Ecks des Rechtecks. Falls dies auf -1 gesetzt wird, wird die komplette Breite des Bildschirms genutzt.
    $iBottom 	[optional] Y Koordinate des rechten unteren Ecks des Rechtecks. Falls dies auf -1 gesetzt wird, wird die komplette Höhe des Bildschirms genutzt.
    $fCursor 	[optional] Falls "True", erscheint der Cursor auch auf dem erstellten Bild

    Also linke obere und rechte untere Ecke muss angegeben werden. Das bedeutet gleichzeitig, dass folgendes niemals der Fall sein darf:

    [autoit]


    ; auszug aus der screencapture.au3
    If $iRight < $iLeft Then Return SetError(-1, 0, 0)
    If $iBottom < $iTop Then Return SetError(-2, 0, 0)

    [/autoit]

    Oder anderst ausgedrückt:

    Der X-wert der linken oberen Ecke muss kleiner dem X-Wert der rechten unteren Ecke sein, da er eben links vom anderen Punkt liegen soll.
    Der Y-wert der linken oberen Ecke muss kleiner dem Y-Wert der rechten unteren Ecke sein, da er eben oberhalb vom anderen Punkt liegen soll. Das ist im oben genannten Koordinaten Beispiel nicht erfüllt, die Funktion wird @error daher auf -2 setzen!

  • hab ein problem eine schleife anzusprechen

    • misterspeed
    • 30. Mai 2013 um 23:06

    Lass die Klammern weg, sonst bekommst du einen Syntax Fehler, eigentlich solltest du das so in Scite ohne Fehlermeldung / Warnung garnicht ausführen können.

    [autoit]


    Func aus ()
    ($loop = 0) ; <----- falsch !
    Sleep (2000)
    Exit
    EndFunc

    [/autoit]


    Code
    >Running AU3Check (1.54.19.0)  from:C:\Program Files (x86)\AutoIt3
    C:\Users\*********\Desktop\AutoIt v3 Script (neu).au3(44,1) : ERROR: syntax error
    (
    ^
    C:\Users\********\Desktop\AutoIt v3 Script (neu).au3(22,20) : ERROR: start(): undefined function.
                start ()
    ~~~~~~~~~~~~~~~~~~~^
    C:\Users\*********\Desktop\AutoIt v3 Script (neu).au3 - 2 error(s), 0 warning(s)
    !>23:06:47 AU3Check ended. Press F4 to jump to next error.rc:2
    >Exit code: 0    Time: 0.295
  • ISN AutoIt Studio

    • misterspeed
    • 30. Mai 2013 um 19:37

    Bezüglich ISN FormStudio möcht ich noch einen seltsamen Anzeigebug vermelden:

    1. Manchmal wird garnichts angezeigt, bzw wenn man das Fenster dann aus dem Vollbild nimmt sieht man auch warum vermeintlich nichts angezeigt wird (Bild 1). Irgendwas geht hier mächtig schief beim Übereinanderlegen der Child Windows, bzw. beim einbetten in die Tabs des Hauptfensters. Das Eigenschaften Fenster ist vor den Tabs, aber hinter dem Hintergrundfenster des Editors, sehr seltsam....
    2. Manchmal ist zwar auf den ersten Blcik alles sichtbar, aber die Titelleiste+Rahmen des "eigenen" Fensters wird nicht angezeigt (Bild 2), hier war zufälligerweise auch noch das rechte Fenster "Control Editor" verschwunden / nicht zu sehen.
    3. Bild 3 zeigt die normale und vollständige Ansicht.

    Das ganze tritt ziemlich oft auf, wenn ich die isf-Datei des Projektes öffne, geschätzt jedes dritte bis vierte Mal, manchmal extrem (Fall 1), manchmal auch nur teilweise (Fall 2).

    Bild 1:
    [Blockierte Grafik: http://i.imgur.com/z1J52nA.png]

    Bild 2:
    [Blockierte Grafik: http://i.imgur.com/hMdlRQS.png]

    Bild 3:
    [Blockierte Grafik: http://i.imgur.com/cqmAiEN.png]

  • Zeilenweises Löschen in Textdatei: A bis B

    • misterspeed
    • 30. Mai 2013 um 15:10

    So ist es, in mein obiges Script eingebaut sollte es so ausschaun, wobei ich mal annehme, dass deine regex Pattern so nicht mehr (alle) stimmen, da filereadtoarray bereits die Zeilenumbrüche entfernt, du müsstest also evtl deine Pattern entsprechend anpassen. Ich bin aber was das anbelangt nicht wirklich der Experte, verwende normalerweise keine regex pattern.

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <file.au3>

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

    Global $timer = TimerInit()
    Global $aSource
    _filereadtoarray(@ScriptDir & "\filter.ini",$aSource)
    Global $aNew[ubound($aSource)]

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

    $j = 0
    for $i=1 to ubound($aSource)-1
    if stringinstr($aSource[$i],"; Complex Wildcards (Opera Specific)") then exitloop ; vorrausgesetzt dies ist immer der letzte Block der Datei und somit alles nachfolgende uninterressant...
    if stringleft($aSource[$i],1) <> ";" then
    $debugLine = $aSource[$i]
    $aSource[$i] = StringRegExpReplace($aSource[$i], '^;.*\n', "")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '^prioritize.*\n', "")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '^\*?:\/\/.+\n', "")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '\*', "")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '\[.+\]\s?\n', "")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '\&amp;?', "&")
    $aSource[$i] = StringRegExpReplace($aSource[$i], '\n$', "")
    if $aSource[$i] = "" Then
    ConsoleWrite("Zeile wurde komplett entfernt: " & $i & " --> " & $debugLine & @CRLF)
    ContinueLoop ; wenn nach der Ersetzung nichts mehr in der Zeile steht brauchen wir auch nichts mehr ins Ergebnis Array schreiben
    EndIf
    $aNew[$j]=$aSource[$i]
    $j+=1
    endif
    next
    redim $aNew[$j]
    _ArrayDisplay($aNew)
    ;_FileWriteFromArray(@ScriptDir & "\filterneu.ini",$aNew)
    ConsoleWrite(TimerDiff($timer) & @CRLF)

    [/autoit]
  • _Singleton & Windows 8 funktioniert nicht?

    • misterspeed
    • 30. Mai 2013 um 10:06
    Zitat von Friesel

    Das Makro @ScriptName enthält neben dem Skriptnamen auch die Dateiendung.
    Da der Befehl _Singleton aber nur den Dateinamen überprüft, muß die Endung noch entfernt werden;

    Öhm nein. Es ist richtig, dass @Scriptname auch die Dateiendung enthält, singleton prüft jedoch weder den Dateinamen, noch die Dateiendung, sondern immer den kompletten String, der für das Singleton Mutex angegeben wurde. Es ist völlig egal welcher String hier angegeben wird, sei es "abc" oder der Name des Scriptes, er sollte aber nach Möglichkeit eindeutig sein, damit es nicht zu Komplikationen mit anderen Programmen kommt. Sobald ein zweites Programm genau den selben String nutzen möchte um ein Mutex zu erzeugen kommt es zum Fehler, dadurch weiß die Funktion Singleton, dass es bereits eine Instanz gibt.

    Deine Kritik ist hier also nur in sofern angebracht, als dass der hier verwendete String @scriptname nicht den Start einer kompilierten + unkompilierten Fassung des Scripts erkennen kann, da jeweils unterschiedliche Strings für das Mutex verwendet werden. Wird allerdings jeweils die selbe Scriptfassung, also beide male die unkompilierte oder beide male die kompilierte Fassung gestartet funktioniert die Prüfung sehr wohl so wie sie derzeit ist.

    Bei mir funktioniert das ganze im übrigen sowohl unter Windows 7 als auch in meiner Windows 8 VM (allerdings noch eine alte Evaluation Beta). Ich kann also kein Problem, das Win 8 spezifisch wäre erkennen. Bei deinem Testscript fehlt allerdings eine Schleife, die die erste Instanz am Leben erhält, aber ich gehe davon aus, dass du das nur vergessen hast hier zu posten, bzw. solange man die msgbox nicht schließt läuft die Instanz ja noch und das Mutex funktioniert auch wie es soll.

    Die einzige Fehlerquelle die ich noch erkennen kann wäre, dass das Mutex ebenfalls nicht funktionieren dürfte, wenn die Instanzen auf verschiedenen Benutzeraccounts gestartet werden, da hier wie in der Hilfe zu singleton beschrieben noch ein "Global\" vor den String platziert werden müsste, andernfalls können andere Benutzer nicht auf das Mutex zugreifen.

  • Zeilenweises Löschen in Textdatei: A bis B

    • misterspeed
    • 29. Mai 2013 um 13:57

    Warum soll das nicht auch Zeilenweise gehen? Du hast nun eben keinen Gesamtstring (fileread) mehr, sondern nur noch viele Einzelstrings, gespeichert in $aSource[$i]. An deinen RegExp Pattern dürfte sich dennoch nichts (oder nur minimal) etwas ändern. Da wir aber keine Hellseher sind und du bis auf die zwei Beispiele gerade eben keinerlei Angaben dazu gemacht hast was du wie ersetzen willst, bzw. bisher mit welchen Pattern ersetzt hast kann hier auch keiner definitiv sagen was falsch läuft.

  • Werte in Array prüfen und ändern ?

    • misterspeed
    • 29. Mai 2013 um 12:59

    Steht in meinem Edit. Du hast ein 2D Array, also musst du auch angeben wo im Array der Wert steht, den du ändern willst, also welche Zeile und welche Spalte du im Array ändern willst, bei dir eben Zeile 0 und Spalte 6. Bei einem 1D Array müsstest du nur die Zeile angeben, da es eben dort nur eine Spalte gibt. Wenn du bei einem 2D Array jetzt nur die Zeile 6 angibst, dann kann Autoit nicht wissen, welchen Wert aus welcher Spalte du ändern willst, davon ab hat dein Array auch keine 6 Zeilen, daher eben der Absturz.

    Wenns dir immernoch nicht klar ist wie Arrays aufgebaut sind und wie man sie verwendet schau dir bitte das Tutorial von BugFix an, du kommst ohne dieses Grundwissen jedenfalls nicht wirklich weiter: http://www.bug-fix.info/array_tut.htm

  • Werte in Array prüfen und ändern ?

    • misterspeed
    • 29. Mai 2013 um 12:17
    Zitat von HassanMullah

    Was mache ich denn in Zeile 10 falsch, das es mir das Script mit "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:" wegfliegt ?

    [autoit]


    _GUICtrlListView_AddArray($listview, $aSQLQueryErgebnis); Inhalt des Array wird unterhalb der Spaltennamen in die Listview eingetragen
    _ArrayDisplay($aSQLQueryErgebnis[6]); Testeintrag: hier fliegt das Script auf die Schnauze mit "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:"
    If $aSQLQueryErgebnis[6] = 0 Then; Prüfung ob Relevant/Aktiv 0 oder 1 ist
    $aSQLQueryErgebnis[6] = "NEIN"
    Else
    $aSQLQueryErgebnis[6] = "JA"
    EndIf

    [/autoit]

    Du übergibst kein Array an _arraydisplay(), sondern den Wert des Arrays an Index 6. Diesen Index scheint es auch nicht zu geben, da sonst vermutlich keine derartige Fehlermeldung erscheinen würde. Dein zweiter Fehler ist im übrigen, dass du die Werte im array erst veränderst, nachdem du die alten Werte ins Listview eingefügt hast, das war ja denke ich nicht der Sinn der Sache oder?


    EDIT:

    Ahja und deinem Screenshot nach hast du ein 2D Array, daher wird dein Script natürlich immer dann abstürzen, wenn du es nicht korrekt ansprichst. 2D arrays werden immer so genutzt:

    [autoit]


    $a2D[$zeile][$spalte] = "..."

    [/autoit]
  • Problem mit langsamen PING

    • misterspeed
    • 29. Mai 2013 um 11:49

    Es wäre wohl wesentlich effizienter, wenn du auf allen PCs einen Client installierst und auf einem zentralen PC einen Server. Client und Server kommunizieren per TCP. Jeder Client meldet sich selbsständig am Server an oder ab bzw meldet sich in Intervallen, wenn er noch online ist. Dadurch weiß der Server immer welche PCs gerade online sind bzw. kann PCs die sich nicht innerhalb der festgesetzten Intervalle melden als offline markieren. Das ist zwar letztlich ein wenig aufwendiger zu programmieren, aber auch zuverlässiger und mit keiner Wartezeit verbunden.

    Wenn du unbedingt bei den 512 Pings bleiben willst bleibt dir meiner Meinung nach nur der Weg den Ping selbst in einen separaten Prozess auszulagern. Dadurch könntest du x Pings paralell ausführen, was die Zeit dementsprechend um Faktor x verkürzt. Allerdings musst du dir dann noch einfallen lassen, wie dein Hauptprogramm die Ergebnisse dieser separaten Prozesse bekommen soll (Kommunikation zwischen zwei Scripten). Letztlich ist diese Variante mindestens genauso aufwendig, wie wenn du gleich eine Client/Server Anwendung schreibst.

  • String bearbeiten

    • misterspeed
    • 28. Mai 2013 um 17:18

    Schau dir die Hilfe zu

    [autoit]

    _stringbetween(...)

    [/autoit]


    an.

  • Progress Bar ignoriert die Installation

    • misterspeed
    • 28. Mai 2013 um 12:24

    ShellExecute gibt nicht die PID zurück, du kannst die Abbruchbedingung der Schleife daher nicht per processexists realisieren. ShellExecute gibt bei Erfolg immer 1 bei Misserfolg 0 zurück. Nun rufst du vor jedem Schleifendurchgang Processexists auf, die Schleife läuft solange das Ergebnis dieser Abfrage True ist, also ungleich 0. Da du aber eine ungültige PID (1) an Processexists übergibst gibt dir processExists eine 0 zurück (Prozess existiert nicht). Eine 0 bedeutet False, daher wird die Schleife bereits vor dem ersten Durchlauf abgebrochen.

    Lösung: verwende run()

    Das geht nicht? Klar geht das, sollte in etwa so ausschaun:

    [autoit]

    run('msiexec "C:\test\IBM SPSS Statistics 21.msi" /qb LICENSETYPE=Network ....')

    [/autoit]
  • Auerswald TK-Anlage fernsteuern (IE.au3)

    • misterspeed
    • 28. Mai 2013 um 11:52

    Ich würde die Sache mithilfe der winhttp.au3 angehen. Einfach die gewünschte Aktion von Hand ausführen und mit dem FF Addon "Live HTTP Headers" mitschneiden, danach die entsprechend benötigten HTTP Pakete mit winhttp nachbauen. Dürfte letztlich zuverlässiger und performanter als eine Browser Automatisierung per ie.au3 / ff.au3 sein. Setzt aber wohl vorraus, dass man die Zeit und Lust hat sich ein wenig mit der Materie auseinanderzusetzen, für einen Autoit Anfänger meiner Meinung nach vielleicht doch ein wenig zu komplex.

    Die Beschreibung von F1109 klingt jedenfalls ein wenig danach, dass er letztlich diesen Ansatz gewählt hat.

  • Frage zu SciTE 3.2.0

    • misterspeed
    • 27. Mai 2013 um 17:15

    Google findet diesbezüglich auch nichts, also gehe ich mal davon aus, dass dies derzeit nicht von Scite unterstützt wird. Alternativ könntest du ja mal einen Blick auf diese Scite Alternative werfen: https://autoit.de/index.php?page=Thread&amp;threadID=29742

    ISN Autoit Studio besitzt dieses Feature. In den Programmeinstellungen kann das Intervall und der Speicherort frei gewählt werden.

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™