Kleineres Ärgernis mit der WPS

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Kleineres Ärgernis mit der WPS

Post by DonLucio » Sun 13. Oct 2019, 14:03

Schon seit Urzeiten beobachte ich ein lästiges Verhalten bei der Positionierung von Icons auf der Arbeitsoberfläche (bzw. Desktop), aber auch in Ordnern, die ich auf dem Desktop angelegt habe.

Nach jedem System-Neustart sind einige der Icons nicht mehr da, wo ich sie zuvor platziert hatte. Zumeist sind sie nach oben gerutscht, mit der Folge, dass ich am rechten Rand einen vertikalen Scroll-Balken kriege. (Ich meine nicht den Fall von System-Crash, nach dem zuvor frisch angelegte Icons im Nirvana stehen.)

Das trifft nicht für alle Icons zu, aber ich kann da keine Regelmäßigkeit entdecken.

Auf der Suche nach einer Ursache ist mir bewußt geworden, dass ich gar nicht weiß, wo die Bildschirm-Positionen für Objekte gespeichert sind. Weiß da jemand Genaueres? Und gibt es Möglichkeiten, diese Bildschirm-Positionen zu korrigieren? Dann könnte man vielleicht ein Rexx-Script schreiben, das diese Korrektion vornimmt (im Startup-Folder).

In dem Zusammenhang ist mir noch eine Merkwürdigkeit aufgefallen:
Es gibt eine Rexx-Funktion SysCreateObject(). Dort kann man als Teil des Setup-Strings die gewünschte Bildschirm-Position ("ICONPOS=") mitgeben. Vergeblich aber suche ich nach einer entsprechenden Funktion SysQueryObject(), wo man die Parameter abfragen könnte. Gibt es die tatsächlich nicht oder habe ich nur nicht richtig gesucht? Eine solche Funktion könnte mein Problem der verrutschten Icons leicht lösen.

Danke,
Lutz Wagner

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

Post by ak120 » Sun 13. Oct 2019, 14:37

