[Index] nach. Unter der Funktionsreferenz
Das ist schön erklärt und zu einfach gedacht. Zuerst meinen Dank für die Ausführungen.
Ich möchte Dir (und Euch) die Welt mit meinen Augen zeigen. Sieh es nicht als Vorwurf, sondern betrachte einmal die Welt von jemand, mit wenig Erfahrung, wenig Englisch und bereits viel Einsatz.
In einer Hilfe-Datei suche ich üblicherweise. Will heißen, ich klicke auf Index bzw. Suchen und gebe einen Suchbegriff ein.
Ich habe hier die deutsch Hilfedatei
v3.3.8.1
(Stand der Übersetzung der Hilfe ins Deutsche: 28.12.2012)
(gibt es was aktuelleres? - ich hoffe es inständig - vor allem mit mehr Suchbegriffen)
(a) Fensterpostion
Reiter Suchen: Fensterposition
Ergebnis: Funktion 0
Reiter Suchen: Fenster Position
Ergebnis: Funktion 42
(hoffnungslos)
Ein deutschsprachger Autoit - Anfänger (Englisch effektiv 0) kommt von dort nicht auf WinGetPos.
Wozu gibt es eine Suchfunktion, in der nicht die einfachsten Begriffe vorkommen?
Es werden abertausende Programmzeilen an Code geschrieben, und für die Hilfe, die so wichtig ist, gibt es keine sinnvolle Weiterentwicklung mit wirklich sinnvollen deutschen Suchbegriffen etc.
Nun könnte ich fragen, warum findet man nicht den Begriff Fensterposition (führt uns jedoch nicht weiter).
(b) MouseMove
Nehmen wir für einen Moment an, ich wäre durch einen glücklichen Umstand auf MouseMove gekommen.
Dann sehe ich hier keinen Eintrag, wie die Maus fensterbezogen bewegt wird. Weder im Beispiel noch im Text.
Nun könnte ich wieder fragen, warum nicht, warum kein Beispiel wie Deine Berechnung, Dein Hinweis auf OPT (auch das führt uns nicht weiter).
Steht vielleicht sowas in der englischen Hilfedatei?
(c) Au3Record
Nun gibt es für Anfänger ein Tool, was Mausaktivitäten aufzeichnet. Und beim Abspielen sieht man, die Maus springt überall hin, nur nicht dorthin, wo man geklickt hat.
Wenn ein Anfänger an Hand der Koordinaten erkennt, dass hier munter zwischen Bildschirmkoordinaten und Fensterkoordinaten ohne Hinweis hin- und hergewechselt wird, vergeht einem die Motivation noch mehr und man neigt dazu, aufzugeben.
Welche Tools sind alternativ besser?
(d) MouseCoordMode
Kommen wir zur Krönung: MouseCoordMode
Dass nach diesem Begriff kein Anfänger sucht, ist klar. Sollte eine Hilfe-Datei nicht gerade für Anfänger sein?
Nun steht dort:
Legt fest, auf welche Art die Mausfunktionen Koordinaten nutzen, entweder absolut oder relativ zum momentan aktiven Fenster:
0 = relative Koordinaten zum aktiven Fenster
1 = absolute Bildschirm Koordinaten (Standard)
2 = relative Koordinaten zum Anwendungsbereich des aktiven Fensters
Welcher Anfänger versteht das? Warum nicht ein einziges Beispiel? Das sind nur wenige Zeilen Code, die sofort ausführbar verdeutlichen, wie das wirkt.
Ein Anfänger sucht z.B. nach fensterbezogenen Koordinaten.
Selbst wer es bis zur Hilfeseite "Opt" geschafft hat, was für einen Anfänger absolut unmöglich ist, denn wer nach Optionen sucht, findet nichts in der deutschen Hilfe.
Und selbst auf der Seite "Opt" gibt es "CaretCoordMode", "CaretCoordMode", "CaretCoordMode", "CaretCoordMode", die alle irgendwie nach "Umgang mit Fensterkoordinaten" klingen.
Lange Rede - kurzer Sinn. Es liegt nicht an der fehlenden Fähigkeit, die Hilfe zu bedienen, sondern daran, dass die Schlüsselworte nicht zum Schlüssel führen und massiv Beispiele fehlen.
- $x = 10
- $y = 20
- $aiPos = WinGetPos('')
- MouseMove($aiPos[0] + $x, $aiPos[1] + $y)
4 Zeilen von Dir lösen das Problem - 4 Zeilen in der Hife und ein paar verknüpfte Suchbegriffe wie Fensterkoordinaten, fensterbezogen etc. ... und ... es würde hier im Forum nicht mal die Hälfte der Fragen geben.
Ich habe mir nächtelang den Inhalt des Forums um die Ohren geschlagen - mit dem gleichen Ergebnis - Schlüsselworte stehen selten im Titel.
Ich habe vergeblich eine FAQ gesucht, in der überschaubar grundlegende Begriffe zu finden sind.
Selbst wichtige Begriffe wie Array finde ich nicht in der Hilfe.
Um so dankbarer bin ich, wenn im Forum Leute, die Autoit über Jahre kennen, einen Suchbegriff oder einen Codeschnipsel in die Runde werfen können, mit dem ein Problem gelöst werden kann.
Und was viel wichtiger ist - viele Wege führen nach Rom.
Ist es nicht viel interessanter, zu einem Problem unterschiedliche Lösungsansätze zu bieten, darüber zu schreiben, sich hier auszutauschen, und somit den kreativen Umgang mit Autoit fördern, als zu sagen, lies in der Hilfe unter xyz? Der Verweis auf die Hife-Datei sollte im Sinne einer Kommunikation stets nur am Rand erfolgen (nie im Mittelpunkt stehen).
Oscar schrieb vor einigen Tagen in einem anderen meiner Threads, heute würde er das nicht mehr so schreiben, heute würde er eine Schleifenkonstruktion verwenden.
Genau das ist der Punkt, warum ich hier gerne Fragen in die Runde geben möchte, um unterschiedliche Wege zu sehen und vor allem, um das Optimum zu erlernen - ein Optimum, welches auf jahrelanger Erfahrung beruhrt.
Das findest Du in keiner Hilfe-Datei. Zudem sind unterschiedliche Ansichten sehr interessant - und ich freue mich über jeden, der sich daran beteiligen möchte und vor allem auf Grund seines Wissens auch kann.
PS ... zurück zum ursprünglichen Thema
mit den Fensterkoordinaten wird das NoScript Problem nicht zu lösen sein, da sich das Icon in unterschiedlichen Firefox-Profilen an unterschiedlichen Stellen befindet
Ich habe mal was aufgeschnappt von einer Mustersuche - will heißen, dass Autoit in der Lage ist, das NoScript Logo (welches in 2 Varianten vorkommt - und Symbol ähnelt Verkehrsschild eingeschränktes Halteverbot auf weißem Grund und nur das S) zu finden.
Falls das stimmt, wäre das wohl der richtige Weg.
Und ein weiteres Problem tauchte auf, die Ausführung des Codes aus dem SciTE-Editor scheint häufiger zu scheitern. Kennt Ihr das?
Beispiel:
Opt("WinTextMatchMode",2)
Opt("winTitleMatchMode",2)
$win = "[CLASS:MozillaWindowClass; TITLE:Firefox]"
Ein paar Mal funktioniert damit der Befehl WinActivate mit diesen Daten und holt das Fenster, zeitweise nicht, obwohl nichts geändert wurde (im zeitlichen Zusammenhang von weniger als 5 Minuten, x mal probiert) und über ConsoleWrite das Handle ausgeben. Sprich, das Fenster wird zwar gefunden, aber nicht aktiviert und in den Vordergrund geholt, obwohl es sichtbar hinter dem SciTE-Editor liegt.
Handle: 0x001A0A40
>Exit code: 0 Time: 2.235
Firefox-Fenster wird dennoch nicht aktiviert.
Gilt in Analogie für andere Fenster (temporär) ... Fenster, die recht problemlos aktiviert werden, gibt es auch, z.B. Notepad.
Gibt es trotz Exit code die Wahrscheinlichkeit, dass was im Speicher hängen geblieben ist, was man über den Taskmanager beenden könnte? Oder auf anderem Wege? FireFox und SciTE-Editor habe ich mehrfach neu gestartet - ohne Erfolg.