Hallo zusammen!
Ich habe ein Server-Programm und ein Client-Programm entwickelt. Beide befinden sich auf
unterschiedlichen Rechnern (Beide Windows 2000). Die Kommunikation zwischen den Rechnern
basiert also auf der DCOM-Technologie. Es sind ausschliesslich diese beiden Rechner
vernetzt.
Ich habe mit hilfe des Automatisierungs-experten eine TLB-Datei generieren lassen. Diese
habe ich in meinem Client-Programm eingebunden! Der Aufruf des Servers erfolgt mit der
Funktion : RemoteControl:= CoAutoObject.CreateRemote(MasterPC).
Wobei 'MasterPC' von mir auf dem Client-PC in der Hosts-Datei definiert
wurde.
'192.168.0.1 SERVER'.
In dem Client habe ich dann eine Konstante definiert:
const MasterPC = 'SERVER'
Die Serveranwendung habe ich von dem Client-PC mit dem Zusatz: /regserver aufgerufen und ist somit registriert.
Jetzt das Problem:
Starte ich zuerst das Serverprogramm und anschliessend das Client-Programm auf dem anderen
Rechner, funktioniert alles prächtig. Ich kann alle spezifizierten Komponenten fernsteuern.
Starte ich allerdings zuerst das Client-Programm, so erzeugt dieses auf dem Server-PC den Prozess der Server-Anwendung. Beende ich nun den Zugriff (RemoteControl:= nil) dann erfolgt
eine Exception auf dem Server-PC. Quittiere ich die Exception, verschwindet der Prozess dann schliesslich.
Mein Ziel: Ich möchte das Client-Programm gerne solange in einer Warteschleife lassen bis die Serveranwendung auch wirklich gestartet ist.
Versuche mit
GetActiveObject(CLASS_AutoObject, nil, aSrvObj);
if Assigned(aSrvObj) then
begin
RemoteControl:= aSrvObj as IAutoObject;
end;
tragen leider auch keinr Früchte. Ich nehme an weil der Prozess halt auf einem anderen Rechner läuft?!
Das Client-Programm darf AUF GAR KEINEN FALL einen Prozess auf dem Server-PC starten, sondern darf sich lediglich aufschalten!
Lange Rede kurzer Sinn: I need your help!
Ich habe ein Server-Programm und ein Client-Programm entwickelt. Beide befinden sich auf
unterschiedlichen Rechnern (Beide Windows 2000). Die Kommunikation zwischen den Rechnern
basiert also auf der DCOM-Technologie. Es sind ausschliesslich diese beiden Rechner
vernetzt.
Ich habe mit hilfe des Automatisierungs-experten eine TLB-Datei generieren lassen. Diese
habe ich in meinem Client-Programm eingebunden! Der Aufruf des Servers erfolgt mit der
Funktion : RemoteControl:= CoAutoObject.CreateRemote(MasterPC).
Wobei 'MasterPC' von mir auf dem Client-PC in der Hosts-Datei definiert
wurde.
'192.168.0.1 SERVER'.
In dem Client habe ich dann eine Konstante definiert:
const MasterPC = 'SERVER'
Die Serveranwendung habe ich von dem Client-PC mit dem Zusatz: /regserver aufgerufen und ist somit registriert.
Jetzt das Problem:
Starte ich zuerst das Serverprogramm und anschliessend das Client-Programm auf dem anderen
Rechner, funktioniert alles prächtig. Ich kann alle spezifizierten Komponenten fernsteuern.
Starte ich allerdings zuerst das Client-Programm, so erzeugt dieses auf dem Server-PC den Prozess der Server-Anwendung. Beende ich nun den Zugriff (RemoteControl:= nil) dann erfolgt
eine Exception auf dem Server-PC. Quittiere ich die Exception, verschwindet der Prozess dann schliesslich.
Mein Ziel: Ich möchte das Client-Programm gerne solange in einer Warteschleife lassen bis die Serveranwendung auch wirklich gestartet ist.
Versuche mit
GetActiveObject(CLASS_AutoObject, nil, aSrvObj);
if Assigned(aSrvObj) then
begin
RemoteControl:= aSrvObj as IAutoObject;
end;
tragen leider auch keinr Früchte. Ich nehme an weil der Prozess halt auf einem anderen Rechner läuft?!
Das Client-Programm darf AUF GAR KEINEN FALL einen Prozess auf dem Server-PC starten, sondern darf sich lediglich aufschalten!
Lange Rede kurzer Sinn: I need your help!
Comment