PBridge       

 

 Qu'est-ce que PBridge ? 

PBridge ouvre une instance (session) Ponx, la maintient active, et offre un accès, persistant, à cette instance Ponx.

Autrement dit, c'est comme un pont pour accéder à Ponx. Au lieu d'ouvrir Ponx, on se connecte à PBridge, qui retourne une connexion vers Ponx.

Relativement à un appel direct de Ponx, les principales différences sont les suivantes :

  • Lorsqu'une application ayant utilisé PBridge se termine, l'instance de Ponx définie par PBridge reste active.
  • Une seule instance de PBridge peut fonctionner ; si on lance une deuxième fois 0PBridge.hta, rien ne se passera.
  • Plusieurs applications peuvent se connecter au même PBridge, alors que, en appel direct de Ponx, il y aura une instance de Ponx par application.
  • L'ouverture de Ponx par PBridge est beaucoup plus rapide qu'une ouverture directe (Ponx étant préchargé par PBridge, on ne fait que se connecter)
  • Par contre les appels de fonctions de Ponx est cinq fois plus lent avec PBridge qu'avec Ponx direct.
  • Il est tout à fait possible d'utiliser en même temps deux instances de Ponx, depuis une application : une directe, l'autre par PBridge.
  • Il existe, dans Ponx, de nouvelles fonctions pour se connecter à PBridge :  pbridgedir()  et  connectpbridge
  • On peut se connecter à PBridge de deux façons :
    • soit en se connectant la fenêtre HTML (invisible), par son nom : "PBridge". Les connexions se trouvent dans le DOM, à window.ponx et window.ponxd.  Le plus simple, c'est d'utiliser la fonction window.open du DOM, soit avec Javascript, soit avec vbscript.
    • soit en se connectant, via COM/OLE-automation, à l'instance (invisible) d'Internet-Explorer dont la propriété .Document.parentWindow.name=='PBridge' ; on récupère les connexions dans le même emplacement du DOM que précédemment.
  • et une façon complémentaire :
    • passer par Ponx, qui se connectera à PBridge ; cela rend PBridge accessible à tout langage ou application pouvant utiliser COM. 
  • Au passage, j'en ai profité pour ajouté une connexion WSH.wshell ("wscript"), et un accès à la librairie Javascript.

 

Quelques idées d'utilisations :

  • connexion à un traitement de texte, que l'on ne fermera plus ; chaque application pourra l'utiliser sans
  • planification de traitements ; comme l'instance de Ponx est persistante, on peut lancer des threads, qui tourneront en tâches de fond, même si l'application qui l'a lancée se termine. Au cas où il est aussi possible d'utiliser le Javascript intégré à 0PBridge.hta
  • communication inter-applications ou inter-process ; c'est très facile, puisqu'il suffit d'utiliser les mêmes objets ou variables, depuis les différentes applications

 

 Utilisation 

PBridge contient les scripts/utilitaires suivants :

0PBridge.hta Lance PBridge ; il y a deux fenêtres lancées, une .HTA, une sous I.E. ; si cela s'est bien passé, les fenêtres deviennent invisibles.

( PBridge.htm Fichier utilisé en interne par 0PBridge.hta )

2Ptest.exe permet de tester si PBridge est actif ; résultat dans une boîte de dialogue.

PBtest.hta permet de tester si PBridge est actif ; résultat dans une petite fenêtre .HTA rouge.

PBtest.py permet de tester si PBridge est actif ; résultat affiché dans la fenêtre.

PBridge_close.py ferme la session active de PBridge.

PBridge_visible.py rend visible les deux fenêtres de la session active de PBridge.

PBridge_invisible.py rend invisible les deux fenêtres de la session active de PBridge.

2Ppret.exe utilitaire pour utiliser PBridge dans un batch ; appelle ponx.PRet()

2Pprun.exe utilitaire pour utiliser PBridge dans un batch ; appelle ponx.PRet()