Dann wäre es doch vielleicht ein Weg, sie wirklich mit Autoit per Doppelklcik mit einem Mailclient öffnen zu lassen, und die dort angezeigte "gute" Ansicht per PDF-Druck auszugeben?
Beiträge von beagle
-
-
Welcher Presenter ist es denn genau? Eventghost vielleicht einfach mal runterladen und installieren, u. U. siehst Du da drin dann sofort was sich tut wenn Du eine Taste drückst.
Edit: Und unter welcher Windows-Version arbeitest Du? Gib mal in der Suche Gerätemanager ein, dort sollte sich der Presenter-Treiber finden lassen.
-
Verstehe es wahrscheinlich nicht richtig, was genau liegt denn als Quelle/Datei vor? Sollte sich doch wahrscheinlich mit PDFCreator & Co. wandeln lassen?
-
Ja, würde auch erstmal Treiber, Settings usw. des Presenters checken. Ansonsten fange ich Events von diversen Presentern mit Eventghost ab; dort siehst Du schonmal ob und was Dein Presenter von sich gibt. Mit den Events lasse ich Eventghost dann entweder virtuell eine Taste drücken, oder lasse einen Befehl in die Zwischenablage schreiben, und polle die wiederum in Autoit in einer Schleife mit Clipget. Das funktioniert gefühlt etwas stabiler, mit Tastendrücken gibt es immer mal wieder unerwartete Probleme.
Good luck!
-
Als Steuersoftware fürs Streaming soll eindeutig iTunes fungieren. Sonst müsste alles nochmal komplett neu angelegt werden, und dafür läuft es schon zu gut so wie es jetzt ist. iTunes hat zwar nicht zu unrecht einen fragwürdigen Ruf, wenn man sich aber drauf einlässt, hat es durchaus auch seine guten Seiten. Und genau die Erfahrungen die Du mit Sonos & Co. beschreibst, haben mich davon abgehalten viel Geld in diese Inseln zu investieren. Ich zittere zwar auch vor jedem iTunes-Update (bzw. habe Updates disabled), aber es ist insgesamt doch ein relativ offenes System. Z.B. durch die nicht allzu teuren Airport Express-Receiver, um vorhandene Speaker/Anlagen weiter zu nutzen; dann gibt es noch die Shairport-Software, die vom Raspi über PCs fast alles was rechnet kostenlos in einen Empfänger verwandelt (wenn teils auch etwas wackelig), und zu guter letzt fertige Speaker mit integriertem AirPlay. Wir nutzen da einen Libratone Zipp mit Akku, um auch mal in den Garten oder andere nicht dauerhaft versorgte Orte die Musik mitnehmen zu können. Ein Nachteil von AirPlay ist, dass man nicht bequem zentral gleichzeitig in verschiedene Räume verschiedene Musik streamen kann. Aber das brauchen wir auch nicht primär, uns geht es mehr um die synchrone Beschallung durchs ganze Haus. Und über die Klangqualität kann man naürlich auch diskutieren, für unseren Alltagsbedarf reicht es aber völlig.
Als Steuerzentrale dient ein MacMini unter Windows, der mit ca. 10 gemessenen Watt im Dauerbetrieb mit einem i5 am Flachbild im Wohnzimmer sogar noch z.B. für eine Runde (älteres) Fifa ausreicht. Finde ich vom Verbrauch/Rechenleistungsverhältnis ziemlich unschlagbar.Dazu kommen noch die Hue- und die Max!-Bridges. Die X10-Fernbedienungen haben mit 433MHz ausreichende Reichweite durchs ganze Haus, kosten um die 10 Euro, und ein etwas unhandliches Modell wird bei Pearl sogar für 1 Euro verramscht. Ideal zum Schlachten für eigene Umbauten wie z.B. Wandschalter usw.: http://www.pearl.de/a-PX9454-1243.shtml Oft liegen/lagen sie auch Medion-PCs bei. Eventghost nimmt die X10-Befehle an und löst entweder selber Aktionen aus, oder ein AutoIT-Skript übernimmt die komplexere Steuerung. Das sind dann noch Hue-Lampen (mittlerweile ziemlich viele, wenn man einmal anfängt... sind zwar teuer, aber wir finden die Beleuchtungsmöglichkeiten damit toll), und demnächst sollen noch evtl. die auch recht günstigen Max! Heizkörperregler dazukommen, die laufen im Moment noch zeitgesteuert und über App. Letzlich hat man dann mit den in allen Räumen rumliegenden X10s die Musik, die Beleuchtung, und später evtl. auch noch die Heizung, in einer Hand. Mein persönlicher X10-Favorit ist übrigens dieses Modell: http://www.ebay.de/itm/Medion-200…d-/251833345589 Ist hier zwar etwas teurer, aber dafür am kleinsten und handlichsten, und hat den größten WAF. Die Zahlentasten rufen die wichtigsten Playlists/Musik-Genres auf, eine Wippe für Lautstärke, die andere demnächst für die Wohnzimmerhelligkeit, das Steuerkreuz soll zum Durchschalten für verschiedene Hue-Szenen dienen, und auch zum Speichern von gerade angelegten Szenen. Wenn ich denn mal wieder meine Programmierfäule überwinde... bin eigentlich mehr der Hardware-Frickler als Programmierer.
Und nun zurück zum Thema: Die oberen fünf Tastenpaare sollen die Airplay-Empfänger in den verschieden Etagen an- und abschalten können (und dann beim jeweils aktiven auch die Lautstärke regeln) , wenn ich z.B. in der Badewanne chillen möchte, meine Freundin aber gerade Fernsehen guckt. Kommt dann nicht so gut, wenn auf einmal die Musik unten mit anläuft. Dann muss man im Moment doch wieder das iPhone rausholen, lästig, besonders für die Dame....
Tja, und da hängt es immer noch, bin noch nicht weiter gekommen. Kann man denn sicher sein, dass wirklich alles, was das Info-Tool anzeigt, auch per Skript angesteuert werden kann?
Gruß
TomPS: Falls diese Story hier jemanden in diesem Forum stört bitte kurzen Hinweis, dann verlagere ich das.
-
Ja, guter Gedanke, das stimmt. Die iOS Remote-App nutzt, wie auch diverse Fremd-Apps, das DACP-Protokoll über http. Damit habe ich mich jetzt ca 2 Jahre rumgeprügelt, es wäre die erheblich elegantere Lösung gewesen. Das Protokoll ist zwar mal " geknackt" worden und mehr oder weniger offengelegt (allerdings nicht von Apple), aber der sog. Pairing-Prozess ist tricky und was für findige Coder (zu denen ich leider gar nicht gehöre). Ich habe selber lange und viel damit experimentiert, diverse Quellen angeschrieben, und auch einen Kumpel, der zur gerade genannten Kategorie im PHP-Bereich gehört, hinzugezogen. Am Ende hat es dann aber immer aus diesem oder jenem Grund nicht geklappt. iTunes unter Windows hat ja auch eine COM-Schnittstelle, aber auch die bedient wiederum nicht die Airplay-Funktionen. Und es gab auch mal um 2004 rum ein SDK, was aber irgendwie auf ominöse Weise wieder verschwunden ist. Konnte es nirgends mehr runterladen, wobei auch fraglich wäre was ich damit anfangen könnte. Ich meine also alle für mich erreichbaren Register gezogen zu haben, aber eben leider ohne Erfolg. Und habe jetzt gesagt Schluss, Zeit für Plan x oder y.
Kurz noch zum Hintergrund: Bei uns läuft iTunes unter Windows und bedient im Haus die diversen Airplay-Speaker. Wir haben uns nur wegen diesem Feature z.B. auch iPhones angelegt, für die Fernsteuerung. Vor Jahren war das nämlich schon eine halbwegs erschwingliche und ordentlich funktionierende Multiroom-Lösung (uns geht es primär darum, in vielen Räumen synchron die gleiche Musik zu hören). Daran hatte ich schon viele Jahre vorher mit wenig praktischem Erfolg gebastelt. Und der Clou ist nun, die iTunes-Fernsteuerung auch über billige X10 Funkfernbedienungen zu realisieren, was den WAF enorm erhöht. (Und wo man es auch verschmerzen kann, wenn sie z.B. mal in die Badewanne fallen.) Immer das Handy rauskramen zu müssen usw. war nicht wirklich sexy. Über die X10s lassen sich dann nebenbei auch noch die Hue-Lampen und Max!-Heizkörperregler bequem regeln, also ein günstiges kleines Heimautomationssystem. (Und neben AutoIT auch einer der Gründe warum das alles unter Windows läuft, für die X10s gibt es keine Mac-Treiber). Soweit läuft das alles auch schon prima mit AutoIT-Skripten. Jetzt fehlt halt nur noch das Sahnehäubchen, die Speaker auch einzeln regeln zu können.
Danke und Gruß
Tom -
Danke für den Hinweis zu der UDF. Ich hatte sie früher schon kurz gesehen, aber mir schien, dass der Airplay-Bereich (und damit meine gesuchten Controls) nirgends berührt wird (soweit ich das überblicke).
Der Vollständigkeit halber sei noch erwähnt: Sowohl das iTunes (12.5.1.21, 32-Bit) als auch meine Skriptversuche laufen unter Win7 32-Bit in einer Virtualbox, und diese unter Win10 64-Bit. Und zugreifen/skripten tue ich meist über eine RDP-Sitzung in die VM. Irre was heutzutage so alles geht
Hier jetzt eines meiner Experimente mit WinGetClassList und ControlGetText:
AutoIt
Alles anzeigenWinActivate ("iTunes") WinWaitActive ("iTunes") ControlClick ("iTunes", "", "[Class:Button; TEXT:AirPlay]") ; Klick auf den Airplay-Speaker-Auswahlbutton im iTunes-Hauptfenster Sleep (2000) ; optische Kontrolle dass die Speaker-Liste nach Klick aufklappt, dies funktioniert ControlClick ("iTunes", "", "[Class:Button; TEXT:Keller]") ; Versuch nun den Speaker "Keller" in der Liste zu klicken Sleep (2000) ; ab hier keine Reaktion im iTunes-Fenster zu sehen $ClassList = WinGetClassList ("iTunes", "") ; Einlesen und anzeigen der Klassen ToolTip ($ClassList) Sleep (5000) ; Ergebnisse werden hier im Post gleich im Screenshot gezeigt For $i = 0 to 20 $err = @error $s = "[CLASS:Button; INSTANCE:"&$i&"]" ; Versuch die Texte der (z.B.) Klasse "Button" zu fangen durch blindes Durchprobieren (0-20) $text = ControlGetText ("iTunes", "", $s) ; Error-Abfrage zeigt ob die lfd. Klassennummer überhaupt existiert $err = @error ToolTip ("Loop " & $i & " $text = " & $text) Sleep (1000) FileWriteLine ("c:\tools\Klassentexte.txt", $i & " : " & $text) Next ; Ergebnisse der Textdatei folgen gleich im Post
Der Screenshot:[Blockierte Grafik: http://gran-it.de/files/iTunes.jpg]
Und das Ergebnis in der Textdatei (Klassentexte.txt):
-------------------------------------------------------------------------------
0 :
1 :
2 : Suchen
3 : Zum MiniPlayer wechseln
4 : Nächste Ansicht
5 : Vorherige Darstellung anzeigen
6 :
7 : AirPlay
8 : Zufällige Genius-Wiedergabe
9 : Zum MiniPlayer wechseln
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
------------------------------------------------------------------------------Es sieht so aus, als ob bei allen gefundenen Klassen (habe das auch mit "Static" und "Edit" durchgespielt) nirgends als Text die gesuchten Lautsprecher auftauchen. Da sie ja aber im Infotool zu sehen sind, vermute ich, dass ich irgendwie an der falschen Stelle suche?
Danke für Eure Geduld.
-
Es existiert noch nicht wirklich. Ich hatte fragmentarisch erstmal nur versucht diese Texteinträge zu fangen. Dazu habe ich viel mit ControlGetText (auch mit den optionalen Parametern wie CLASS TEXT usw.) experimentiert, aber nachdem es nie funktionierte habe ich die zig Versionen nicht gespeichert. Ich hatte gehofft man könnte an der AU3Info-Ausgabe erkennen wie das zu machen ist.
Ich melde mich baldestmöglich mit ein paar Beispielen zurück. Danke soweit schonmal.
-
Guten Tag allerseits,
ich möchte iTunes automatisieren und hänge aktuell an folgendem Problem:
Die Airplay-Lautsprecher werden über eine Liste an- und abgewählt, welche erscheint, wenn man den Airplay-Button drückt. Wenn ich den Mauszeiger über diese geöffnete Liste führe, bekomme ich mit AU3Info folgende Werte (Summary):
---------------------------------------------------------------------------------------------------------------
>>>> Window <<<<
Title:
Class: iTunes
Position: 124, 56
Size: 382, 257
Style: 0x16000000
ExStyle: 0x00080088
Handle: 0x00040474>>>> Control <<<<
Class: Static
Instance: 4
ClassnameNN: Static4
Name:
Advanced (Class): [CLASS:Static; INSTANCE:4]
ID: 172779104
Text: Keller
Position: 75, 93
Size: 107, 23
ControlClick Coords: 89, 3
Style: 0x52010000
ExStyle: 0x00010020
Handle: 0x0003047A>>>> Mouse <<<<
Position: 164, 96
Cursor ID: 2
Color: 0xFFFFFF>>>> StatusBar <<<<
>>>> ToolsBar <<<<
>>>> Visible Text <<<<
Tönnchen
MACMINI
Keller
Mein Computer>>>> Hidden Text <<<<
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------In meinem Skript möchte ich gerne die Lautsprecher einzeln an-, abschalten und lautstärkeregeln können. Da ich die zugehörigen Listeneinträge scheinbar nicht direkt als Controls ansteuern kann, auch wenn AU3Info mir die z.B. zuhegörigen CLASSNNs liefert (ich habe viel mit Controlclick experimentiert, der Airplay-Button selber reagiert, aber ich habe bisher keinen Weg gefunden, per Controlclick direkt die Lautsprecher zu erwischen,) möchte ich gerne auswerten, welche Lautsprecher gerade in iTunes "sichtbar" sind, da sich diese ändern könnnen, und ich die zugehörigen Lautsprecher dann wohl per direktem MouseClick ansteuern muss. Im obigen Beispiel wären das die vier Einträge unter Visible Text. Ich habe bisher weder mit WinGetText noch ControlGetText geschafft, diesen Text einzufangen. Das sollte aber doch möglich sein, wenn AU3Info diesen Text "sieht"? Da ich nicht mehr weiterkomme wäre ich für Tips hierzu dankbar.
Beste Grüße
Tom -
-
Hallo allerseits,
ich fange gerade an mich in die GUI-Erstellung einzuarbeiten und bin jetzt bei Koda gelandet. Aber so langsam werde ich unsicher, ob das was ich vorhabe überhaupt sinnvoll machbar ist mit AutoIT.
Hier mein Wunsch: Ich möchte bei dem kleinen Programm BestPractice (kann MP3s z.B. verlangsamen ohne die Tonhöhe zu verändern; prima zum Nachspielen/Üben von Musikstücken) einige Bedienelemente anders angeordnet haben. So ist z.B. der Fortschritts-Slider zu klein und weit weg vom Pause-Button, das ist etwas lästig beim Üben. Ist es machbar, diesen Slider mit AutoIT (Koda?) zu "doppeln" und im eigentlichen Programmfenster von BestPractice an der gewünschten Stelle einzublenden? Er müßte die Postionsänderungen aber auch noch mehr oder weniger in Echtzeit an BP weiterreichen, damit es sich sinnvoll bedienen läßt.
Bevor ich da jetzt viel Zeit reinsetze wäre ich Euch für eine Einschätzung der Machbarkeit dankbar.
Gruß
Tom -
Perfekt, macht genau was mir vorschwebte.
Und wieder was gelernt, herzlichen Dank Oscar!
Beste Grüsse
Tom -
Danke für die Infos.
Dann muß ich mal schauen ob ich das betriebssicher hinkriege. Das Fensterhandle ändert sich ja bei jedem Programmneustart wenn ich es richtig sehe, muß dann also immer wieder neu ermittelt und übergeben werden, auch bei z.B. einen Absturz von Screamer, während das Skript läuft. Leider läßt sich Screamer nicht nur in einer Instanz starten, sonst hätte es ja über Neuaufruf per Run gehen können. Und vorher killen ist auch nicht wirklich schön, dann hätte man ja bei jeden Zugriff, z.B. um die Aufnahme zu starten, eine Unterbrechung in der Musik.
Bin aber doch etwas überrascht dass das so schwierig ist. Es gibt ja wahrscheinlich immer wieder Programme die schwer zu "fangen" sind, da würde die Option einen Prozess "anspringbar" zu machen doch nicht schaden, zumindest für Programme die nur ein Fenster haben. Über den Taskmanager komme ich ja händisch dran. Evtl. werde ich es dann auch auf dem Weg probieren, scheint nur nicht sehr elegant.
Nochmal danke!
-
Hi,
irgendwie habe ich das Gefühl auf der Leitung zu sitzen, aber ich finde auch nach längerem Suchen keinen Weg das hinzubekommen:
Kann man einen Prozess direkt an Hand seines Namens, so wie er Taskmanager steht, aktivieren? Also sowas wie ProcessActivate, ähnlich wie Winactivate?
Hintergund ist das Programm Screamer. Der Titel des Fensters ändert sich mit jedem abgespielten Stück und ich finde mit au3info auch im Text nichts um das Fenster sicher zu "fangen" und es in den Vordergrund zu holen.
Ich hatte etwas Ähnliches im Forum gefunden, leider ohne konkrete Lösung. Dort wurde u.a. der Rat gegeben dem Prozess etwas zu "übergeben". Wie ginge das z.B. ?
Merci
Tom -
-
Ahoi,
ich meine es mal in der Hilfe gesehen zu haben, finde es aber nicht mehr:
Wenn mir das Window Info Tool zu einem Fenster sichtbaren Text in mehreren Zeilen untereinander liefert, wie bringe ich diese Texte dann im Skript in den Textbereich der Fenstererkennung (z.B. WinExists), um das Fenster in genau diesem Zustand zu erkennen?
Wenn ich die im Window Tool untereinander stehenden Texte per Copy and Paste ins Skript bringe, werden sie auch in mehreren Zeile gepastet, was natürlich die Syntax zerschießt.
Ich meine irgendwo gelesen zu haben, dass die die Textteile per _ verbunden werden, aber wie ist dazu die genau Syntax?
Im Moment kriege ich mein Skript nicht dazu, das Fenster im Zustand mit drei bestimmten (visible) Textteilen zu erkennen.
Das Window Tool liefert für die Texte:
Schließen
Vorgang abgeschlossen
Es sind folgende Fehler aufgetreten:Versucht habe ich z.B.:
WinExists("Clipboard" , "Schließen _ Vorgang abgeschlossen _ Es sind folgende Fehler aufgetreten:")
Dieser Zustand wird aber dann nicht erkannt.
Danke
Tom -
Vielen Dank für Eure Antworten. Ich habe daraufhin weiterexperimentiert und festgestellt, dass man ja ganz bequem das aufpoppende Fenster der Canon Toolbox sofort wieder schließen und danach das Ereignis weiterverarbeiten kann.
Nochmals danke und Grüße
Tom
-
Guten Tag allerseits,
ich mache meine ersten Gehversuche mit Autoit und bin begeistert. Obwohl ich ewig nicht mehr programmiert habe (und auch nie besonders gut darin war) bin ich mit meiner Problemstellung schon recht weit gekommen.
Nun habe ich aber eine Frage die ich bisher nirgends beantwortet finden konnte:
Ist es grundsätzlich und mit vertretbarem Aufwand möglich, die vier Tasten eines Canon LIDE 70 USB-Scanners abzufangen und dann für eigene Zwecke zu verwenden? Normalerweise werden die von der Canon Toolbox verarbeitet. Von dort kann man sie auch an an ein externes Programm (oder auch Skript) weiterreichen, aber dann startet zuerst der Scanvorgang (oder müßte von Autoit wieder abgebrochen werden). Eleganter wäre es, die Tasten direkt nutzen zu können.
Ziel der ganzen Aktion ist es, einer sehbehinderten älteren Dame ein Vorlesegerät zu bauen, welches möglichst einfach und mit möglichst wenig Tastendrücken zu bedienen ist.
Vielen Dank für Infos!
Tom