bon je sais , c'est seulement pour windows , mais apres avoir testé les mailslots qui sont limité en taille
j'ai trouvé ( je sais plus si j'ai pompé ou pas )
ce code qui offre un véritable Ram disque !!
le format des données qui transite passe par une structure ,, donc permet de faire transiter plusieurs format de donnée en meme temps
et quasi autant qu'on veux !!
voici un exemple :
le code qui reçoit :
ici la fenetre est purement décorative, les données reçues etant affiché par Debug !
notez que le code est court, mais j'ai eu la fleme de retirer les Debug (tiré directement de mon EPB )
Code : Tout sélectionner
Enumeration
#win
EndEnumeration
Structure Partage ; le Ram Disque , defini la forme des données qui transite , ici un binaire , une valeur , et meme on pourrai ajouter un text de 500 caractere ...
declencheur.b ; sert dans l'exemple a etre sur qu'on reçois un message
valeur1.i ; la valeur qu'on reçoit er qui va determiner les Cases plus bas
message.S {500} ; eventuellement on pourrai recevoir un text de 500 caracteres en ajoutant "text.s=*ram\message.S" ;)
EndStructure
Global *ram.Partage
;- memoire partagé
MemoirePartagee=CreateFileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, SizeOf(Partage),"EPB_RAM") ; le nom doit etre le meme pour l'emmeteur et le recepteur
*ram=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0)
OpenWindow(#win, 10,10,800,600,"reçoit" ,#PB_Window_SystemMenu)
Repeat ; boucle principale
Event= WaitWindowEvent(2)
;- reception message Ram
If *ram\declencheur.b=1
type=*ram\valeur1
Select type
Case 0 ; pose au curseur ..
Debug "recoit 0"
Debug "le message est :" +*ram\message.S
Case 1 ; remplace la ligne
Debug "recoit 1"
Case 2 ; insertion de ligne
Debug "recoit 2"
Case 3 ; saut de ligne ( positione le curseur en y)
Debug "recoit 3"
Case 4 ; positione le curseur en X
Debug "recoit 4"
Case 5 ; Selectionne
Debug "recoit 5"
Case 6 ; remplace
Debug "recoit 6"
Case 7 ; recupe la ligne en cours vers le clipboard
Debug "recoit 7"
Case 8 ; creation d'un onglet et chargement d'un code
Debug "recoit 8"
Case 9 ; recupe le code complet de l'onglet précisé et envoie vers le clipboard
Debug "recoit 9"
Case 10 ; active l'onglet .. rien de plus
Debug "recoit 10"
EndSelect
Buffer.S=""
Beep_(770,100)
*ram\declencheur.b=0
EndIf
Until Event = #PB_Event_CloseWindow
le prg qui envoie a lancer apres le prg ci dessus de preference
je ne trahi pas un secret en précisant que c'est ce que j'utilise pour EPB

cela me permet de commander EPB par un prg utilitaire , par exemple faire afficher le code RGB() a l'emplacement du curseur ...
Code : Tout sélectionner
; ************ OBLIGATOIRE *****************************************
;- structure memoire partagé
Structure Partage
declencheur.b
valeur1.i
message.s {500}
EndStructure
Global *ram.Partage
MemoirePartagee=CreatefileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, SizeOf(Partage),"EPB_RAM")
*ram=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0)
Declare envoie_epb(text.s,type)
Procedure envoie_epb(text.s,type) ; ici on envoie nos données
*ram\declencheur.b=1 ; un binaire qui va servir a declencher la reception dans le recepteur
*ram\valeur1.i=type ; un numero histoire de
*ram\message.s=text.s ; un petit message en text
EndProcedure
; *****************************************************************************
; cette procedure vous permettra d'envoyer des commandes au prg de reception
; utile si vous dévellopez un utilitaire, qui aurai besoin de poser un résultat dans EPB
; utilisation : envoie_epb("message",ORDRE)
; ****************** exemple d'utilisation **************************************
envoie_epb("un Petit Message",0) ; ORDRE 0, pose au curseur
; ; *******************************************************************
;envoie_epb("Remplace",1) ; ORDRE 1 , Remplace la ligne en cours (par rapport au curseur)
; ; *******************************************************************
;envoie_epb("un Petit Message",2) ; ORDRE 2 ,insert une ligne (par rapport au curseur)
; ; *******************************************************************
;Debug GetCurrentDirectory()
;envoie_epb("20",3) ; ORDRE 3 ,saute a la ligne 20
; ; *******************************************************************
;envoie_epb("10",4) ; ORDRE 4 ,positionne le curseur apres le 10eme caratere
; ; *******************************************************************
;envoie_epb("5,10",5) ; ORDRE 5 ,selectione apres le 5em caractere sur une longueur de 10 caractere de la ligne en cours
; *******************************************************************
; exemple de selection et remplacement :
;envoie_epb("5,10",5) ; selectione apres le 5em caractere sur une longueur de 10 caractere de la ligne en cours
;envoie_epb("message qui remplace",6) ; ORDRE 6 et remplace par le message
; ; *******************************************************************
; exemple de recuperation de la ligne en cours par le clipboard()
;envoie_epb("message bidon",7) ; ORDRE 7, Recupere la ligne en cours, retour par le clipboard
; Delay(200)
;Debug GetClipboardText()
; ; *******************************************************************
; exemple de creation d'un onglet et du chargement d'un code dedans :
;file$=OpenFileRequester("load pb",Home$,"*.pb",0)
;envoie_epb(file$ ,8) ; ORDRE 8, creer un onglet, et charger un fichier *.pb
; ; *******************************************************************
; exemple de recuperation du code complet de l'onglet précisé , dans le clipboard()
; envoie_epb("3",9) ; ORDRE 9 , Recupere le code complet de l'onglet précisé (ici l'onglet 3), retour par le clipboard
; *************************************************************************
; exemple d'activation des onglets , rien de plus
; envoie_epb("0",10) ; ORDRE 10 ,Active l'onglet précisé (ici l'onglet 1 ... les onglets commencent a 0), rien de plus...
; Delay(1000)
; envoie_epb("1",10) ; Active l'onglet précisé (ici l'onglet 2 ... les onglets commencent a 0), rien de plus...
; Delay(1000)
; envoie_epb("2",10) ; Active l'onglet précisé (ici l'onglet 3 ... les onglets commencent a 0), rien de plus...
; **************************************************************************
;
; EPb
pffff ! mon bon fond, me perdra
