FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Communication entre programmes Panoramic Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Communication entre programmes Panoramic Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Communication entre programmes Panoramic Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Communication entre programmes Panoramic Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Communication entre programmes Panoramic Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Communication entre programmes Panoramic Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Communication entre programmes Panoramic Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Communication entre programmes Panoramic Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Communication entre programmes Panoramic Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Communication entre programmes Panoramic Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Communication entre programmes Panoramic Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Communication entre programmes Panoramic Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Communication entre programmes Panoramic Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Communication entre programmes Panoramic Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Communication entre programmes Panoramic Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

 

 Communication entre programmes Panoramic

Aller en bas 
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyJeu 29 Juil 2010 - 17:47

J'ai fait une toute petite DLL (8,5 ko) contenant uniquement les routines de communication entre programmes contenues dans KGF.dll. C'est un moyen simple et léger d'envoyer des messages texte entre programmes Panoramic et être éventuellement averti de l'arrivée d'un message. Elle s'appelle IPC.dll (IPC=InterProcessCommunication) et est distribuée avec son programme de démo "test IPC.bas" sur mon site dans la distribution de KGF.dll.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 11:21

Ta DLL m'intéresse au plus au point, parce que presse papier c'est alléatoire par moment. Il y a des jours entier où aucun problème se pose, et d'autre je ne sais pas pourquoi, ça marche mal.
J'étais en train de faire l'essai à travers un fichier dans un disque virtuel, mais si ta DLL fonctionne, je pense que c'est elle que je choisirais.
J'ai pas encore réussi à communiquer entre les deux programmes.
Ce qui serait bien est que tu mettes un programme dont on en copie un exécutable, et qui se communique entre eux.
Il faudra donc que par le presse paier les infos du handle de départ, ils s'échangent avant de pouvoir utiliser les communications.
A moins que je me sois trompé sur le fonctionnement.
@+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 12:27

Pour résoudre ton problème, voici ce qu'il faut faire:
1. télécharger à nouveau KGF.dll à partir de mon site.
Tu obtiendras un fichier KGF.17.zip.
2. décompresser ce fichier dans un répertoire à part.
Dans ce répertoire, trois fichiers te concernent directement:
- IPC.dll
- test IPC.bas
- Autres_DLL.rtf
3. commence par lire Autres_DLL.rtf, puis surtout les
commentaires au début de "test IPC.bas" - c'est la doc complète
4. copier IPC.dll dans le répertoire de Panoramic Editor ET
dans l ou les répertoires où se trouvent les éventuels exe qui
sont concernés
5. décider du mode de communication. Il peut y avoir une
communication uni-directionnelle
programme A (EMETTEUR) --> programme B (RECEPTEUR)
ou une communication bidirectionnelle
programme A (EMETTEUR/RECEPTEUR) <--> programme B (RECEPTEUR/EMETTEUR)
C'est l' programme EMETTEUR qui doit utiliser IPC.dll
et le programme RECEPTEUR doit créer une boite à lettres.
Dans le cas d'une liaison bi-directionnelle, les deux programmes
doivent faire les deux opérations.
6. Créer les boites à lettres dans les programmes censés recevoir
des messages. Une boite à lettres est un champ edit avec une valeur
négative inférieure à -1000 pour top et left. De ce fait, le champ
n'est pas visible à l'écran, mais est actif. On peut lui
donner une routine d'évènement on_change pour être averti
de l'arrivée d'un message. Exemple:
Code:

label message_recu
edit 237 : top 237,-1129 : left 237,-1129 : on_change 237,message_recu
...
message_recu:
' traiter ici la réception d'un message
return
7. établir le lien avec les boites à lettres dans les programmes
censés émettre des messages. Pour cela, il faut connaître la
caption(0) EXACTE de la form 0 du RECEPTEUR, et la valeur de
l'identifiant de la boite à lettres (-1129 dans l'exemple). Cette
opération est à faire 1 fois, au début:
Code:

dim nom$,id%,hnd_boite%
dll_on "IPC.dll"
...
nom$ = "xxxx"  : ' la caption EXACTE de la form 0 du RECEPTEUR
id% = -1129    : ' l'identifiant de la boite
hnd_boite% = dll_call3("IPCGetHandle",adr(nom$),len(nom$),id%)
' c'est la valeur de hnd_boite% qui servira d'adresse au messages

8. envoyer des messages. Pour cela, il faut préparer le message
dans une variable string dont la longueur ne doit pas excéder la
capacité d'un edit en Panoramic (c'est grand...). Voilà commment
on fait:
Code:

dim mes$, res%
...
mes$ = "xxxxx"    : ' préparer le message
res% = dll_call3("IPCSendMessage",adr(mes$),len(mes$),id%)
la valeur de res% n'a pas de signification. id% est l'identifiant
utilisé pour établir le lien (voir ci-dessus).

Avant tout, essaie le petit programme "test IPC.bas". Il crée deux
boites à lettres et envoie des messages saisis à l'ecran dans l'une
ou l'autre ce ces boites.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 14:40

J'ai un petit écran avec des petites lettres, et ça commence à m'énerver. J'arrive pas à suivre ici d'un texte à l'autre. Et ça jne marche pas.
Je suis sure que ta DLL fonctionne, mais j'ai pas les bons outils pour y arriver.

Le mieux aurrait été d'avoir les 2 programmes pour la communications bi-directionnelle des programmes.
Tant pis. J'arrète avant.... et puis j'arrète.
Merci quant même. Quand j'aurais un écran plus large, et au chose comme navigateur, car celà, je n'en dis pas plus.
Salutation
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 20:09

Je te poste un exemple bi-directionnel ce soir !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 20:49

Voila ce que j'ai fait finalement:
Programme à compiler qui sera appelé:
Code:
top 0,100: left 0,600  :height 0,160:width 0,400
dim handle_boite%,Recepteur$,id%  , a$
dim i%,message$
label envoie , voir
a$=clipboard_string_paste$ :clipboard_string_copy ""
dll_on "Z:\IPC.dll"

  Recepteur$="essai recoit" : caption 0, Recepteur$
  id%=-1122
  edit 1:top 1,id%:left 1,id% :on_change 1,voir
  handle_boite% = dll_call3("IPCGetHandle",adr(recepteur$),len(recepteur$),id%)
  edit 2:top 2,90:text 2,handle_boite%
  button 5:left 5,310:width 5,50:top 5,20:caption 5,"go":on_click 5,envoie
  alpha  8:left 8, 10:top 8,65:caption 8,"handle de cette boite"

dll_off
' ------------------------------------------------------------------------------
  rem  handle_boite%  handle identifiant la boîte à letters pour IPCSendMessage
  rem  Recepteur$    nom du récepteur (caption de la form 0)
  rem  id%            identifiant de la boîte à lettres (left et top du edit récepteur)

alpha 6:top 6,5:left 6, 30:caption 6,"réception"
alpha 9:top 9,5:left 9,180:caption 9,"à envoyer"
edit 10:font_size 10,12 :top 10,30:on_change 10,voir
edit 11:font_size 11,12 :top 11,30:left 11,150      :text 11,"envoi"
' ------------------------------------------------------------------------------
clipboard_string_copy handle_boite% :' on envoi l'identification mais sans résultat
handle_boite%=val(a$)



end
' _______
envoie:
  message$=text$(11)
dll_on "Z:\IPC.dll"
i% = DLL_call3("IPCSendMessage",adr(message$),len(message$),handle_boite%)
 '    i%                      sans signification, requis pour la syntaxe
 '    message$                le messate texte à envoyer
 '    handle_boite%          handle de la boite à lettres (résultat de IPCGetHandle)
dll_off
return

voir:
  text 10,text$(1)
return