DonLucio wrote:
Sun 13. Oct 2019, 14:03
Schon seit Urzeiten beobachte ich ein lästiges Verhalten bei der Positionierung von Icons auf der Arbeitsoberfläche (bzw. Desktop), aber auch in Ordnern, die ich auf dem Desktop angelegt habe.
...
Das hängt u. a. davon ab, ob auch einige der Objektsymbole fixiert worden sind.
In dem Zusammenhang ist mir noch eine Merkwürdigkeit aufgefallen:
Es gibt eine Rexx-Funktion SysCreateObject(). Dort kann man als Teil des Setup-Strings die gewünschte Bildschirm-Position ("ICONPOS=") mitgeben. Vergeblich aber suche ich nach einer entsprechenden Funktion SysQueryObject(), wo man die Parameter abfragen könnte. Gibt es die tatsächlich nicht oder habe ich nur nicht richtig gesucht? Eine solche Funktion könnte mein Problem der verrutschten Icons leicht lösen.
Wenn es kein Object REXX sein soll, hilft in diesem Fall die Bibliothek WPTools (ftp://ftp.netlabs.org/pub/wptools/hektools.zip) weiter.

aschn
Posts: 833
Joined: Wed 25. Dec 2013, 22:47

Post by aschn » Sun 13. Oct 2019, 14:48

Dagegen hilft einen fehlerhaften Eintrag aus der Ini zu löschen. Leider wird der von Zeit zu Zeit wieder neu und falsch geschrieben.

MovingDesktopObjects auf Hobbes

Von der .cmd-Datei ein Programmobjekt erzeugen und den Parameter "run" eintragen. Dieses Programmobjekt dann am besten in den Shutdown-Folder verschieben. Falls kein Ini-Eintrag gefunden wird, ist alles gut, das Skript gibt dies aber trotzdem aus.

Den Shutdown-Folder musst Du erzeugen, wenn er noch nicht existiert: Desktop -> Kontextmenü -> Properties -> Seite XShutdown:
[ Create XShutdown folder ]

Statt des Shutdown-Folders kannst Du notfalls auch den Startup-Folder nehmen.

Das funktioniert auf meinen System schon seit 2014. In das nächste IFX wird das übrigens eingebaut sein.
Andreas Schnellbacher

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Sun 13. Oct 2019, 17:33

@akt120:
Danke für den Tip. Die hektools enthalten tatsächlich ein Äquivalent des von mir vermißten SysQueryObject(). Bei ihm heißt die Funktion WPToolsQueryObject und macht genau das, wonach ich gesucht habe: Den Setupstring eines vorgegebenen Objektes zu extrahieren.

Jedoch gibt's da einen Haken:
Wenn ich ein Objekt erzeuge, z.B. ein Programm-Objekt (mit SysCreateObject()), dann kann ich mittels SetupString die von mir gewünschte Icon-Position mitgeben: "ICONPOS=x,y" (wobei interessanterweise x,y nicht etwa Pixel-Koordinaten sind, sondern Prozentsätze vom Bildschirm, ausgehend von links unten).

Das funktioniert problemlos, jedoch:

Wenn ich nun aber diese Icon-Position wieder abfragen will, nützt mir Henk's WPToolsQueryObject() leider gar nichts: Diese Funktion liefert mir zwar den korrekten SetupString zurück, aber leider ausgerechnet ohne den ICONPOS-Parameter.

@aschn:
Das Problem, für das du dieses MovingDesktopObjects geschrieben hast, scheint tatsächlich genau meines zu sein (wobei ich bis dato nicht wußte, was die Ursache dafür ist). Ich habe mal in das Rexx-Script reingeschaut: Sehe ich das richtig, dass dein Script die fehlerhaften Icon-Positionen nicht korrigiert, sondern die Angaben aus der OS2.INI entfernt?
Führt das nicht dazu, dass das Objekt beim nächsten Systemstart "irgendwo" planlos in der Gegend herumhängt (wahrscheinlich einfach von oben links am Bildschirmrand angeordnet)?

Mein Ziel wäre es:
Ein Script im Shutdown-Folder, das alle Icon-Positionen ausliest und irgendwo speichert. Dann ein zweites Script (im Startup-Folder oder nach Bedarf), das alle (oder ausgewählte) Icon-Positionen wieder herstellt. Das müßte doch möglich sein?

BTW:
Als wertvolle Erkenntnis aus der Lektüre deines Scriptes nehme ich mit: Die Icon-Positionen werden in der OS2.INI gespeichert, und zwar nicht etwa unter ihrer ObjectID (wo ich vergeblich gesucht hatte), sondern gemeinsam in der INI-App 'PM_Workplace:Location'. Uff, das ist schon so ein Geheimwissen ... :-)

Gibt's da eigentlich Literatur drüber?

Danke,
Lutz Wagner

aschn
Posts: 833
Joined: Wed 25. Dec 2013, 22:47

Post by aschn » Sun 13. Oct 2019, 17:39

Probier's doch einfach aus. Wenn die Symbole verschoben sind, dann musst Du sie aber noch einmal von Hand verschieben, bis der Rollbalken weg ist.

Vieles ist undokumentiert, aber es gibt Einige, die ein paar Gesetzmäßigkeiten herausgefunden haben.
Zuletzt geändert von aschn am Sun 13. Oct 2019, 17:41, insgesamt 1-mal geändert.
Andreas Schnellbacher

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

Post by ak120 » Mon 14. Oct 2019, 00:38

DonLucio wrote:
Sun 13. Oct 2019, 17:33
Wenn ich nun aber diese Icon-Position wieder abfragen will, nützt mir Henk's WPToolsQueryObject() leider gar nichts: Diese Funktion liefert mir zwar den korrekten SetupString zurück, aber leider ausgerechnet ohne den ICONPOS-Parameter.
Hier benötigt man die Informationen, welche in dem erweiterten Attribut (.ICONPOS) des entsprechenden Ordnerobjekts, der die fraglichen Objekte enthält, eingetragen sind.

Mit den SOM-tauglichen Sprachen könnte man die jeweiligen Methoden nutzen:
~ wpFreeIconPosData
~ wpInitIconPosData
~ wpQueryDefaultIconPosition
~ wpQueryIconPosition
~ wpQueryNextIconPosition
~ wpSetDefaultIconPosition
~ wpSetNextIconPosition
~ wpStoreIconPosData
Siehe Workplace Shell Programming Reference für weiterführende Beispiele

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Mon 14. Oct 2019, 19:05

ak120 wrote:
Mon 14. Oct 2019, 00:38
Hier benötigt man die Informationen, welche in dem erweiterten Attribut (.ICONPOS) des entsprechenden Ordnerobjekts, der die fraglichen Objekte enthält, eingetragen sind.
Danke für diesen Hinweis.
Jetzt müßte ich nur noch wissen, wie die Daten gegliedert sind (hinter den 2 Bytes Typ-Info).
ak120 wrote:
Mon 14. Oct 2019, 00:38
Mit den SOM-tauglichen Sprachen könnte man die jeweiligen Methoden ....
Siehe Workplace Shell Programming Reference für weiterführende Beispiele
Hab die genannten Manuals in edm2.com gefunden (CP1.INF, CP2.INF, CP3.INF). Kann dort leider zwar zahlreiche Methoden finden, die sich um die .ICONPOS drehen, nur leider keine Datenstruktur.

Kannst du mir da weiterhelfen?

Danke,
Lutz Wagner
Zuletzt geändert von DonLucio am Mon 14. Oct 2019, 19:06, insgesamt 1-mal geändert.

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

Post by ak120 » Thu 17. Oct 2019, 09:57

DonLucio wrote:
Mon 14. Oct 2019, 19:05
Jetzt müßte ich nur noch wissen, wie die Daten gegliedert sind (hinter den 2 Bytes Typ-Info).
Das sollte implementierungsabhängig dem Datentyp POINTL oder dem jeweiligen Zeiger entsprechen.
Hab die genannten Manuals in edm2.com gefunden (CP1.INF, CP2.INF, CP3.INF). Kann dort leider zwar zahlreiche Methoden finden, die sich um die .ICONPOS drehen, nur leider keine Datenstruktur.
Wenn man das Toolkit bereits installiert hat, erhält man die WP Shell Programming Reference aus den Dateien wps1.inf+wps2.inf+wps3.inf (im Unterverzeichnis \os2tk45\book), welche die Datentypen zumindest C-mäßig beschreibt. Oder einfach mal in der \os2tk45\inc\pmwp.inc bzw pmtypes.inc nachsehen, bzw. \idl\wptypes.idl.
Zuletzt geändert von ak120 am Thu 17. Oct 2019, 10:42, insgesamt 1-mal geändert.

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Sat 19. Oct 2019, 13:21

ak120 wrote:
Thu 17. Oct 2019, 09:57
Wenn man das Toolkit bereits installiert hat, erhält man die WP Shell Programming Reference aus den Dateien wps1.inf+wps2.inf+wps3.inf (im Unterverzeichnis \os2tk45\book), welche die Datentypen zumindest C-mäßig beschreibt. Oder einfach mal in der \os2tk45\inc\pmwp.inc bzw pmtypes.inc nachsehen, bzw. \idl\wptypes.idl.
Wieviele verschiedene "Toolkits" gibt es eigentlich?
Ich habe installiert das "IBM Developer's Toolkit for OS/2 2.1." Es befindet sich in x:\Toolkit21 und enthält im ..BOOK\-Unterverzeichnis diese inf-Dateien:

Code: Select all

