multi thread et pointeurs
multi thread et pointeurs
salut
j'ai créé deux aplis sensées tourner en parrallèle (multi thread) de sorte a pouvoir effectuer certaines longues taches ou répétitives cependant je n'arrive pas a modifier les variable entre deux programmes sans que l' on m'informe d'une violation d' accès mémoire
en clair : le prog A ne peut pas modifier les variables du prog B
est ce que vous savez comment je pourrais faire
merci
j'ai créé deux aplis sensées tourner en parrallèle (multi thread) de sorte a pouvoir effectuer certaines longues taches ou répétitives cependant je n'arrive pas a modifier les variable entre deux programmes sans que l' on m'informe d'une violation d' accès mémoire
en clair : le prog A ne peut pas modifier les variables du prog B
est ce que vous savez comment je pourrais faire
merci
FRA
projet carnot en force !!
projet carnot en force !!
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Deux applis :
Tu parle de deux Threads ou deux EXE ???
Si c'est deux theads, faut que ets variables soient globales ...
Tu parle de deux Threads ou deux EXE ???
Si c'est deux theads, faut que ets variables soient globales ...

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Un SendMessage avec WM_COPYDATA suffira pour ce que tu demandes, selon le message que l'une de tes deux applis interceptera, elle initialisera telle ou telle variable.
Exemple :
A envoye WM_RESET_INIFFILE à B, B reset donc le fichier init et les variables correspondantes et vice versa.
Plus d'informations ici.
Tu pourras même envoyer des données (pointeur sur structure) si tu le souhaites.
Exemple :
A envoye WM_RESET_INIFFILE à B, B reset donc le fichier init et les variables correspondantes et vice versa.
Plus d'informations ici.
Tu pourras même envoyer des données (pointeur sur structure) si tu le souhaites.
"Qui baise trop bouffe un poil." P. Desproges
merci pour toutes vos idées
j' ai cependant persévéré dans la proposition du début ( pbosl ) et cela a porté ses fruits
PBOSL_AllocateMemoryGlobal
cette fonction permet en effet de gerer un même espace mémoire avec plusieurs applications
je pense donc que je ferais comme sa.
cependant, toutes vos remarque/suggesions sont les bienvenues
encore une fois merci et a trés bientot
j' ai cependant persévéré dans la proposition du début ( pbosl ) et cela a porté ses fruits
PBOSL_AllocateMemoryGlobal
cette fonction permet en effet de gerer un même espace mémoire avec plusieurs applications

je pense donc que je ferais comme sa.
cependant, toutes vos remarque/suggesions sont les bienvenues
encore une fois merci et a trés bientot
FRA
projet carnot en force !!
projet carnot en force !!
Dr. Dri>tu n'est pas obligé de créér une fenêtre visible (cf les wrappers winamp par exemple)
fra>tu as la possibilité de créer un espace de mémoire partagé via CreateFileMapping.
fra>tu as la possibilité de créer un espace de mémoire partagé via CreateFileMapping.
"Qui baise trop bouffe un poil." P. Desproges
C'est ce qui est utilisé dans jaPBe pour coller des données dans l'éditeur.Dr. Dri a écrit :tient je connais pas le message copydata ^^
Je vais regarder ca de plus près
[edit]
je viens de tilter, ca ne fonctionne que pour les programmes fenêtrés
sinon c'est toujours bon à savoir ^^
Dri
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Edit
#Bouton
#Btn_Quit
EndEnumeration
;/ Constantes diverses
Enumeration 1
#WMCD_OpenFile ; Ouvre un fichier dans une nouvelle page
#WMCD_InsertText ; Insère le texte à la position du curseur.
#WMCD_ReplaceCompleteText ; Remplace la totalité du texte
#WMCD_ReplaceCurrentLine ; Remplace la ligne ou se trouve le curseur
#WMCD_NewText ; Ouvre un nouvel onglet, et lui passe le texte
EndEnumeration
; MainWin : Handle de la fenêtre qui envoie les données
; Data$ : Données
; Mode : Type d'envoi, défini par les constantes ci-dessus
;
Procedure SendDatasToEditor(MainWin, Datas$, Mode.l)
RunOneWin = FindWindow_(@"WindowClass_0",@"jaPBe-RunOneWindow")
If RunOneWin
If Datas$
cd.COPYDATASTRUCT
cd\dwData = Mode
cd\cbData = Len(Datas$)+1
cd\lpData = @Datas$
SendMessage_(RunOneWin, #WM_COPYDATA, MainWin, cd)
EndIf
EndIf
EndProcedure
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
If CreateGadgetList(WindowID(#Window_0))
StringGadget(#Edit, 10, 10, 280, 20, "Un petit texte de démonstration.")
ButtonGadget(#Bouton, 10, 40, 280, 20, "Envoyer")
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #Bouton
Texte.s = GetGadgetText(#Edit)
If Texte <> ""
SendDatasToEditor(WindowID(#Window_0), "Chaine.s = " + Chr(34)+Texte+Chr(34), #WMCD_NewText)
EndIf
Case #Btn_Quit
quit = 1
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf