Kommunikation zwischen zwei Programmen?
-
- Beiträge: 74
- Registriert: 29.03.2008 15:22
Kommunikation zwischen zwei Programmen?
Hallo Leute,
ich habe eine Verständnissfrage.
Ist es möglich, Daten zwischen zwei Programmen auszutauschen, ohne eine extra Datei dafür anzulegen ?
Beispiel:
Programm 1 setzt einen Zähler auf "1" und Programm zwei ließt diesen aus und reagiert darauf.
ich habe eine Verständnissfrage.
Ist es möglich, Daten zwischen zwei Programmen auszutauschen, ohne eine extra Datei dafür anzulegen ?
Beispiel:
Programm 1 setzt einen Zähler auf "1" und Programm zwei ließt diesen aus und reagiert darauf.
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Kommunikation zwischen zwei Programmen?
Klar.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: Kommunikation zwischen zwei Programmen?
Wenn du selbst beide Programme (aus sich heraus) startest:
EnvironmentVariable
Wenn beide Programme nicht aus sich heraus gestartet wurden:
SharedMemory
Wenn beide Programme nicht auf dem selben PC gestartet wurden:
Network
EnvironmentVariable
Wenn beide Programme nicht aus sich heraus gestartet wurden:
SharedMemory
Wenn beide Programme nicht auf dem selben PC gestartet wurden:
Network
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 74
- Registriert: 29.03.2008 15:22
Re: Kommunikation zwischen zwei Programmen?
Vielen Dank.
Ich habe gestern die Hilfe durchsucht aber den Befehl habe ich irgendwie übersehen
Ich habe gestern die Hilfe durchsucht aber den Befehl habe ich irgendwie übersehen

-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Kommunikation zwischen zwei Programmen?
Eine weitere offizielle Methode sind "Named Pipes".
http://www.purebasic.fr/german/viewtopi ... 05#p241805
Unter Linux lautet der Befehl zur Erstellung so einer Pipe mkfifo_.
http://www.purebasic.fr/german/viewtopi ... 05#p241805
Unter Linux lautet der Befehl zur Erstellung so einer Pipe mkfifo_.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Kommunikation zwischen zwei Programmen?
Oder per #WM_COPYDATA...
1. Anwendung:
2. Anwendung:
1. Anwendung:
Code: Alles auswählen
EnableExplicit
Global MyMessage.l = RegisterWindowMessage_("MyOwnMessage")
Procedure WindowCallback(WindowID,message,wParam,lParam)
Protected result
Protected *cd.COPYDATASTRUCT
result = #PB_ProcessPureBasicEvents
Select message
Case #WM_COPYDATA
If wParam=1
*cd = lParam
AddGadgetItem(1,-1,PeekS(*cd\lpData),0,0)
ProcedureReturn #True
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0,0,0,500,250,"ProgrammXYZ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(1,10,10,480,230,0)
SetWindowCallback(@WindowCallback())
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
EnableExplicit
Define handle
Define Message.s
Global MyMessage.l = RegisterWindowMessage_("MyOwnMessage")
Define cd.COPYDATASTRUCT
handle=FindWindow_(#Null,"ProgrammXYZ")
If handle
Message.s="Hallo, dies ist eine Nachricht, die gesendet wurde."
cd\dwData = 0
cd\cbData = (Len(Message) + 1) * SizeOf(Character)
cd\lpData = @Message
SendMessage_(handle,#WM_COPYDATA,1,cd)
Else
MessageRequester("","Programm nicht gefunden.",0)
EndIf
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Kommunikation zwischen zwei Programmen?
Oder über die geheime Zwischenablage (eher als Scherz anzusehen, würde allerdings mit einem Feedback auf der Empfängerseite auch funktionieren):
Code: Alles auswählen
Define CrypticalFormat.i
Define Memory.i
Define Text.s
CrypticalFormat = RegisterClipboardFormat_("WAIODJIWOADJWIOIAJISDJ")
If CrypticalFormat <> 0
If OpenClipboard_(0)
; Read it if something is available
Memory = GetClipboardData_(CrypticalFormat)
If Memory <> 0
Debug PeekS(GlobalLock_(Memory))
GlobalUnlock_(Memory)
SetClipboardData_(CrypticalFormat, 0)
Else
; or write it if nothing is in the clipboard
Text = "Hello, World!"
Memory = GlobalAlloc_(#GMEM_MOVEABLE, StringByteLength(Text, #PB_Ascii))
If Memory <> 0
PokeS(GlobalLock_(Memory), Text, -1, #PB_Ascii)
GlobalUnlock_(Memory)
Debug "Writing data to clipboard."
SetClipboardData_(CrypticalFormat, Memory)
EndIf
EndIf
CloseClipboard_()
EndIf
EndIf
Zuletzt geändert von DarkDragon am 23.03.2011 18:14, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Kommunikation zwischen zwei Programmen?
Hat niemand Lust das alles in die FAQ zu schreiben? 

- 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
Re: Kommunikation zwischen zwei Programmen?
http://www.purebasic.fr/german/viewtopi ... 93#p228093
http://www.purebasic.fr/german/viewtopi ... 31#p228131
Aber wozu schreibt man das, wenn sowieso keiner sucht
http://www.purebasic.fr/german/viewtopi ... 31#p228131
Aber wozu schreibt man das, wenn sowieso keiner sucht

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.

Re: Kommunikation zwischen zwei Programmen?
DarkDragon, deinen Code würde ich nicht verwenden.
Ich denke mal er erzeugt einen neuen Typen neben den 3 bekannten Standardtypen, Text, Data/Image und File.
Allerdings können diese 3 Typen nicht parallel benutzt werden.
Das heißt, wenn du einen Bildschnipsel aus Paint ausgeschnitten/kopiert hast und danach einen Text kopierst, ist der Bildschnipsel weg.
Wenn jetzt konstant im Hintergrund irgendwelcher für den Anwender unrelevanter Quatsch meine Text Schnipsel überschreibt, würde mich das sehr ärgern.
Ich denke mal er erzeugt einen neuen Typen neben den 3 bekannten Standardtypen, Text, Data/Image und File.
Allerdings können diese 3 Typen nicht parallel benutzt werden.
Das heißt, wenn du einen Bildschnipsel aus Paint ausgeschnitten/kopiert hast und danach einen Text kopierst, ist der Bildschnipsel weg.
Wenn jetzt konstant im Hintergrund irgendwelcher für den Anwender unrelevanter Quatsch meine Text Schnipsel überschreibt, würde mich das sehr ärgern.