Page Index Toggle Pages: 1 Send TopicPrint
Normal Topic Frage zur Ansteuerung des COM-Servers unter Delphi (Read 3743 times)
gersch
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 5
Joined: 27. Jul 2007
Gender: Male
Frage zur Ansteuerung des COM-Servers unter Delphi
04. Sep 2007 at 22:24
Print Post  
Hallo !

Ich bin gerade dabei mich in die COM-Schnittstelle des Phoners zu verlieben Wink

Allerdings habe ich ein (aus meinen Augen) recht triviales Problem mit der Verbindung zum COM-Server.

Ich möchte gerne NUR zu einer gerade laufenden Instanz verbinden, auf keinen Fall eine neue Instanz starten. 

Ist gerade keine Instanz aktiv, dann soll eine Exception oder ähnliches geworfen werden.

Rein theoretisch hätte ich das jetzt so verstanden, dass ich bei ConnectKind ein 'ckRunningInstance' eintrage und genau dieses Verhalten bekomme. Allerdings findet er in diesem Modus eine per Hand gestartete Phoner-Instanz nie Sad

Der einzige Weg zu einer vorher gestarteten Instanz zu verbinden, ist als ConnectKind ein 'ckRemote' und als RemoteMachineName 'localhost' einzutragen. Damit klappt es problemlos. 

Allerdings gibt es dann wieder das Problem, dass er automatisch eine Instanz startet, wenn noch keine Phoner.exe am laufen ist.

*grmpf*

Leider bin ich nicht so bewandert in COM/OLE unter Delphi um mir da selbst aus der Patsche zu helfen.

Hat evtl. jemand einen Tipp für mich wie ich das gewünschte Verhalten hinbekommen kann ?

Vielen Dank schon mal !

LG, Gerald


EDIT:

Man sollte keine Nachrichten posten, während die Frau zum Essen ruft Wink

Hier noch die Fehlermeldung, die mir bei der 'ckRunningInstance'-Variante ausgegeben wird:

Es kann kein Zeiger für ein ausgeführtes Objekt geholt werden, das mit OLE für Phoner.CPhoner/{...} registriert ist.

Hört sich für mich so an, als würde Phoner sich bei einem 'normalen Start' nicht als Server registrieren ?

Was mich dann aber wieder wundert, ist die Tatsache, dass es bei einem 'ckRemote' funktioniert.

Umgebung ist Windows Vista und Delphi 2007.

« Last Edit: 04. Sep 2007 at 23:24 by gersch »  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11412
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Frage zur Ansteuerung des COM-Servers unter De
Reply #1 - 05. Sep 2007 at 09:31
Print Post  
In meinem Sample muss ich definitiv nicht über den Remote Server gehen - aber darum geht es ja auch gar nicht.
Wenn du den Wrapper generieren hast lassen und die Komponente auf die Form ziehst, so wird die automatisch beim Start auch erzeugt und damit auch die Connection zum Server aufgebaut. 
Du kannst die Komponente auch manuell einbinden und musst die dann auch manuell erstellen und die Event-Funktionen setzen.

Ich bin leider nicht der COM Experte. Vielleicht mache ich auch etwas falsch, sodass dieses AutoConnect fälschlicherweise immer geschieht. Sorry, aber momentan weiss ich auch keine Lösung.
  
Back to top
WWW  
IP Logged
 
gersch
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 5
Joined: 27. Jul 2007
Gender: Male
Re: Frage zur Ansteuerung des COM-Servers unter De
Reply #2 - 05. Sep 2007 at 15:50
Print Post  
Hallo Heiko,

vielen Dank für die schnelle Antwort.

Den Wrapper habe ich generieren lassen und bekomme auch auf alle möglichen und 'unmöglichen' Arten eine Verbindung Wink

Auch die COM-Funktionen und Events funktionieren einwandfrei wenn die Verbindung steht.

Wenn man mein Problem mal reduziert, fehlt mir im Prinzip nur eine Möglichkeit festzustellen, ob denn schon eine Phoner.exe gestartet wurde (bzw. als COM-Server registriert ist) oder nicht. 

Ich möchte nur dann zu Phoner verbinden, wenn dieser schon läuft (das könnte ich dann in meinem Fall mit rkRemote) - auf keinen Fall möchte ich eine Instanz starten lassen beim Verbindungsversuch.

D.h. mein Programm läuft im Hintergrund und wartet darauf, bis eine Phoner-Instanz gefunden wurde. In diesem Fall soll dann zu dieser verbunden werden.

Wenn dieses 'rkRunningInstanz' funktionieren würde, wäre das perfekt. Mal sehen, evtl. funkt mir da auch wieder mal Vista dazwischen (wäre nicht das 1. Mal Sad ). Ich versuche es noch mal unter XP.

Ist ja prinzipiell kein Phoner Problem, hoffte nur, dass schon mal jemand die gleichen Erfahrungen gemacht hat.

LG, Gerald


EDIT: Ich habe es noch mal unter XP versucht. Auch da liefert rkRunningInstance trotz laufendem Phoner die obige Fehlermeldung Sad
  
Back to top
 
IP Logged
 
Suppenkasper
God Member
*****
Offline


Phoner-Support

Posts: 1536
Location: Aachen
Joined: 29. Mar 2005
Gender: Male
Re: Frage zur Ansteuerung des COM-Servers unter De
Reply #3 - 08. Sep 2007 at 12:16
Print Post  
Hallo @ gersch,

ich muss vorausschicken, dass ich mich mit den Methoden des COM-Servers nun noch nicht einmal ansatzweise auskenne - jedoch habe ich die vage Vermutung, dass - falls der Phoner-Server die möglichen Bindungen an ihn korrekt anbietet - Dir diese Fundstelle vielleicht weiterhelfen könnte. Dort sind verschiedene Methoden beschrieben - allerdings für die COM, mit der die Software pdfforge Schnittstellen anbietet. Ob das eine mit dem anderen Vergleichbar ist, kann ich jetzt mangels Delphi- und COM/OLE-Erfahrung nicht sagen.

Eventuell könnte eine dieser Methoden ja bereits die Lösung "Eures" Problems sein.

Herausgefunden habe ich jedoch, dass bei einem ckRemote in jedem Fall der RemoteMachineName anzugeben ist, da diese Methode ansonsten keine Bindung zu einem Server aufnehmen kann.

ckRunningInstance müsste nach meinem Verständnis für Deinen Fall, gersch, die einzig richtige Zugriffsmethode sein. Insofern müsste dieser Art des Zugriffs - schlagt mich beide mit Worten, wenn ich da falsch liege - durch Phoners COM-Server auch irgendwie definiert und der richtigen Funktion zugeordnet werden.

Jetzt lasst mich einmal weiterspinnen: Für meine Begriffe, wurde ckRunningInstance für den Zugriff genutzt, sollte die angesprochene Klasse, die den Connect auslöst, eine Plausibilitäts-Prüfung - enthalten:

etwa (abstrakt und fern von jeder Programmiersprache dargestelt)

Wenn "ckRunningInstance" dann "Connect",
wenn "ckRunningOrNew" dann "Connect" oder Starten einer neuen Instanz und "Connect",
wenn "ckNewInstance" dann Starten einer einer neuen Instanz und "Connect"

Irre ich mich als Laie denn so sehr, oder ist dass, was ich hier erzähle, totaler Müll?

Viele Grüße vom Kai
  
Back to top
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11412
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Frage zur Ansteuerung des COM-Servers unter De
Reply #4 - 03. Oct 2007 at 11:05
Print Post  
Ich gebe zu, dass das Verhalten evtl. nicht ganz korrekt ist, habe jedoch keine Lösung derzeit parat. Sorry.
  
Back to top
WWW  
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint