Abfrage von Mausklick in Standard-REXX

(DE) Anwendungen für Office, Multimedia und Spiele, Werkzeuge, Hilfsprogramme, etc
(EN) Applications for Office, Multimedia or Games, Tools, Utilities, e.g.
User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Abfrage von Mausklick in Standard-REXX

Post by Wolfie » Wed 5. Dec 2018, 15:32

Hallo REXX-Freunde,

gibt es außer den beiden auf Hobbes verfügbaren DLLs (mruntime-1.00b und rexxmous) eine weitere Möglichkeit, einen Mausklick nebst Mauskoordinaten in Standard-REXX abzufragen?

Ich habe ein umfangreiches Programm in Standard-REXX (mit Erweiterungen REXXUtil, ydbautil, sqlrexx und PYRxUtil), das ich noch durch Maus-Interaktionen aufhübschen möchte. Leider funktionieren die beiden oben genannten Routinen nicht bzw. nicht zuverlässig.

- mruntime ist für mich nicht anwendbar, da es auf einen Mausklick wartet, ich will aber Maus und Tastatur gleichberechtigt benutzen.
- rexxmous dagegen hat das Feature, nur die Mauskoordinaten bei Klick zu melden, nicht aber auf einen Klick zu warten. Es funktioniert auch wie gewünscht. Sobald ich jedoch eine interne REXX-Prozedur oder -Funktion aufrufe, erhalte ich anschließend keine Ergebnisse mehr auf die Mausklickabfrage.

Vielleicht wäre mruntime für mich nutzbar. Ohne verfügbare Dokumentation kann ich aus dem mitgelieferten Beispiel aber nicht erkennen, wie ich das Warten auf Mausklick abschalten kann.

Viele Grüße
Wolfgang

User avatar
ak120
Posts: 928
Joined: Thu 8. May 2014, 12:50
Location: Demmin

Post by ak120 » Thu 6. Dec 2018, 23:40

Wolfie wrote:
Wed 5. Dec 2018, 15:32
Hallo REXX-Freunde,

