ZUgriff auf Variable eines anderen Programms

Nico Graichen

Erfahrenes Mitglied
D12 hat gesagt.:
Sorry DOPPELPOST....
man kann seine eigenen Posts auch löschen ;)

back to Topic:
Schaff dir in deinem Dienst eine Schnittstelle, in der du deine Variable setzen kannst.
Füg im zweiten Projekt eine Referenz zu deinem Programm hinzu (wie das bei der IDE funktioniert, die du nutzt kann ich dir leider nicht sagen)

Code:
using MyService;      // der Namespace, deines NT-Dienste
using System;

....                // anderes Zeugs in deinem Programm

MyClass myClassInstanz = new MyClass();    // die Klasse instanzieren, in der sich die Property befindet
myClassInstanz .MyProperty = MyVal;           // Wert in Property schreiben

....            // anderes Zeugs in deinem Programm

du musst nur beim Hinzufügen der Referenz darauf achten, dass du auch die Exe erwichst, die auch als Dienst registriert ist (für den Fall du hast sie mehrfach irgendwo liegen)
 

Alexander12

Erfahrenes Mitglied
Hi.

Ich könnte bei Gelegenheit in C# ein Beispiel proggen. Brauchst halt das Framework, aber Ich nehme an, dass du das hast, weil du im .NET Forum gepostet hast... :-(


MfG Alexander12
 

D12

Mitglied
Hi Alexander 12,

brauche eigentlich nur einen simplen Service, der als Zähler eine Veränderung einer Variable bewirkt und eine Anwendung, die diese Variable anzeigt. Dann kommt das Verständnis von alleine.

Allerdings brauch ich das dringend, suche eh schon viel zu lange nach einer Lösung.
Wäre cool wenn Du mir ein Beispiel schicken könntest -> d12@pc24ac.de
Ich nehme natürlcih auch von jedem anderen Beispiele entgegen...

Salü, D12
 

D12

Mitglied
Hallo Nico,

danke für den Hinweis,... Wusste nicht das ich die löschen kann (weis immer noch nicht wie!).

Back to Topic:
1. Kann ich anstatt eines Service erst mal ein Proggy schreiben, das auf der Konsole basiert, oder muss ich zwingend einen Service schreiben um Dein Codefragment zu testen?

2. MyClass & .MyProperty? Sind das Synonyme für von mir geschriebene Klassen oder sind das Vorgaben?

Sorry, wenn die Fragen ein wenig dumm klingen, aber ich stehe mit der Entwicklung verteilter Anwendungen noch am Anfang.

LG D12
 

D12

Mitglied
Hi Alexander12,

hoffe das ist nicht zu viel Arbeit.
Wenn Du das heute ncoh fertig bekommst und ich damit mehr anfangen kann als mit meinen Büchern, dann kann ich Dir gerne was dafür bezahlen. Immerhin werde ich auch Geld dafür bekommen!

Wäre cool, wenn ich heute noch beide Projekte mit simpelster Funktionalität bekommen könnte.
1. Service, der zählt
2. Anwendung die den Zähler ausliest (kann ruhig auf Basis der Konsole sein, Schönheit zählt hier nicht)

Salü, D12
 

D12

Mitglied
Hallo Nico,

habe mal einen neuen Versuch gestartet, aber auch negativ...

Muss ich bei Deinem Beispiel zusätzlich zum Server und Client auch noch ein Object, das von MarshalByRefObject abgeleitet wird erzeugen?

Salü, D12
 

Nico Graichen

Erfahrenes Mitglied
D12 hat gesagt.:
brauche eigentlich nur einen simplen Service, der als Zähler eine Veränderung einer Variable bewirkt und eine Anwendung, die diese Variable anzeigt. Dann kommt das Verständnis von alleine.
Warum machst du das dann nicht mit einem Timer, der die Variable setzt. Wenn nur das geschehen soll, reicht das doch aus, dafür musst du doch keinen Service schreiben.

MyClass & MyProperty sind natürlich nur Synonyme um die Sache allgemein zu halten.

Um die Referenz hinzuzufügen, brauchst du kein MarshallByRefObject (ist mir jedenfalls nicht bewuust). In VS .Net kannst du ganz einfach im SolutionExplorer per Rechtsklick auf References eine .Net oder Com - Komponente hinzufügen. Wenn deine Service mit einer .Net-Sprache geschrieben ist, musst du beachten, dass du an irgendeiner Stelle einen Zugriff auf deine Variable hast (z.B. per Methode), einem Programm, dass nicht in einer .NetSprache geschrieben ist, brauchst du eine COM-Schnittstelle, auf die du zugreifen kannst (gibt noch andere Möglichkeiten, dass sind aber die einfachsten)

Aber, wie bereits gesagt brauchst du für das, was du machen willst keine NT-Dienst, ein Timer in deinem AnzeigeProgram tut's auch
 

D12

Mitglied
Es geht nicht nur um den Zähler, den könnte ich mit einem Timer organisieren.

Problemstellung: Ein Service liest in 75 MS-Takten eine IO aus, verarbeitet die Signale in einem Zählwerk und reagiert auf bestimmte IO's mit einem Event.

Nun soll ein anderes Programm lokal und über Netzwerk auf das Zählwerk zugreifen.

Deswegen habe ich zum testen einen rudimenären Serivce geschrieben, der bei jedem TimerTick einfach nur ctr++ zählt und den Wert im EventLog ablegt.

Nun möchte ich eine Anwendung, welche den aktuellen Zählerstand ausliest, wenn ich das gelöst habe, dann kann ich das auf mein Programm umsetzen und das komplexe Zählwerk über den Dienst zur Verfügung stellen.
 

Neue Beiträge