lib process

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Guillot
Messages : 751
Inscription : jeu. 25/juin/2015 16:18

lib process

Message par Guillot »

salut les filles,

j'ai besoin de faire communiquer 2 pgs PB
le 1er pg lance le 2eme via runprogram et lui envoi une requette via WriteProgramString
- pgcible = RunProgram(...
- WriteProgramString(pgcible, "blabla")

le 2eme pg est sensé lui repondre, mais je sais pas comment
les commande ReadProgramString et WriteProgramString necessite le parametre "programme"
mais je vois pas comment identifier le pg appelant

si quelqu'un a piger le fonctionnement de la communication entre pg, merci de me l'expliquer
Avatar de l’utilisateur
Itsy Bitsy
Messages : 19
Inscription : lun. 24/juin/2019 12:19

Re: lib process

Message par Itsy Bitsy »

Bonsoir Guillot,

Le plus simple serait de passer par de la memoire partagée.

Avec l'API CreateFileMapping_

Il y a un exemple ici :

https://www.purebasic.fr/english/viewtopic.php?t=66205

Il y a même le sendmessage/postmessage d'exemple, pour occasionner l'envoi d'une commande.

Avec l'usage d'une structure, c'est très flexible et simple d'usage. 8)
Avatar de l’utilisateur
Guillot
Messages : 751
Inscription : jeu. 25/juin/2015 16:18

Re: lib process

Message par Guillot »

merci
mais j'ai besoin que ce soit multiplateforme
et pis, j'aimerais comprendre la lib process !
Avatar de l’utilisateur
Ar-S
Messages : 9588
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: lib process

Message par Ar-S »

Salut Guillot.

Alors je ne sais pas du tout comment utiliser ces commandes et surtout donner une version multiplateforme car j'utilise les API pour détecter quel exe tourne quand je lance 1 prog via un prog (par exemple un updater.)

Pour ruser j'utiliserai :
- Un timer dans chaque prog
- Un fichier texte tampon qui renferme les données avec un eurodatage
- En gros le soft 1 lance le 2
- création d'un txt vierge
- Chaque soft check le contenu du txt toutes les X
- Soft2 aussi, ainsi va la communication.
C'est grossier mais ça peut marcher. (en attendant une réponse plus pertinente)

Les exemples de la doc concernant les process Index devraient être plus fournis. C'est le vide totale.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Jacobus
Messages : 1641
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: lib process

Message par Jacobus »

Salut Guillot, même de plusieurs façons ça ne fonctionne pas, il faut que les deux prg soient lancés avec RunProgram()...
Même le copilot arrive à se perdre dans des trucs pas possibles :lol:
Tente avec les API
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
SPH
Messages : 5105
Inscription : mer. 09/nov./2005 9:53

Re: lib process

Message par SPH »

Si les 2 programmes sont sur le meme ordi, pourquoi ne passerais tu pas par un fichier "data" que l'on ecrit et que l'autre lit ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7418
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: lib process

Message par falsam »

L'application A (SimpleA.exe) envoie un message à l'application B (Simple.b.exe)

■ Application A

Code : Tout sélectionner

; Application A
message$ = "Bonjour depuis A"
RunProgram("simpleB.exe", Chr(34) + message$ + Chr(34), "")
■ Application B

Code : Tout sélectionner

; Application B
message$ = ProgramParameter()
MessageRequester("B a reçu", message$)
Configuration : Windows 11 Famille 64-bit - PB 6.23 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre