Zwei Programme - ein Speicher
Zwei Programme - ein Speicher
Hallo allesam!
ich habe zwei programme geschrieben und ich möchte, dass beide auf ein und denselben Speicherbereich zugreifen. Es geht darum, text Informationen von ab nach b zu kriegen. geht das und wenn ja, wie?
			
			
									
									ich habe zwei programme geschrieben und ich möchte, dass beide auf ein und denselben Speicherbereich zugreifen. Es geht darum, text Informationen von ab nach b zu kriegen. geht das und wenn ja, wie?

- Fluid Byte
 - Beiträge: 3110
 - Registriert: 27.09.2006 22:06
 - Wohnort: Berlin, Mitte
 
Guckt dir mal im Platform SDK die Speicher Referenz an. Soweit ich weiss kann man einen globalen Speicher Block erstellen der von jedem Programm benutzt werden kann.
Du kannst aber auch, wie Leonhard erwähnte, DDE benutzen und den Pointer zum Speicher Block zwischen den Progammen hin und her senden um gemeinsam auf ihn zuzugreifen.
			
			
									
									
						Du kannst aber auch, wie Leonhard erwähnte, DDE benutzen und den Pointer zum Speicher Block zwischen den Progammen hin und her senden um gemeinsam auf ihn zuzugreifen.
> Es geht darum, text Informationen von ab nach b zu kriegen
Dazu gibt es schon viele andere Threads.
Die "bekanntesten" Ideen:
			
			
									
									Dazu gibt es schon viele andere Threads.
Die "bekanntesten" Ideen:
- Network-Befehle (Verbindung zum eigenen COmputer (127.0.0.1))
 - Über Dateien
 - DDE
 - Zwischenablage (Clipboard)
 - ProgramParameter()
 - Envirenment-Variablen (siehe Process-Lib)
 
PB 4.30
						Code: Alles auswählen
Macro Happy
 ;-)
EndMacro
Happy Endnee, es geht darum, dass ich jett geradse meinen wichtiaplayer (hatt ich mal inner laberecke angesprochen) weiterbaue (die aktion mit den geisterfenster war, damit der klein-modus nicht son riesen platz in der leiste wegnimmt. das ist nämlich wie n riesen blumentopf für nen butterstecker  
 
Ich will einfach nur, dass wenn ich eine mp3 anklicke, nicht nochmal ein ganzer wichtiaplayer geladen wird, sondern der dateiname (auch mehrere dateien!!!) an die bereits geöffnete version übergeben werden soll, da a) der player nur einmal laufen darf und b) das ein ziemliches gewusel geben wurde, vor allem lädt er zulange!) ich probiere mal die datei-lösung aus! wenns schief geht, melde ich mich wieder
thx
			
			
									
									Ich will einfach nur, dass wenn ich eine mp3 anklicke, nicht nochmal ein ganzer wichtiaplayer geladen wird, sondern der dateiname (auch mehrere dateien!!!) an die bereits geöffnete version übergeben werden soll, da a) der player nur einmal laufen darf und b) das ein ziemliches gewusel geben wurde, vor allem lädt er zulange!) ich probiere mal die datei-lösung aus! wenns schief geht, melde ich mich wieder
thx

Ganz Simpel : Mutex + Sendmessage - Rest ueber Sufu.
Edit: 2 x starten
			
			
													Edit: 2 x starten
Code: Alles auswählen
  #WM_MYOPENMESSAGE = #WM_USER + 1 
  Mutex = CreateMutex_(#Null,0,"MeinTollerPlayer")
  If  GetLastError_() = #ERROR_ALREADY_EXISTS
    MessageRequester("","schon offen")
    hwnd = FindWindow_(#Null,"player")
    If hwnd 
      SendMessage_(hwnd,#WM_MYOPENMESSAGE,"MSG","MSG2")
    EndIf
    End
  EndIf
  Procedure Callback(h,m,w,l)
    
    If m = #WM_MYOPENMESSAGE
      MessageRequester(PeekS(w),PeekS(l))
    EndIf
    
    ProcedureReturn #PB_ProcessPureBasicEvents
  EndProcedure
  
  hwnd =  OpenWindow(0,0,0,300,300,"player")
  
  SetWindowCallback(@Callback(),0)
  
  Repeat
    event = WaitWindowEvent()
    
  Until event = #WM_CLOSE
  
  CloseHandle_(Mutex)
					Zuletzt geändert von edel am 30.12.2006 00:39, insgesamt 1-mal geändert.
									
			
									
						- ts-soft
 - Beiträge: 22292
 - Registriert: 08.09.2004 00:57
 - Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
 
Oder PBOSL_GlobalSharedmemory, ist ja extra für sowas geschaffen. Oder den Source der Lib verwenden, ist nicht viel.
			
			
									
									PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

						Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- 
				Kaeru Gaman
 - Beiträge: 17389
 - Registriert: 10.11.2004 03:22
 
öhm... ganzganzganz simpel:
zwei threads derselben prozessstruktur öffnen die beiden fenster....
ok, wenn dein erstprozess ein fremdprozess ist, den du nicht einfach
zu einem zusätzlichen thread veranlassen kannst, geht das nicht....
			
			
									
									zwei threads derselben prozessstruktur öffnen die beiden fenster....
ok, wenn dein erstprozess ein fremdprozess ist, den du nicht einfach
zu einem zusätzlichen thread veranlassen kannst, geht das nicht....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
						Der Weise weiß, dass er ein Narr ist.
- ts-soft
 - Beiträge: 22292
 - Registriert: 08.09.2004 00:57
 - Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
 
Code: Alles auswählen
Procedure AllocateMemoryGlobal(Name.s,Size.l)
  Shared HandleMap.l
  HandleMap.l = CreateFileMapping_($FFFFFFFF, 0, 402653188, 0, Size, @Name)
  If HandleMap
    ProcedureReturn MapViewOfFile_(HandleMap, 983071, 0, 0 ,0)
  EndIf
EndProcedure
Procedure FreeMemoryGlobal(MemoryAddress.l)
  Shared HandleMap.l
  UnmapViewOfFile_(MemoryAddress)
  CloseHandle_(HandleMap)
EndProcedurePureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

						Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

TS-Soft: Kann ich mit deinen Befehlen jetzt einen Speicher anlegen, die Addresse dazu zum anderen Prozess 'durchschleifen' (callback..und sendmessage... die schleife ist schon ziemlich am anfang der produktion eingebaut worden, damit ein zweitstart abgeblockt wird und der erste task aktiviert wird.), sodass ich beide programee drauf loslassen kann, ohne dass windows quängelt???
			
			
									
									