cpgref1          .inf     711,830 .a.. 30-04-93  1:29:12
cpgref2          .inf     366,241 .a.. 30-04-93  1:34:32
cpgref3          .inf     565,951 .a.. 22-04-93 19:43:58
ipfc20           .inf     461,870 .a.. 30-04-93  1:26:02
ipfcexmp         .inf     128,733 .a.. 22-04-93 19:33:28
kdebug           .inf      94,381 .a.. 30-04-93  1:22:12
pmfun            .inf     625,695 .a.. 22-04-93 19:54:42
pmgpi            .inf     944,784 .a..  6-05-93 22:15:28
pmhok            .inf     193,463 .a.. 22-04-93 20:09:42
pmmsg            .inf   1,286,089 .a.. 22-04-93 20:31:40
pmrel            .inf     303,638 .a.. 22-04-93 20:34:50
pmwin            .inf     905,173 .a..  6-05-93 22:24:52
pmwkp            .inf     543,357 .a..  6-05-93 22:31:12
rexxapi          .inf     113,048 .a.. 22-04-93 20:57:22
som              .inf     200,863 .a.. 22-04-93 19:40:10
toolinfo         .inf     389,291 .a..  6-05-93 22:17:06
Das nur als Anmerkung.
Zum Thema selbst ist zu sagen: Ich habe beschlossen, darauf zu verzichten, das Geheimnis der .ICONPOS selbst zu ergünden. Immerhin ist es in Hank Kelders Paket WPTOOLS ausreichend gelöst. Wie er es geschafft hat, diese .ICONPOS zu ermitteln, will ich gern sein Geheimnis sein und bleiben lassen :-)

Gruß,
Don Lucio.

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

Post by ak120 » Sun 20. Oct 2019, 00:17

DonLucio wrote:
Sat 19. Oct 2019, 13:21
Wieviele verschiedene "Toolkits" gibt es eigentlich?
Zu jeder OS/2-Version zumindest eines.
Ich habe installiert das "IBM Developer's Toolkit for OS/2 2.1." Es befindet sich in x:\Toolkit21 und enthält im ..BOOK\-Unterverzeichnis diese inf-Dateien:
Es sollte nachvollziehbar sein, daß ein Toolkit von 1993, welches für die OS/2 Versionen 1.3 bis 2.1 durchaus brauchbar ist, die in Warp 4 enthaltenen zusätzlichen Funktionen nicht umfaßt.

Spätestens seit dem Jahr 2001 wird das Toolkit auf den Installationsmedien des Betriebssystems mitgeliefert, dort wo auch Java und der Webbrowser drauf sind.
Zuletzt geändert von ak120 am Sun 20. Oct 2019, 00:17, insgesamt 1-mal geändert.

User avatar
LotharS
Posts: 574
Joined: Sun 29. Dec 2013, 20:07
Location: Düsseldorf

Post by LotharS » Sun 20. Oct 2019, 10:40

DonLucio wrote:
Sat 19. Oct 2019, 13:21
Ich habe installiert das "IBM Developer's Toolkit for OS/2 2.1."
Hier os2tk45 aus ANPM. Die Pfade sind dann sicher andere als vorher, und es gibt aufzuräumen :)

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Sun 20. Oct 2019, 16:14

@Lothar S.:
Tatsächlich, habe auf meiner ArcaOS-DVD das Toolkit 4.5 und alle erforderlichen WPS?.INF gefunden.

ak120 wrote:
Sun 20. Oct 2019, 00:17
Es sollte nachvollziehbar sein, daß ein Toolkit von 1993, welches für die OS/2 Versionen 1.3 bis 2.1 durchaus brauchbar ist, die in Warp 4 enthaltenen zusätzlichen Funktionen nicht umfaßt.
Oh, so alt schon ....
Also ich denke, es ist nachvollziehbar, dass ich meine Finger von solchen Sachen lasse, da meine C++-Kenntnisse und praktischen Erfahrungen aus eben diesen Jahren stammen... :D

25 Jahre Erfahrungen mit (VX-) Rexx haben mich für die höheren Weihen der Software-Entwicklung verdorben. Bisher konnte ich - dank zahlreicher Rx*.DLLs - alles Nötige, auch systemnahes Zeugs, mit Rexx lösen. Wenn es halt mit diesen geheimnisvollen .ICONPOS nicht geht, dann überlasse ich gern Anderen das Feld. Zumal, wie bereits geschrieben, mit den WPTools von Hank Kelder ein brauchbares Workaround existiert.

Gruß,
und nochmal danke für eure Bemühungen,
Don Lucio.

aschn
Posts: 833
Joined: Wed 25. Dec 2013, 22:47

Post by aschn » Sun 20. Oct 2019, 17:06

DonLucio wrote:
Sun 20. Oct 2019, 16:14
Wenn es halt mit diesen geheimnisvollen .ICONPOS nicht geht, dann überlasse ich gern Anderen das Feld. Zumal, wie bereits geschrieben, mit den WPTools von Hank Kelder ein brauchbares Workaround existiert.
Nur nebenbei: Das ist so nicht richtig. Außerdem heißt er Henk.
Andreas Schnellbacher

André Heldoorn
Posts: 5
Joined: Thu 17. Oct 2019, 19:48

Post by André Heldoorn » Mon 21. Oct 2019, 04:36

Einfach jedes Mal das WPS sichern und wiederherstellen?

Besser, getestet während einer Installation von eCS 1.2:

0. Objekte in der Nähe von mindestens 3 Ecken des Bildschirms verhindern nicht zusammenhängende, geringfügige Bewegungen später.
1. Herunterfahren. Ändern der Einstellung zum Herunterfahren auf Neustart.
2. Neustart.
3. Das Umschalten der Abschaltoption ist das, worum es geht. Sie können diese Einstellung beim nächsten Mal rückgängig machen.
Zuletzt geändert von André Heldoorn am Mon 21. Oct 2019, 04:38, insgesamt 2-mal geändert.

User avatar
wilfried
Posts: 624
Joined: Mon 23. Dec 2013, 18:26
Location: Barsinghausen

Post by wilfried » Mon 21. Oct 2019, 08:11

Nach jedem System-Neustart sind einige der Icons nicht mehr da, wo ich sie zuvor platziert hatte. Zumeist sind sie nach oben gerutscht, mit der Folge, dass ich am rechten Rand einen vertikalen Scroll-Balken kriege.
Seit ich unter ArcaOS 5.0.3 das X-Center nicht mehr ständig als Fußzeile anzeige, sondern nur noch wenn ich den Cursor am unteren Bildschirmrand platziere. Habe ich diese "wandernden" Icons nicht mehr!

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Mon 21. Oct 2019, 10:48

wilfried wrote:
Mon 21. Oct 2019, 08:11
Seit ich unter ArcaOS 5.0.3 das X-Center nicht mehr ständig als Fußzeile anzeige, sondern nur noch wenn ich den Cursor am unteren Bildschirmrand platziere. Habe ich diese "wandernden" Icons nicht mehr!
Tatsächlich! Funktioniert.

Danke für den Tip.
Don Lucio.

André Heldoorn
Posts: 5
Joined: Thu 17. Oct 2019, 19:48

Post by André Heldoorn » Mon 21. Oct 2019, 14:42

Mit eCenter oder xCenter: Herunterfahren. Ändern der Einstellung zum Herunterfahren auf Neustart, Neustart.

User avatar
DonLucio
Posts: 436
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio » Mon 21. Oct 2019, 16:23

André Heldoorn wrote:
Mon 21. Oct 2019, 04:36
Einfach jedes Mal das WPS sichern und wiederherstellen?
Wenn du damit meinst, dass im Rahmen einer laufenden OS/2-Installation die WPS-Dinge wiederhergestellt werden sollen: Nein, das war nicht mein Ansatz beim Erstellen dieses Threads.

Mir geht es darum, die WPS-Einstellungen eines funktionsfähigen OS/2-Systems zu übertragen auf ein neues, frisch installiertes OS/2-System. (Wenn ich hier von OS/2 rede, meine ich immer OS/2 inkl. aller Derivate wie eCS, ArcaOS, etc.)

