Jump to content

How to programmatically fight with WPS: Difference between revisions

From EDM2
Created page with "By [[]] * DESCRIPTION * TOOLS * [[How to programmatically fight with WPS:..."
 
Ak120 (talk | contribs)
mNo edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
By [[]]
''By [[Ilya Zakharevich]]''


* [[How to programmatically fight with WPS:DESCRIPTION|DESCRIPTION]]
* [[{{PAGENAME}}:Description|Description]]
* [[How to programmatically fight with WPS:TOOLS|TOOLS]]
* [[{{PAGENAME}}:Tools|Tools]]
* [[How to programmatically fight with WPS:.CLASSINFO, 90 sec delay, DEFAULTVIEW|.CLASSINFO, 90 sec delay, DEFAULTVIEW]]
* [[{{PAGENAME}}:.CLASSINFO, 90 sec delay, DEFAULTVIEW|.CLASSINFO, 90 sec delay, DEFAULTVIEW]]
* [[How to programmatically fight with WPS:PMWP entries in POPUPLOG.OS2|PMWP entries in POPUPLOG.OS2]]
* [[{{PAGENAME}}:PMWP entries in POPUPLOG.OS2|PMWP entries in POPUPLOG.OS2]]
* [[How to programmatically fight with WPS:Lost/broken desktop or broken Templates or Startup|Lost/broken desktop or broken Templates or Startup]]
* [[{{PAGENAME}}:Lost/broken desktop or broken Templates or Startup|Lost/broken desktop or broken Templates or Startup]]
* [[How to programmatically fight with WPS:|URL objects]]
* [[{{PAGENAME}}:URL objects|URL objects]]
* [[How to programmatically fight with WPS:|WPObjData and "Hammer and ..." icons]]
* [[{{PAGENAME}}:WPObjData and "Hammer and ..." icons|WPObjData and "Hammer and ..." icons]]
* [[How to programmatically fight with WPS:|WPVault, x:/NOWHERE, NOTVISIBLE, SHOWALLINTREEVIEW]]
* [[{{PAGENAME}}:WPVault, x:/NOWHERE, NOTVISIBLE, SHOWALLINTREEVIEW|WPVault, x:/NOWHERE, NOTVISIBLE, SHOWALLINTREEVIEW]]
* [[How to programmatically fight with WPS:|.HLP not shown in view.exe]]
* [[{{PAGENAME}}:.HLP not shown in view.exe|.HLP not shown in view.exe]]
* [[How to programmatically fight with WPS:|Drag & Drop of .dev and printers]]
* [[{{PAGENAME}}:Drag & Drop of .dev and printers|Drag & Drop of .dev and printers]]
* [[How to programmatically fight with WPS:|Start a VIO window with a changed font size]]
* [[{{PAGENAME}}:Start a VIO window with a changed font size|Start a VIO window with a changed font size]]
* [[How to programmatically fight with WPS:|Desktop background]]
* [[{{PAGENAME}}:Desktop background|Desktop background]]
* [[How to programmatically fight with WPS:|Properties of the root directory]]
* [[{{PAGENAME}}:Properties of the root directory|Properties of the root directory]]
* [[How to programmatically fight with WPS:|PM_Workplace:Location]]
* [[{{PAGENAME}}:PM_Workplace:Location|PM_Workplace:Location]]
* [[How to programmatically fight with WPS:|PM_Workplace:Templates]]
* [[{{PAGENAME}}:PM_Workplace:Templates|PM_Workplace:Templates]]
* [[/CREDITS|CREDITS]]
* [[{{PAGENAME}}:Credits|Credits]]


Programmatic access to WPS is complicated due to several reasons:
[[Category:SOM Articles]]
 
* Most APIs are accessible only from inside the WPS process (the second copy of PMSHELL.EXE), or via DSOM/CORBA via remote method call.
* To call things from inside the WPS process one needs to "inject" a WPS class into the system; possible bugs in the object will jeopardize the WPS integrity, thus the usability of the computer. This makes WPS classes much harder to design than "ordinary" applications.
* The current implementation of DSOM lacks run-time method-dispatch-by-name, thus one needs to use CORBA (DII) to make arbitrary method calls from scripts. AFAIK, there is no scripting solution which uses DII for its operation.
* Even with this hard-to-reach API, there is no API to fetch the data which allows reconstruction of the object state (serialization/deserialization, marshalling etc). Thus one needs to use undocumented ways to fetch the object state.
* There is a small subset of API (Win*Object* (C) and Sys*Object* (REXX) API) usable from outside of the WPS process. However, the control provided by this API is very restricted.
 
However, some stuff can be done even with such low-grade stuff as plain REXX.

Latest revision as of 21:29, 25 October 2017