et le programme qui fait l'apel de l'autre:

Code:
top 0,100 :height 0,160:width 0,400
dim handle_boite%,Recepteur$,id%
dim i%,message$  , a$
label envoie , voir ,clic

dll_on "Z:\IPC.dll"

  Recepteur$="essai envoi" : caption 0,Recepteur$
  id%=-1111
  edit 1:top 1,id%:left 1,id% :on_change 1,voir
  handle_boite% = dll_call3("IPCGetHandle",adr(recepteur$),len(recepteur$),id%)
  edit 2:top 2,90:text 2,handle_boite%
  edit 3:top 3,90:left 3,150
  button 4:left 4,310:top 4,90:width 4,20:caption 4,"IP":on_click 4,clic
  button 5:left 5,310:width 5,50:top 5,20:caption 5,"go":on_click 5,envoie
  alpha  6:left 6,10:top 6,65:caption 6,"handle de cette boite"
  alpha  7:left 7,150:top 7,60:caption 7,"handle de l'autre boite à reporter"+chr$(13)+" par copier/coller et clic bouton"
dll_off
' ------------------------------------------------------------------------------
  rem  handle_boite%  handle identifiant la boîte à letters pour IPCSendMessage
  rem  Recepteur$    nom du récepteur (caption de la form 0)
  rem  id%            identifiant de la boîte à lettres (left et top du edit récepteur)
alpha 8:top 8,5:left 8, 30:caption 8,"réception"
alpha 9:top 9,5:left 9,180:caption 9,"à envoyer"
edit 10:font_size 10,12 :top 10,30:on_change 10,voir
edit 11:font_size 11,12 :top 11,30:left 11,150      :text 11,"envoi"
' ------------------------------------------------------------------------------
clipboard_string_copy handle_boite%

' NOM DU FICHIER
execute "Z:\nouveau.exe"
' ici il faut que je'envoie les paramètres

a$=clipboard_string_paste$ :' pas bon
handle_boite%=val(a$):text 3,a$
end
' _______
clic:
handle_boite%=val(text$(3))
return

envoie:
  message$=text$(11)
dll_on "Z:\IPC.dll"
i% = DLL_call3("IPCSendMessage",adr(message$),len(message$),handle_boite%)
 '    i%                      sans signification, requis pour la syntaxe
 '    message$                le messate texte à envoyer
 '    handle_boite%          handle de la boite à lettres (résultat de IPCGetHandle)
dll_off
return

voir:
  text 10,text$(1)
return

Le seul problème est que j'arrive que d'un côté à connaitre de handle de l'autre.
Pour l'instant j'ai pas réussi avec le premier à reprendre de handle de l'autre.

Est-ce que toi de ton côté tu as un principe pour que ça marche?

Je voulais t'envoyé tout à l'heure mais il y a du monde et je ne peux continuer maintenant.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 21:45