Der Punkt ist, dass ich alle paar x Jahre (x=eine leider nicht sehr große Zahl, bisweilen auch kleiner 1) mein System neu installieren muß, wg. Plattencrash oder anderer äußerer Umstände. Und jedes mal bin ich gefühlt 1 Woche damit beschäftigt, bis alle meine WPS-Einstellungen wieder so sind, wie sie im alten System waren.

Das Backup und Restore der reinen Daten ist prinzipiell gelöst. Aber diese ganzen abstrakten Objekte, die das OS/2 bietet (und die den eigentlichen Reiz dieses OS ausmachen) lassen sich nicht so einfach "backuppen".

Es gibt dafür verschiedene Ansätze, das Problem zu lösen, z.B. den Desktop Backup Advisor (als Bestandteil des kostenpflichtigen Produktes "Object Desktop" von Stardock) oder die hier schon einige Male erwähnte Freeware "WPTools" von Henk Kelder.

Vor allem letztere hat sich (jedenfalls bei mir) als einzige wirklich zuverlässige Lösung erwiesen: Regelmäßig WPSBKP fahren, dann bei Bedarf WPSREST. Man kann das beides wunderbar in eigene Shell-(Rexx-) Skripte einbauen, z.B. in STARTUP.CMD.

Damit könnte ich ja zufrieden sein. Aber: Für den allgemeinen Backup & Restore (also die "echten" Daten) habe ich mir ein eigenes kleines VXRexx-Programm geschrieben und da wollte ich einfach die Funktion des Sicherns der WPS-Objekte mit einbauen (gewissermaßen "seamless"). Ich bin auch soweit gekommen, alle Parameter eines abstrakten Objjektes (den sagenumwobenen "SETUP-String") zu ermitteln und damit das Objekt in meiner eigenen Umgebung zu speichern. Leider mit der Ausnahme von ICONPOS. Daran bin ich gescheitert, da ich nicht über das C++- und OO-Knowhow verfüge, das offenbar erforderlich ist, dem OS/2 seine Geheimnisse zu entreissen.

Henk Kelder hat es gekonnt und ich büße nur wenig an Bedien-Komfort ein, wenn ich seine Programme in mein Programm einfach so, wie sie sind, einbaue.

Von daher hat sich dieser Thread erledigt. Und mit meiner Wissens-Lücke werde ich zu leben lernen ;)

Gruß,
Don Lucio.

André Heldoorn
Posts: 5
Joined: Thu 17. Oct 2019, 19:48

Post by André Heldoorn » Mon 21. Oct 2019, 18:13

DonLucio wrote:
Mon 21. Oct 2019, 16:23
Mir geht es darum, die WPS-Einstellungen eines funktionsfähigen OS/2-Systems zu übertragen auf ein neues, frisch installiertes OS/2-System. (Wenn ich hier von OS/2 rede, meine ich immer OS/2 inkl. aller Derivate wie eCS, ArcaOS, etc.)

Und jedes mal bin ich gefühlt 1 Woche damit beschäftigt, bis alle meine WPS-Einstellungen wieder so sind, wie sie im alten System waren.
Einverstanden. Einmalig; nicht kontinuierlich.

Ich habe 12 eigene Skripte, die so viel wie möglich tun, aber nicht übertreiben. Ohne ICONPOS. Danach kostet die pixelgenaue Positionierung unabhängig von der Bildschirmauflösung weniger als einen halben Tag. Die Installationsprogramme von Watcom verwenden ICONPOS mit unterschiedlichen Bildschirmauflösungen, FWIW:

Code: Select all

if (szVideoMode = "1024x768") then do
   y = 45;
   nDeltaY = -10;
   nDeltaX = 13;
end
...
x = 5;
x = x + nDeltaX;
y = y + nDeltaY;
...
'ICONPOS=' || x || ',' || y || ';' ||,