Beiträge von Andy
-
-
Ich benötige aber alles auser die Zitate.
hmmmm, ich denke, ihr beiden habt den falschen Ansatz^^
AutoIt$s_Text = '"Zitat1"kein Zitat"Zitat2" kein Zitat "blablub"' $ret=StringRegExpReplace($s_Text,'("[^"]*")',"") ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console//EDIT Sackzement, der Bugfixer war wieder mal bissl schneller^^
-
Sirius,
welche Bildschirmauflösung nutzt du?
Ich meine die, bei welcher das Script funktioniert bzw. nicht funktioniert.
Ich werde dann ggf. PushTheButton mal anpassen müssen....Generell ist diese Bildersuche nur dann sinnvoll wenn grundsätzlich alle anderen Wege versagen!
Es gibt kaum irgendein Programm, welches nicht entweder durch Tastatur oder Controls zu bedienen ist. Und bzgl. "einfacher" steht mal definitiv fest, dass es kaum etwas einfacheres gibt wie Controls auszulesen und dementsprechend auch Aktionen anzuweisen.
Wer das einmal gemacht hat, der nimmt keine andere Methode mehr!Wie komme ich denn an die benötigten Informationen (Class/ControllID)?
Im AutoIt-Verzeichnis befindet sich das AutoIt-Window-Info Tool, ob 64/32-Bit ist für dich unerheblich
-
Hi,
mit dem "Fenster" machst du ja nichts weiter, als einen "Button" zu definieren, auf den geklickt werden soll.
Das Fenster wird zum zoomen und definieren der Größe verwendet, du solltest aufpassen, dass in der obersten Pixelzeile des "Buttons" nicht gerade ausschliesslich einfarbige Pixel stehen, das beschleunigt die Suche extrem!Funktioniert das "Testscript", welches auf das Windoes Icon unten links klickt?
-
und lasse dann per ImageSearch die Klicks in dem Proragmm ausführen und füge dann die Daten in die einzelnen Felder ein.
Naja, mal davon abgesehen, dass es nichts verwerfliches ist, wenn man Imagesearch benutzt, sollte man sich trotzdem fragen wieso eine 64-Bit-Anwendung benutzt werden muss!
Dafür gibt es absolut keinen Grund!
Btw. habe ich vor einigen Jahren ein Script "PushTheButton" geschrieben, welches sowohl die einzulesenden "Buttons" einliest, als auch die Klicks ausführt. In Millisekunden, ohne Dll, reiner AutoIt-Code! -
Ich möchte gerne Daten aus Excel in ein Programm einpflegen
Und wieso benutzt du dafür nicht die EXCEL.UDF ?
-
Also, einfach Tan($alpha) funktioniert schon.
...solange der Winkel im Bogenmaß angegeben ist!
Bei Winkelangaben in Grad muss der Umrechenfaktor $degtorad = Pi / 180 = atan(1) *4 / 180 mitberechnet werden! (s. bspw. Hilfe zu Sin() )Um also als Ergebnis von sin(30°) auch 0,5 zu erhalten, muss man in Autoit rechnen:
AutoIt$pi = ATan(1) * 4 ;Pi $degtorad = $pi / 180 ;Umformfaktor von Grad ins RADiant (Bogenmaß) $Winkel_in_Grad = 30 ;Winkel in Grad ^^ $a = Sin($Winkel_in_Grad * $degtorad) ;sin(30°)=0,5Dabei sind $pi und $degtorad natürlich Konstanten, man kann daher auch direkt sin($Grad * 0.0174532925199433) schreiben
-
Hi,
du "siehst" das Problem nicht, da die Burning-Board-Software unseres Forums die &-Sequenzen "richtig" umformt....
Schau dir mal DEIN SCRIPT an....so sieht das aus, was DU in Post #5 verlinkt hast!
Ich hänge mal einen Screen von Scite an, markiert ist der "Müll"!, welcher aus irgendeiner schiefgegangenen C&P-Aktion herrührt! -
Das schöne an "fertiger" Software ist, du bist rechtlich raus
Das wären bei mir 99,8% auf der "Haben" Seite! Der absolut kümmerliche und vernachlässigbare Rest wie bspw. Usability, Administration, Einspielen von (Sicherheits)-Updates uswusf. kannst du ALLES auf deinen Auftraggeber abwälzen!
Wenn dem dann irgendetwas später nicht passt, könnt ihr zusammen eine neue "fertige" Software suchen.Nichts ist schlimmer als vor den Kadi gezerrt zu werden, nur weil ein "selbstgeschnitztes" System zu einem betriebstechnischen Supergau geführt hat!
-
ggf über den DriveStatus().
Man könnte/sollte sämtlichche DriveXxxx()-Funktionen auf nützlichkeiten untersuchen. Was ich weiß ist, dass Events ausgelöst werden wenn sich auf einem Laufwerk Daten ändern, AspirinJunkie hatte da mal etwas... Geschrieben abfragen -
AutoIt
Alles anzeigen$ordner = "C:\PDFs\" $archiv = "C:\druck\" $foxit = "C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe" $drucker1 = "Foxit Reader PDF Printer" $drucker2 = "HP LaserJet 4000 Series PCL 5 (Kopie 2)" While 1 Sleep(1000) $file = FileFindFirstFile($ordner & "*.pdf") If $file <> -1 Then Print() FileClose($file) WEnd Func Print() While 1 $pdffile = FileFindNextFile($file) $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC If @error Then ExitLoop FileMove($ordner & $pdffile, $archiv & $neuname & ".pdf") While 1 Sleep(100) If FileExists($archiv & $neuname & ".pdf") Then ExitLoop EndIf WEnd RunWait('"' & $foxit & '" /t "' & $archiv & $neuname & '.pdf" $Foxit Reader PDF Printer') RunWait('"' & $foxit & '" /t "' & $archiv & $neuname & '.pdf" $HP LaserJet 4000 Series PCL 5 (Kopie 2)') WEnd EndFunc ;==>PrintWie man im Quelltext deutlich sieht, hast du "Müll" heruntergeladen!
Die Sequenz & hat definitiv nicht im ursprünglichen AutoIt-Script gestanden, stattdessen befindet sich dort ein & - Zeichen (Ampersand). Ersetze & durch & und alles sollte funktionieren....Ursprünglich:
Code
Alles anzeigen$ordner = "C:\PDFs\" $archiv = "C:\druck\" $foxit = "C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe" $drucker1 = "Foxit Reader PDF Printer" $drucker2 = "HP LaserJet 4000 Series PCL 5 (Kopie 2)" While 1 Sleep(1000) $file = FileFindFirstFile($ordner & "*.pdf") If $file <> -1 Then Print() FileClose($file) WEnd Func Print() While 1 $pdffile = FileFindNextFile($file) $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC If @error Then ExitLoop FileMove($ordner & $pdffile, $archiv & $neuname & ".pdf") While 1 Sleep(100) If FileExists($archiv & $neuname & ".pdf") Then ExitLoop EndIf WEnd RunWait('"' & $foxit & '" /t "' & $archiv & $neuname & '.pdf" $Foxit Reader PDF Printer') RunWait('"' & $foxit & '" /t "' & $archiv & $neuname & '.pdf" $HP LaserJet 4000 Series PCL 5 (Kopie 2)') WEnd EndFunc ;==>PrintUrsache ist das Unvermögen von C&P! Auch damit sollte man sich wenigstens rudimentär auskennen...
-
@Oscar, nein, dem war nicht so....der TE liest lediglich den "Text" ein, in dem dann mit obigem (Post #1) Replacekrampf das eine Wort durch ein anderes ersetzt werden soll(te)!
-
Solche "Ersetzen X mit Y"-Orgien haben im Programmcode absolut nichts verloren!
Bei jedem Pipifax (Rechtschreibfehler/Zahlendreher/Erweiterung/Löschung) wird der Code editiert....und weil der "Programmierer" der diesen Mist im Quellcode verzapft hat, sicherlich keinen anderen findet der zig Arrrayeinträge durchzählt und editiert, muss er diese "Datenpflege" auch noch selbst machen!Die Ersetzungstabelle gehört in eine Text-Datei, CSV ist wie dafür gemacht. Das kann jedes x-beliebige DB- oder Tabellenkalkulationsprogramm einlesen/editieren, Texteditoren natürlich auch
Dateiinhalt Ersetzen.csv:
INTERNATIONAL_ECONOMY(4),International Economy
INTERNATIONAL_PRIORITY(1),International Priority
INTERNATIONAL_PRIORITY_FIRST(6),International Priority First
bla,blubDer Quellcode reduziert sich auf den 3-Zeiler, auch wenn 20000 Ersetzungen durchgeführt werden müssen! Und evtl. "Erweiterungen" drückt man ggf. in Ermangelung eines überarbeiteten Azubis einfach der Reinigungskraft aufs Auge
Auch die kann mit dem Windows-"Editor" die CSV öffnen und die beiden zusätzlichen Wörter durch Komma getrennt hinten anhängen....AutoIt
Alles anzeigen#include <Array.au3> $text = '$sOutput1 = StringReplace($sOutput, "INTERNATIONAL_ECONOMY(4)", "International Economy", 0, 1)' & @CRLF & _ '$sOutput2 = StringReplace($sOutput1, "INTERNATIONAL_PRIORITY(1)", "International Priority", 0, 1)' & @CRLF & _ '$sOutput3 = StringReplace($sOutput2, "INTERNATIONAL_PRIORITY_FIRST(6)", "International Priority First", 0, 1)' & @CRLF & _ '$sOutput4 = StringReplace($sOutput3, "EUROPE_FIRST_INTERNATIONAL_PRIORITY(null)", "International Europe First", 0, 1)' & @CRLF & _ '$sOutput5 = StringReplace($sOutput4, "PRIORITY_OVERNIGHT(1)", "Priority Overnight", 0, 1)' & @CRLF & _ '$sOutput6 = StringReplace($sOutput5, "INTERNATIONAL_PRIORITY_DISTRIBUTION(null)", "International Priority Distribution", 0, ' $csv_array = StringSplit(FileRead("ersetzen.csv"), @CRLF, 3) ;CSV-Datei einlesen und zeilenweise splitten _ArrayDisplay($csv_array) For $i In $csv_array ;alle Zeilen in Datei $ersetzen = StringSplit($i, ",", 3) ;splitten und $text = StringReplace($text, $ersetzen[0], $ersetzen[1], 0, 1) ;im Text ersetzen Next MsgBox(0, 0, $text) -
Hi,
Die Variante, alle Definitionen rauszuschmeissen und mich an den aufflackernden Fehlermeldungen entlang zu hangeln und die Var dann neu zu erstellen, erscheint mir überhaupt nicht lukrativ.
Definition von 80 bis 100 Variablen per Ctrl-q ausblenden, einmal F5 gedrückt stellt Scite die "Fehler" im Consolenfenster dar. Doppelklick auf den "Fehler", Zeile wird im Scriptfenster angesprungen, Im Scriptfenster 3-fachklick in diese Zeile, Entf drücken, nächste Zeile...
Für jede Zeile macht das 4 Klicks und einen Tastendruck, bei 200-300 "überflüssigen" Variablen in einem 10000-Zeilen-Script bist du damit schneller durch, als du diesen Thread eröffnet und geschrieben hast

-
Funktioniert der Ablauf wie im oben von mir verlinkten Beitrag beschrieben?
-
http://www.speedguide.net/port.php?port=4321
Ggf werden diese vom Virenscanner Routerseitig diese Ports geblockt?!
Wie man "zufällig" auf genau diese Portnummer kommt, während in sämtlichen Beispielscripten andere Ports angegeben sind, ist schon sehr "seltsam"

"Tutorial" in Client sendet an Server nicht übers Inet schon probiert?
-
Hi,
UNIX Time Stamp ist definitiv die Anzahl der Sekunden seit 1. Januar 1970.
Bist du dir sicher, dass du das nicht mit Timestamps innerhalb von EDV-Systemen verwechselst, welche die Zeit in Millisekunden seit Rechnerstart oder seit dem 1. Januar 1900 verwenden. Diese haben aber mit dem Unix-Timestamp nichts zu tun!Btw, wenn du Millisekunden hast, schneide einfach die letzten 3 Stellen ab
AutoIt#include <Date.au3> $input_UnixDate = "1441279108" ;Sekunden $winDate = _DateTimeFormat(_DateAdd('s', $input_UnixDate, "1970/01/01 00:00:00"), 0) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $winDate = ' & $winDate & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $input_UnixDateMS = "1441279108123" ;Millisekunden $winDate = _DateTimeFormat(_DateAdd('s', StringTrimRight($input_UnixDateMS, 3), "1970/01/01 00:00:00"), 0) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $winDate = ' & $winDate & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console -
ich denke man muss hier wieder mit StringRegExp arbeiten - aber das Ding ist mir einfach zu hoch
ich bin sicher nicht der großartige RegEx`er, aber Großbuchstaben finden ist recht einfach
AutoIt
Alles anzeigen#include <String.au3> #include <Array.au3> $text = "Die Transportkosten für Ihre Sendung von DE-36037 FULDA nach AT-5061 SALZBURG betragen 41.79 EUR" $a = StringRegExp($text, "([A-Z]{4,})", 3) ;alle Großbuchstaben finden mit mindestens 4 Buchstaben länge _ArrayDisplay($a) ;Fundstellen anzeigen For $i = 0 To UBound($a) - 1 ;alle Fundstellen im Text $text = StringReplace($text, $a[$i], _StringProper($a[$i]));ersetzen Next MsgBox(0, 0, $text) For $i In $a ;alternativ for/in $text = StringReplace($text, $i, _StringProper($i)) ;ersetzen Next $a = StringRegExpReplace($text, "([A-Z]{4,})", _StringProper('$1')) ;funktioniert leider nicht... ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console -
Das dürfte mehr als aufwändig werden, da es an die zig Notifications gibt, die bei einem Fehler eine Soundausgabe generieren.
https://msdn.microsoft.com/en-us/library/…0(v=vs.85).aspx
da ist einiges dabei, was so schwierig nicht umzusetzen sein sollte.@torama, was willst du genau erreichen und warum, welche "Gegenmaßnahmen" sollen eingeleitet werden?
Gegenmaßnahmen verstehe ich jetzt so, dass dein Script den "Fehler" detektiert, aber den Sound nicht an Windows weiterleitet. Gleichzeitig muss logischerweise der "Fehler" (wie immer dieser auch aussehen sollte) korrigiert werden. -
@Oscar
es könnte durchaus sein, dass der User auf das Hören des Sounds angewiesen ist, weil er beispielsweise blind ist.
Bei fehlerhaften Eingaben über eine Tastatur wird immer nur der Fehlersound generiert und ausgegeben, niemals aber ein Fenster!Ich denke, man müsste über einen Hook die Windows Messages an PlaySound() abfangen und entsprechend auswerten. Da gibt es sicherlich einen Spezialisten hier im Forum!