gibt es außer den beiden auf Hobbes verfügbaren DLLs (mruntime-1.00b und rexxmous) eine weitere Möglichkeit, einen Mausklick nebst Mauskoordinaten in Standard-REXX abzufragen?
Na klar. Da fallen mir zumindest RexxBOS (http://www.logisoftar.com/ProductsRexxbos.htm) und REXXIO (http://www.lestec.com.au/lestec/lestec.cgi) ein, falls es um die Basisbetriebssystemfunktionalität geht.

Es gibt evtl. noch weitere Möglichkeiten, ohne sich selbst eine entsprechende Funktionsbibliothek basteln zu müssen.

User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Post by Wolfie » Sat 8. Dec 2018, 00:13

Vielen Dank ak120 für Deine Antwort.

Ich habe mir sogleich Deine beiden Vorschläge angesehen:

Bei RexxIO ist die Mausposition etwas umständlich aus einer Datei auszulesen. Das wäre nicht das Hauptproblem. Das aus der Datei ausgelesene Ergebnis enthält jedoch leider die absolute Pixelposition auf dem Bildschirm, unabhängig davon, ob der Mausklick auf meinem REXX-Textfenster erfolgte oder daneben. Um die aktuelle Spalten und Zeilenposition im REXX-Textfenster zu erhalten müsste ich also ständig die Position meines REXX-Textfensters auf dem Bildschirm überwachen und zusätzlich anhand der Schriftartgröße berechnen. Sicherlich keine unlösbare Aufgabe, aber momentan doch etwas viel Aufwand für ein kleines "nice to have".

Ob die Funktion RmGetPtrPos im Paket RexxBos ebenfalls die Koordinaten des Mauszeigers in Pixeln auf dem Desktop angibt wie bei RexxIO oder als Spalten-/Zeileninformation im Textfenster wie bei rexxmous weiß ich nicht, dazu müsste ich mir das Paket für 59$ kaufen. Da ich nicht weiß, ob mir diese Routine etwas nützt, nehme ich doch erst einmal Abstand davon, das Paket zu erwerben.

Schade, dass rexxmous so buggy ist, ansonsten würde es genau meinen Anforderungen genügen.

Danke nochmals für die Info,
Wolfgang

User avatar
ak120
Posts: 928
Joined: Thu 8. May 2014, 12:50
Location: Demmin

Post by ak120 » Sat 8. Dec 2018, 10:31

Wolfie wrote:
Sat 8. Dec 2018, 00:13
Bei RexxIO ist die Mausposition etwas umständlich aus einer Datei auszulesen. Das wäre nicht das Hauptproblem. Das aus der Datei ausgelesene Ergebnis enthält jedoch leider die absolute Pixelposition auf dem Bildschirm, unabhängig davon, ob der Mausklick auf meinem REXX-Textfenster erfolgte oder daneben.
Das Betriebssystem bietet leider keine andere Möglichkeit. Das bezeichnete "Textfenster" ist leider eben auch nur ein "PM-Fenster" zumindest aus der Sicht des Zeigers.
Um die aktuelle Spalten und Zeilenposition im REXX-Textfenster zu erhalten müsste ich also ständig die Position meines REXX-Textfensters auf dem Bildschirm überwachen und zusätzlich anhand der Schriftartgröße berechnen. Sicherlich keine unlösbare Aufgabe, aber momentan doch etwas viel Aufwand für ein kleines "nice to have".
Zusätzlich wären noch die weiteren Möglichkeiten zur Ereignisauslösung und Zustandsänderung zu beachten.
Ob die Funktion RmGetPtrPos im Paket RexxBos ebenfalls die Koordinaten des Mauszeigers in Pixeln auf dem Desktop angibt wie bei RexxIO oder als Spalten-/Zeileninformation im Textfenster wie bei rexxmous weiß ich nicht, dazu müsste ich mir das Paket für 59$ kaufen. Da ich nicht weiß, ob mir diese Routine etwas nützt, nehme ich doch erst einmal Abstand davon, das Paket zu erwerben.
Ich habe es nicht ohne Grund zuerst aufgeführt, da es noch am ehesten den vermuteten Anforderungen entspricht. Man kann dort sicherlich freundlich für eine Probierversion anfragen.

Die russischen Lösungen, welche entweder nur teilweise oder nur in einer Gesamtbildschirmsitzung funktionieren, habe ich wegen der entstehenden Folgekosten bereits während der Selektion ausgesondert.

Der Aufwand die gesamte REXX-Anwendung in eine visuelle Umgebung zu übertragen ist oftmals deutlich geringer.

User avatar
ak120
Posts: 928
Joined: Thu 8. May 2014, 12:50
Location: Demmin

Post by ak120 » Sat 8. Dec 2018, 15:26

Wolfie wrote:
Sat 8. Dec 2018, 00:13
Ob die Funktion RmGetPtrPos im Paket RexxBos ebenfalls die Koordinaten des Mauszeigers in Pixeln auf dem Desktop angibt wie bei RexxIO oder als Spalten-/Zeileninformation im Textfenster wie bei rexxmous weiß ich nicht, dazu müsste ich mir das Paket für 59$ kaufen. Da ich nicht weiß, ob mir diese Routine etwas nützt, nehme ich doch erst einmal Abstand davon, das Paket zu erwerben.
Man braucht kein Paket zu kaufen, es ist auch die elektronische Lieferung zu €51,98 möglich - deutlich günstiger als diese Sponsor Unit und sonstige Vaporware-Geschichten - und mit ordentlicher Dokumentation als INF-Datei. Wer unbedingt das gedruckte Handbuch benötigt, sollte weitere €60,31 für die Express-Lieferung einplanen.

Die Funktionen arbeiten Zellen-basiert und bilden die entsprechenden OS/2-Subsystemaufrufe ab. Ich hänge einfach die Beispiele in den Anhang.
Schade, dass rexxmous so buggy ist, ansonsten würde es genau meinen Anforderungen genügen.
Das wurde auch nur schnell aus dem Virtual Pascal Beispielen zusammengeschustert.
You do not have the required permissions to view the files attached to this post.
Last edited by ak120 on Sat 8. Dec 2018, 15:26, edited 1 time in total.

User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Post by Wolfie » Sun 9. Dec 2018, 08:50

Vielen Dank Andreas für Deine Infos und Unterstützung, ich werde mal schauen, wie ich jetzt weitermache. Vorrangig bereite ich mich jetzt erst mal auf das Usertreffen in Köln vor.

Gruß
Wolfgang

User avatar
ak120
Posts: 928
Joined: Thu 8. May 2014, 12:50
Location: Demmin

Post by ak120 » Tue 11. Dec 2018, 20:35

Wolfie wrote:
Sun 9. Dec 2018, 08:50
Vielen Dank Andreas für Deine Infos und Unterstützung, ich werde mal schauen, wie ich jetzt weitermache. Vorrangig bereite ich mich jetzt erst mal auf das Usertreffen in Köln vor.
Bei den Unmengen an verwendeten proprietären REXX-Bibliotheken von Drittanbietern habe ich den Ansatz über Curses ausgeschlossen, da mir der Änderungsaufwand doch etwas zu hoch erscheint. Daher habe ich die Erweiterungen, welche manche Implementierungen bzgl. der Mausunterstützung bieten, nicht näher betrachtet. Aber wenn eine gewisse Plattformneutralität erreicht werden soll, möchte ich es an dieser Stelle auch nicht verschweigen.

Ob der Aufwand gegenüber der Erstellung einer eigenen spezifischen Bibliothek in diesem Fall lohnt, kann ich leider nicht beurteilen. Das hängt zu sehr von der Ausgangslage ab. Die Ausgabe 7/95 der Zeitschrift OS/2 Inside enthält dazu u.U. einen praktischen Artikel ("Über den Tellerrand"). Das Begleitmaterial befindet sich im Anhang und die paar Seiten kann ich zur Not faxen.
You do not have the required permissions to view the files attached to this post.

User avatar
Frank Wochatz
Posts: 931
Joined: Sun 22. Dec 2013, 22:04
Location: Berlin

Post by Frank Wochatz » Wed 12. Dec 2018, 13:22

Hallo Wolfgang,

VisproRexx ist schon eine Weile frei verfügbar. Ev. kannst Du dein Programm nach Vispro übertragen, und dort die Mausfunktionen benutzen. Falls das in Frage kommt, bitte noch al die Aufgabe genau beschreiben (ich hab es noch nicht ganz kapiert), dann sehe ich mal nach ob das mit den Vispro Funktionen geht. Das wäre dann allerdings ein PM-Programm.

User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Post by Wolfie » Wed 12. Dec 2018, 14:55

Vielen Dank für Eure Hinweise.

Das Programm, was das im Laufe der Jahre auf nunmehr über 4000 Zeilen angewachsen ist, habe ich speziell meinen Anforderungen angepasst. Die Menüsteuerung erfolgt über Hotkeys und Pfeiltasten. Letztens ertappte ich mich dabei, dass ich einen Menüpunkt mit der Maus anklicken wollte, anstelle mich dorthin mit den Pfeiltasten zu bewegen. Diese Möglichkeit wäre zwar schön, ist aber nicht essentiell wichtig. Auf jeden Fall denke ich, dass es den Aufwand nicht rechtfertigt, das Programm allein aus diesem Grunde auf eine andere Sprache umzustellen. Momentan habe ich auch noch eine Menge anderer Baustellen, so dass ich die Mausunterstützung erst einmal auf Eis gelegt habe.

Vielen Dank für Eure Hinweise.
Wolfgang

User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Post by Wolfie » Fri 4. Jan 2019, 14:11

Ein vielversprechender Ansatz, die Mauscursor-Abfrage in mein Standard-REXX-Programm einzubauen, war die Routine rexxmous (Simple mouse DLL for REXX, with VP source), die auf Hobbes verfügbar ist. Leider funktionierte sie nicht zuverlässig. Ich sprach über dieses Problem beim Usertreffen in Köln und Frank hat sich die Mühe gemacht, die Routine anhand des Pascal-Quelltextes in C neu zu schreiben. Das Umswitchen von rexxmous auf Franks rxmous war denkbar einfach, da Aufruf und Rückgabeparameter völlig identisch sind. Franks Routine funktioniert einwandfrei, nochmals vielen Dank dafür. Ich habe die Mausabfrage schon an vielen Stellen in meinem Programm einbauen können. :D

Gruß
Wolfgang

User avatar
efbe
Posts: 49
Joined: Thu 11. Sep 2014, 19:33
Location: Dortmund

Post by efbe » Sat 5. Jan 2019, 21:28

Wolfie wrote:
Fri 4. Jan 2019, 14:11
Ein vielversprechender Ansatz, die Mauscursor-Abfrage in mein Standard-REXX-Programm einzubauen, war die Routine rexxmous (Simple mouse DLL for REXX, with VP source), die auf Hobbes verfügbar ist. Leider funktionierte sie nicht zuverlässig. Ich sprach über dieses Problem beim Usertreffen in Köln und Frank hat sich die Mühe gemacht, die Routine anhand des Pascal-Quelltextes in C neu zu schreiben. Das Umswitchen von rexxmous auf Franks rxmous war denkbar einfach, da Aufruf und Rückgabeparameter völlig identisch sind. Franks Routine funktioniert einwandfrei, nochmals vielen Dank dafür. Ich habe die Mausabfrage schon an vielen Stellen in meinem Programm einbauen können. :D
Nachdem das klappt, will ich die dll nicht für mich behalten. Soll ich sie auf Hobbes hochladen, oder wohin sonst?

MfG
Frank

User avatar
Wolfie
Posts: 84
Joined: Sat 9. Aug 2014, 19:11
Location: Leipzig

Post by Wolfie » Sun 6. Jan 2019, 13:10

Hobbes wäre gut, da steht Deine Routine dann gleich neben ihrem Vorgänger.

Ich habe übrigens die Mausabfrage jetzt auch in IrxRadio eingebaut. Da kann man die Radio-Tasten direkt per Maus bedienen. Die neue Version von IrxRadio kommt dann auch auf Hobbes.

Gruß
Wolfgang

User avatar
efbe
Posts: 49
Joined: Thu 11. Sep 2014, 19:33
Location: Dortmund

Post by efbe » Sun 6. Jan 2019, 13:27

Wolfie wrote:
Sun 6. Jan 2019, 13:10
Hobbes wäre gut, da steht Deine Routine dann gleich neben ihrem Vorgänger.
Ist auf Hobbes in pub/incoming

MfG
Frank