Autor Beitrag
DSeven
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: So 21.09.03 21:53 
Hallo

Ich möchte die Com-Schnittstelle eines Programms ansprechen um mit diesem zu arbeiten aber wie mach ich das? Eine interface Unit von dem Programm für delphi hab ich schon aber was nun?
mstuebner
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 132

Win2000, XP
D7
BeitragVerfasst: Mo 22.09.03 01:32 
DSeven hat folgendes geschrieben:
Hallo

Ich möchte die Com-Schnittstelle eines Programms ansprechen um mit diesem zu arbeiten aber wie mach ich das? Eine interface Unit von dem Programm für delphi hab ich schon aber was nun?

Wie meinst Du das? Wenn Du eine Unit hast die Funktionen enthält die den Com Port ansprechen, dann tät ich sagen: Funktionen aufrufen!

Ansonsten: More Input please.

_________________
mfg Matthias
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mo 22.09.03 13:00 
Hallo

Nur die Funktionen aufrufen? Ich bin etwas verwirrt weil da sachen stehen wie:
{9419B6A2-9D73-11D4-BB79-B0BBF3DE2E23}

die werden als const Variablen definiert keine ahnung warum.
naja ich werds mal versuchen. Das ist ein Com-Server denn ich irgendwie ansprechen möchte.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mo 22.09.03 13:36 
Schau dir mal die Funktionen: BuildCommDCB, SetCommState, TransmitCommChar etc. in der W32 hilfe an.
damit sollte es möglich sein, den Comport anzusprechen.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 22.09.03 14:22 
Nicht doch! Es geht um COM = Component Object Model, nicht um die Commports!

@DSeven:

Hast du eine Pasdatei, die dir die Interface-Deklaration zu dem Programm, das du ansteuern möchtest, enthält? Da müsste etwas in der Art
ausblenden Quelltext
1:
IMeinProgramm=interface					

drinstehen.

Auch ganz wichtig: Die CLSID des Programms. Mit dieser Guid erstellst du eine Verbindung zu dem zu benutzenden Proggie. Steht meist ebenfalls in der Pasdatei.

So läuft´s in etwa:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var MeinProgramm:IMeinProgramm;
begin
  //Verbindung mit Programm herstellen
  MeinProgramm:=(CreateComObject(CLSID_MeinProgramm) as IMeinProgramm);
  //Programm benutzen
  MeinProgramm.TuEtwas;
  //Programm wieder freigeben
  MeinProgramm:=NIL;
end;


Cu,
Udontknow


Zuletzt bearbeitet von Udontknow am Mo 22.09.03 14:23, insgesamt 1-mal bearbeitet
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mo 22.09.03 14:23 
In der Unit zu deinem Com-Server werden irgenwelche Intefaces definiert sein (InteressantesInterface = interface(IDispatch)). Daneben gibt es auch ein paar Co-Klasen (CoInteressantensInterface).

verwenden kannst Du es folgendermaßen

var
myIntfVariable: InteressantesInterface;
begin
myIntfVariable := CoInteressantensInterface.Create;
myIntfVariable.InteressanteMethode(....);
end;

Freigeben brauchst Du den COM-Server nicht mehr. Wird von Delphi durch die automatische referenzzählung freigegeben sobald keine Interfacezeiter mehr auf das COM-Objekt vorhanden ist.
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mo 22.09.03 14:25 
Udontknow hat folgendes geschrieben:
Nicht doch! Es geht um COM = Component Object Model, nicht um die Commports!

@DSeven:

Hast du eine Pasdatei, die dir die Interface-Deklaration zu dem Programm, das du ansteuern möchtest, enthält? Da müsste etwas in der Art
ausblenden Quelltext
1:
IMeinProgramm=interface					

drinstehen.

Auch ganz wichtig: Die CLSID des Programms. Mit dieser Guid erstellst du eine Verbindung zu dem zu benutzenden Proggie. Steht meist ebenfalls in der Pasdatei.

So läuft´s in etwa:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var MeinProgramm:IMeinProgramm;
begin
  //Verbindung mit Programm herstellen
  MeinProgramm:=CreateComObject(CLSID_MeinProgramm);
  //Programm benutzen
  MeinProgramm.TuEtwas;
  //Programm wieder freigeben
  MeinProgramm:=NIL;
end;


Cu,
Udontknow


Hallo
Danke genau das habe ich gesucht.
Ja dort steht die Interface Deklaration.
Werde mal etwas rum programmieren :)

@Bernhard Geyer: Danke ich werds mal probieren. Habe eigentlich noch nie mit Com gearbeitet. Gibt es irgendwie ein Buch zu diesem Thema oder eine Homepage?
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mo 22.09.03 14:45 
Es gibt was, und zwar von Andreas Kosch:

COM/DCOM www.software-support...11,_language,de.html

und

COM/DCOM/COM+www.software-support...11,_language,de.html
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mo 22.09.03 14:49 
Danke

Ich werde mir die Bücher mal bestellen um einen besseren überblick über dieses Thema zu erhalten.
mstuebner
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 132

Win2000, XP
D7
BeitragVerfasst: Mo 22.09.03 15:13 
DSeven hat folgendes geschrieben:
Hallo

Nur die Funktionen aufrufen? Ich bin etwas verwirrt weil da sachen stehen wie:
{9419B6A2-9D73-11D4-BB79-B0BBF3DE2E23}

die werden als const Variablen definiert keine ahnung warum.
naja ich werds mal versuchen. Das ist ein Com-Server denn ich irgendwie ansprechen möchte.

Asche auf mein Haupt, ich war irgendwie auf die serielle Schnittstelle fixiert. Ergo war mein Hinweis sinnfrei.

_________________
mfg Matthias
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mo 22.09.03 20:17 
Hallo

Also ich habe die methode von Udontknow versucht ging nicht. Folgende Fehlermeldung kommt: "Klasse nicht registriert".

Vieleicht handelt es sich auch um Dcom weil ich die ms dcom dll brauche.
Würde mir irgendjemmand besser helfen wenn ich ihm die unit schicke?
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 23.09.03 07:56 
Hmmm... Du hast auch garantiert die CLSID an CreateComObject übergeben? Und nicht etwa irgendeine IID?

Evtl. muss tatsächlich noch die DLL, in der die Klasse zu finden ist, registriert werden. Da gab es ein Kommandozeilenprogramm, das das machte, mir fällt der Name aber nicht ein. Du kannst es auch durch ein Delphi-Programm registrieren lassen, das gibt es in dem Borland-Unterverzeichnis Demos\ActiveX\TRegServer.

Cu,
Udontknow
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Di 23.09.03 11:06 
regsvr32 <DLL-zu-registrieren> registriert die Schnittstelle der DLL

Falls es sich um eine Exe handelt: <Exe-zu-registrieren> /REGSERVER
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 23.09.03 12:49 
Bernhard Geyer hat folgendes geschrieben:
regsvr32 <DLL-zu-registrieren> registriert die Schnittstelle der DLL

Falls es sich um eine Exe handelt: <Exe-zu-registrieren> /REGSERVER


Danke ich werds mal versuchen.
Also muss ich die exe registrieren.
Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen?
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mi 24.09.03 12:33 
Zitat:
Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen?

Kommt drauf an was die Anwendung macht. Evtl. hat das COM-Objekt noch einen Server-Teil mit dem es sich verbinden muß um etwas zu erledigen.
Was steht in der Beschreibung zur Komponente?
em-zed
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 17

Win 2003 Server Pro
D1
BeitragVerfasst: Mi 24.09.03 13:43 
Must halt einfach den Com Modulator trimmen, das ist doch total einfach!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 24.09.03 14:22 
Geht doch nicht! Die Grafikkarte verhindert doch einen Zugriff der Autoexec.bat über den Vesa-Local-Bus, Port X23A! Mensch! :mrgreen:
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mi 24.09.03 14:34 
Titel: Forumsoftware verwirrt?
Ist die Forums-Software verwirrt oder was sollen die letzten beiden Einträge?
DSeven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mi 24.09.03 15:14 
Bernhard Geyer hat folgendes geschrieben:
Zitat:
Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen?

Kommt drauf an was die Anwendung macht. Evtl. hat das COM-Objekt noch einen Server-Teil mit dem es sich verbinden muß um etwas zu erledigen.
Was steht in der Beschreibung zur Komponente?


Hmm also es ist keine Kompo.
Laut hersteller gibts auch keine Dokumentation.
Ja das ist ein Server habs gerade gesehen.
Hmm schaut es euch einfach mal an:
dd.cron.ru/dbg/

Das progg ist in C++
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mi 24.09.03 16:23 
Zitat:
Hmm also es ist keine Kompo.


Vielleicht keine Kombo im Delphi-Sinn aber im allgemeinen SW-Entwickler Sprachgebrauch schon. :wink:

Zitat:
Ja das ist ein Server habs gerade gesehen.
Hmm schaut es euch einfach mal an:

Ich denke mit der IP/Port-Adress ist die IP/Port-Adresse des PHP Debugger and Profiler mit dem du dich verbinden kannst.