Il me semble que pour trouver le handle de la boite dans laquelle tu veux envoyer un message (et qui est donc forcément dans l'autre programme !), tu utilises la même variable que celle utilisée pour mettre la caption de la form 0, donc du même programme ! C'est l'inverse qu'il faut faire: dans le programme dont la caption(0) est "essai recoit", il faut chercher le handle avec "essai envoi" et inversement. Je n'ai pas approfondi plus loin.

Voici deux programmes, "Programme A" et "Programme B" qui sont symétriques et s'envoient des messages mutuellement, sur click d'un bouton. Le message à envoyer est à saisir dans le champ edit à gauche du bouton, et le champ edit en-dessous montre le message reçu.

Les deux programmes sont à compiler en exe, puis il faut les lancer séparément. Lors du premier click sur un des boutons, le programme concerné se "connecte" sur la boite de messages de l'autre, puis envoie son message. Les clics suivants ne font plus qu'envoyer le message. Prendre soin de saisie chaque fois un message différent pour qu'on voie l'effet.

Programme A:
Code:
' Programme A
'
label message_recu, envoyer_message

dim id_boite_B%, mes$, nom_programme_B$, flag_connecte%, handle_B%, res%

caption 0,"Programme A"  : width 0,400 : height 0,150

' déclarer la boite de réception du programme A
edit 200 : top 200,-1401 : left 200,-1401 : on_change 200,message_recu

' pour trouver le programme B
id_boite_B% = -1402  : ' ID le la boite de réception du programme B
nom_programme_B$ = "Programme B"  : ' caption(0) du programme B

' créer le GUI du programme
edit 1 : top 1,10 : left 1,10 : width 1,200
button 2 : top 2,10 : left 2,240 : width 2,120 : caption 2,"Envoyer --> B"
on_click 2,envoyer_message
edit 10 : top 10,50 : left 10,10 : width 10,200
alpha 11 : top 11,50 : left 11,230 : caption 11,"<-- message reçu de B"

' charger la DLL et signaler "non connecté"
dll_on "IPC.dll"
flag_connecte% = 0

end

' évènement "message reçu"
message_recu:
    text 10,text$(200)    : ' action: visualiser le message reçu
    return
   
' envoyer un message à B
envoyer_message:
    if flag_connecte%=0  : ' la première fois ? alors il faut se connecter
        handle_B% = dll_call3("IPCGetHandle",adr(nom_programme_B$),len(nom_programme_B$),id_boite_B%)
        flag_connecte% = 1
    end_if
        mes$ = text$(1)    : ' construire le message
        res% = dll_call3("IPCSendMessage",adr(mes$),len(mes$),handle_B%)  : ' envoyer à B
    return
   

Programme B:
Code:
' Programme B
'
label message_recu, envoyer_message

dim id_boite_A%, mes$, nom_programme_A$, flag_connecte%, handle_A%, res%

caption 0,"Programme B"  : width 0,400 : height 0,150

' déclarer la boite de réception du programme B
edit 200 : top 200,-1402 : left 200,-1402 : on_change 200,message_recu

' pour trouver le programme A
id_boite_A% = -1401  : ' ID le la boite de réception du programme B
nom_programme_A$ = "Programme A"  : ' caption(0) du programme A

' créer le GUI du programme
edit 1 : top 1,10 : left 1,10 : width 1,200
button 2 : top 2,10 : left 2,240 : width 2,120 : caption 2,"Envoyer --> A"
on_click 2,envoyer_message
edit 10 : top 10,50 : left 10,10 : width 10,200
alpha 11 : top 11,50 : left 11,230 : caption 11,"<-- message reçu de A"

' charger la DLL et signaler "non connecté"
dll_on "IPC.dll"
flag_connecte% = 0

end

' évènement "message reçu"
message_recu:
    text 10,text$(200)    : ' action: visualiser le message reçu
    return
   
' envoyer un message à B
envoyer_message:
    if flag_connecte%=0  : ' la première fois ? alors il faut se connecter
        handle_A% = dll_call3("IPCGetHandle",adr(nom_programme_A$),len(nom_programme_A$),id_boite_A%)
        flag_connecte% = 1
    end_if
        mes$ = text$(1)    : ' construire le message
        res% = dll_call3("IPCSendMessage",adr(mes$),len(mes$),handle_A%)  : ' envoyer à A
    return
   
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyVen 30 Juil 2010 - 23:45

Je te remercie. Tes exemples fonctionnent.
Je ferais une analyse dès que possible. Ta méthode est bien meilleurs.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptySam 31 Juil 2010 - 0:10

Parfait. Bonne chance alors. Tu verras, une fois le principe compris, tu l'appliqueras facilement.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptySam 31 Juil 2010 - 17:38

Salut Klaus.
Est-ce que je me trompe ou pas?
J'ai voulu changer edit par memo avec la modification des instructions qui vont avec, pour pouvoir envoyer plusieurs lignes, comme je le fais avec le presse-papier, et ça ne fonctionne pas.
Seul edit et memo utilise on_change.
Sinon peut-il y avoir une adaptation avant que je bouleverse mes programmes?
Merci d'avance.
J'y pense, si c'est possible le memo reçoit des lignes disons de 150/200 caractères par lignes, ceci pour ne pas oublier que si il n'y a pas de bar horizontal, il peut inclure d'office un saut.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptySam 31 Juil 2010 - 19:05

Il faut que je regarde si ça peut marcher avec un mémo. En attentant, il vaut mieux concaténer les lignes du mémo dans un seul string avec un cacartère de séparation, puis l'envoyer et à réception, le décomposer.

Pour le moment, le système est faut pour envoyer un seul string comme message.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptySam 31 Juil 2010 - 19:22

D'accord, je ferais avec. J'étais pas sûre d'avoir bien programmé.
Laisse comme cela est. De toute façon si je commence une méthode, je n'ai pas l'intention de tout revoir ensuite.

Merci bien.
Revenir en haut Aller en bas
Invité
Invité




Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic EmptyDim 1 Aoû 2010 - 12:57

J'ai repris le programme pour l'adapter et enlever les objets de démonstration pour faire les essais, vu que normalement on cummunique entre programmes par ordre (pour moi oui).
J'ai fais 2 versions. Les deux même, mais la première faire un teste d'essai, et visualisé par un message de l'autre boite pour voir que cela fonctionne.
Il n'y a qu'un seul programme, la différence est que l'orsque qu'on a mis les paramètres comme le nom du caption de chaque programme, et le numéro de l'EDIT de réception pour l'insérer dans le programme, on fait un copie/coller d'un programme à l'autre en ne changeant qu'un N°.

Programme d'essai:
Code:

width 0,400 : height 0,150
label message_recu, envoyer_message  , teste
dim prg_choix% , Lautre_prg$ :' programme A ou B

rem "ATTENTION on compile avec prg_choix%=1
rem "Et avant d'essayer on remet prg_choix%=0
' prg_choix% 0 ou autre. - c'est celui qui à 0 qui commence pour lancer l'autre

prg_choix%=0    :' VOIR CETTE LIGNE !!!

dim  flag_connecte%, handle_B%, res%
dim nom_prg_A$, id_boite_ici%, transf_obj% , mes$
dim nom_prg_B$, id_boite_la% , recu$

transf_obj%=1 :' N° du 1er objet à adapter
nom_prg_A$ = "Programme A" : nom_prg_B$ = "Programme B"
' ------------------------------------
if prg_choix%=0
    caption 0,nom_prg_A$:Lautre_Prg$ = nom_prg_B$:id_boite_ici%=-1402:id_boite_la%=-1144
else
    caption 0,nom_prg_B$:Lautre_Prg$ = nom_prg_A$:id_boite_ici%=-1144:id_boite_la%=-1402 :left 0,500
end_if
' ---------------------------------------------
' déclarer la boite de réception du programme
edit transf_obj% : top transf_obj%,id_boite_ici% : left transf_obj%,id_boite_ici%
                  on_change transf_obj%,message_recu
' \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\:
  if prg_choix%=0 then execute "Nouveau.exe"  :' mettre le nom enregistré sachant
                                              ' que l'exécutable est avec
                                              ' prg_choix%=1
  ' ATTENTION NE PAS FAIRE UN EXECUTABLE AVEC prg_choix%=0 SINON IL Y AURA
  ' EXECUTION A LA CHAINE DU PROGRAMME (il fera des petits), et pour arréter bonjour les dégats!
' ------------------------------------------------------------------------------
dll_on "IPC.dll"  : flag_connecte% = 0 : ' charger la DLL et signaler "non connecté"
on_click 0,teste
end
teste:
' mes$="":gosub envoyer_message
mes$="je fais un teste"+chr$(10)+chr$(13)+"et je regarde" :gosub envoyer_message
mes$="j'ai bien bu"+chr$(10)+chr$(13)+"j'ai bien mangé":gosub envoyer_message
mes$="|stop|":gosub envoyer_message
return
' ------------------------------------------------------------------------------
' évènement "message reçu"
message_recu:
  recu$=text$(transf_obj%)
  if instr(recu$,"|stop|")>0  then mes$=recu$:gosub envoyer_message  : terminate
  message "recu de " + chr$(prg_choix%+65)+": "+recu$
return
' ------------------------------------------------------------------------------
' envoyer un message à B
envoyer_message:
    if flag_connecte%=0  : ' la première fois ? alors il faut se connecter
        handle_B% = dll_call3("IPCGetHandle",adr(Lautre_Prg$),len(Lautre_Prg$),id_boite_la%)
        flag_connecte% = 1
    end_if
    res% = dll_call3("IPCSendMessage",adr(mes$),len(mes$),handle_B%)
return

Le Programme vidé des messages:
Code:

width 0,400 : height 0,150
label message_recu, envoyer_message
dim prg_choix% , Lautre_prg$ , flag_connecte%, handle_B%, res% , mes$
dim nom_prg_A$, id_boite_ici%, transf_obj% , nom_prg_B$, id_boite_la% , recu$
    rem "à adapter"
prg_choix%=0    :' VOIR CETTE LIGNE !!!  } " 0 ou autre "
transf_obj%=1 :' N° du 1er objet à adapter
nom_prg_A$ = "Programme A" : nom_prg_B$ = "Programme B"
' ------------------------------------
if prg_choix%=0
    caption 0,nom_prg_A$:Lautre_Prg$ = nom_prg_B$:id_boite_ici%=-1402:id_boite_la%=-1144
else
    caption 0,nom_prg_B$:Lautre_Prg$ = nom_prg_A$:id_boite_ici%=-1144:id_boite_la%=-1402 :left 0,500
end_if
' ---------------------------------------------
' déclarer la boite de réception du programme } " OBLIGATOIRE"
edit transf_obj% : top transf_obj%,id_boite_ici% : left transf_obj%,id_boite_ici%
                  on_change transf_obj%,message_recu
dll_on "IPC.dll"  : flag_connecte% = 0 : ' charger la DLL et signaler "non connecté"
end
' ------------------------------------------------------------------------------
' évènement "message reçu"
message_recu:
  recu$=text$(transf_obj%) : ' ici traitement
  message "recu de " + chr$(prg_choix%+65)+": "+recu$
return
' ------------------------------------------------------------------------------
' envoyer un message à B
envoyer_message:
    if flag_connecte%=0  : ' la première fois ? alors il faut se connecter
        handle_B% = dll_call3("IPCGetHandle",adr(Lautre_Prg$),len(Lautre_Prg$),id_boite_la%)
        flag_connecte% = 1
    end_if
    res% = dll_call3("IPCSendMessage",adr(mes$),len(mes$),handle_B%)
return

Pour faire l'essai avec le premier programme, mettre prg_choix%=1 (autre que zéro, et compiler
après avoir remis ensuite: prg_choix%=0, on peut faire l'essais en cliquant sur l'une ou l'autre forme

J'envoie en vitesse, bizarre ce navigateur comme il réagi!
Revenir en haut Aller en bas
Contenu sponsorisé





Communication entre programmes Panoramic Empty
MessageSujet: Re: Communication entre programmes Panoramic   Communication entre programmes Panoramic Empty

Revenir en haut Aller en bas
 
Communication entre programmes Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvelles fonctions: messages entre programmes Panoramic !
» Programmes Panoramic en ligne de commande
» Cohénrence entre PANORAMIC_EDITOR.exe et PANORAMIC.exe
» mélange entre exécutable et Panoramic
» Plantage avec lancement de plusieurs programmes Panoramic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: