Seite 1 von 2

Kommunikation zwischen 2 Programmen

Verfasst: 02.05.2006 14:33
von Yanilie
Hallo,

ich habe 2 unterschiedliche Programme, das eine ist mit Purebasic gemacht, das andere wieder mit einer anderen Anwendung.

Nennen wir das PureBasic Programm mal : Anwendung 1
Und das andere Programm : Anwendung 2

Da ich bei Anwendung 2 nicht auf alle Funktionen zugriff habe die mir Windows bietet (SendMessage PostMessage) , habe ich mir gedacht, entweder ich kommuniziere dann per DATEI oder per CLIPBOARD oder per REGISTERY.

Allerdings weiss ich nicht, wie sehr das System belastet würde, denn Anwendung 1 müsste ja oft prüfen ob Anwendung 2 was neues hat, und umgekehrt. Also mindestens im Sekundentakt, und ich könnte mir Vorstellen das wenn alle Sekunde geprüft wird ob eine Datei besteht oder nicht, das ziemlich:

- Unelegant ist
- System unnötig belastet wird

Somit fällt wohl, das per Datei kommunizieren flach. Bleibt noch Clipboard und Registery übrig.

Keine Ahnung, sagt mir einfach mal wie Ihr es am besten lösen würdet?

Grüsse Yanilie

Verfasst: 02.05.2006 14:40
von Leonhard
Benutz doch DDE :-)

Verfasst: 02.05.2006 15:07
von MVXA
Wie wäre es mit den Network Befehlen :?:

Verfasst: 02.05.2006 15:18
von Yanilie
Hallo,

danke erstmal für die Anregungen, DDE und Netzwerkbefehle stehen bei Anwendung 2 nicht zur Verfügung. Ich habe folgendes gefunden:

http://www.purebasic.fr/german/viewtopi ... 71&start=3

Also so wär es zumindest möglich, das die Anwendung 2 was an Anwendung 1 schickt, umgekehrt gehts dann aber noch nicht.

Stell mir das dann so vor:

Anwendung 1 [PureBasic] startet und wartet ob es evtl. Befehle bzw. Daten von Anwendung 3 [PureBasic] empfängt.

Anwendung 2 [Kein Purebasic], startet bei Bedarf Anwendung 3 [PureBasic] mit Parametern , diese Parameter werden dann durch Anwendung 3 [PureBasic] an Anwendung 1 [PureBasic] übermittelt, danach schließt sich Anwendung 3 [PureBasic] wieder.

Der Nachteil ist, ich kann immer nur von Anwendung 2 nach Anwendung 1 senden, aber nicht von Anwendung 1 nach Anwendung 2.

Recht unübersichtliches Konstrukt, das NonPlusUltra ist das sicher nicht, eher eine Flickschuster Lösung die ich da habe.

Grüsse Yanilie

Verfasst: 02.05.2006 15:19
von bobobo
Der RegistryZugriff wäre zeitlich unkritisch, da dort eh schon wie blöde
vom System drauf zugegriffen wird.

Verfasst: 02.05.2006 16:14
von Yanilie
Hallo,

danke erstmal! Ich werd es dann wohl über die Registry machen, zumindest wenn Anwendung 2 Informationen erhalten muss.

Den Code bei:

http://www.purebasic.fr/german/viewtopi ... 71&start=3

kann ich nicht compilieren, warum? Weil ich eine Demo Version habe von PureBasic?

Der Fehler kommt gleich in Zeile 1:

Code: Alles auswählen

MYMESSAGE  = RegisterWindowMessage_("Skywalker-Message")
Grüsse und Danke für die Hilfe! Yanilie

Verfasst: 02.05.2006 16:20
von bobobo
Die Demo unterstützt die "Unterstrich"-Befehle(Aufrufe aus der WindowsApi) nicht.

Besorg Dir ruhig mal ne Vollversion.

Verfasst: 02.05.2006 16:29
von Yanilie
Hallo,

Danke Bobobo :allright: , noch eine frage, wie kompatibel ist der API-Befehl RegisterWindowMessage ?

Also gibt es da irgendwo evtl. eine Übersicht wie Betriebssystemkompatibel ein bestimmter API Befehl ist?

Weil es nützt ja nix wenn ich mir jetzt Purebasic kauf, und dann würd das nur auf XP laufen, wg. den Aufruf des API-Befehls :wink:

Verfasst: 02.05.2006 16:36
von bobobo
Wenn es implementiert ist dann IST es der APi-Befehl.
UINT RegisterWindowMessage( LPCTSTR lpString
);
entspräche in PB dann einem

Code: Alles auswählen

Result= RegisterWindowMessage_("hallihallo") ;Result enthält den Rückgabewert

Verfasst: 02.05.2006 16:40
von ts-soft
Yanilie hat geschrieben:noch eine frage, wie kompatibel ist der API-Befehl RegisterWindowMessage ?
Platform SDK hat geschrieben:Minimum operating systems Windows 95, Windows NT 3.1