Forum: PC-Programmierung Qt Creator COM Interface zu externer Software


von An D. (deinbesta)


Lesenswert?

Hallo,

ich habe eine kleine Frage.
Ich habe natürlich davor schon viel im Internet gesearched und leider 
nichts hilfreiches gefudnen.

Mein Vorhaben ist es, mit QT Creator 2.6.2 eine kleine Anwendung (GUI) 
mit einem BUTTON zu entwerfen, mit dem ich eine externe Software 
bedienen kann.
Auf das Betätigen des Buttons der GUI soll in der externen Software ein 
Button aktiviert werden.

Ich habe eine idl. und eine .tlb file, welche das COM Interface 
beschreiben sollen. Dann weiß ich, dass irgendwie die folgenden Sachen 
dazugehören:
'''''''''''''''''
CoInitialize(); oder auch CoInitialize(NULL);
'''''''''''''''''
CoUninitialize();
'''''''''''''''''
HResult hr;
hr = ::CoCreateInstance(CLSID_Application, NULL, CLSCTX_LOCAL_SERVER,
IID_IApplication, (void**)&m_IApplication);
if(SUCCEEDED(hr)){
if (m_IApplication) {
m_IApplication->Connect ( 1 ); //Mit Connect (1) wird der Button
                               //aktiviert, wie ich verstanden habe.
                    }
                  }
'''''''''''''''''

Ich wüsste jetzt nicht, wie ich das alles zusammenknüpfe. Kann jemand 
mir step by step Ratschläge geben?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

An Dre schrieb:
> Auf das Betätigen des Buttons der GUI soll in der externen Software ein
> Button aktiviert werden.

Ich habe Dir bereits in Deinem anderen Thread zum gleichen Thema 
geschrieben, daß Du per Automation nicht irgendwelche Buttons in anderen 
Anwendungen bedienen können wirst. Du kannst per Automation nur die von 
der "externen Software" vorgesehenen Schnittstellen ansteuern.

von An D. (deinbesta)


Lesenswert?

Hallo,
mit dem Befehl gBUSMASTERApp .Connect 1, nach dem man eine schnittstelle 
erzeugt hat, soll man auf der externen Software aber ein Button 
aktivieren/deaktivieren können.

von An D. (deinbesta)


Lesenswert?

Es ist möglich, ich muss nur diese Schnittstelle erzeugen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Aha. Das ist zwar was anderes als in einer Anwendung einen Knopf zu 
betätigen, aber wenn das das tut, was das Betätigen des Knopfes auch 
täte, ist ja Dein Problem gelöst.

(Im übertragenen Sinne: Du willst, daß das Licht ausgeht, und betätigst 
nicht den Taster, sondern direkt das Stromstoßrelais im 
Sicherungskasten. Das schaltet das Licht auch aus, und das ist auch 
vollkommen in Ordnung, aber Du kannst nicht behaupten, daß Du den Taster 
betätigen würdest).

Zu Deinem eigentlichen Problem:

Könnte es sein, daß Du Dich mit der Idee, ausgerechnet mit C++ 
COM-Automation zu betreiben, etwas übernommen hast?

COM-Automation mit Betriebssystemmitteln ist eine, sagen wir mal, 
haarige Angelegenheit. Das ist nichts, was man ohne viel 
Grundlagenwissen mal eben einfach so in Form von ein paar Zeilen 
hinhackt.

Das ist mit VBScript/JScript viel einfacher zu handhaben als mit C++, 
und mit VB.Net, C# oder einem der anderen .Net-Dialekte auch.

von An D. (deinbesta)


Lesenswert?

Hallo,
ich beziehe mich auf diesen Link:
''''''''''''''''''''''''
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel15.htm
''''''''''''''''''''''''

Eigentlich müsste es doch kinderleicht sein, kurz eine Schnittstelle 
einzubinden und über diese dann ein externes Programm zu bedienen.

Es geht mit VB in wenigen Zeilen.

Es müsste ja eigentlich so ne Art Grundgerüst auch für Cpp geben.

Im oberen Link wird e schon teilweise erklärt, nur bedient man sich in 
dem oberen Link einer "besseren" Visua C++ Version, nämlich nicht so wie 
ich der Express....

von Peter II (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Das ist mit VBScript/JScript viel einfacher zu handhaben als mit C++,
> und mit VB.Net, C# oder einem der anderen .Net-Dialekte auch.

das habe wir ihn gestern schon versucht zu erkären

Beitrag "COM Schnittstelle von Visual C++ (.Net) zu anderer Software"

von An D. (deinbesta)


Lesenswert?

... und weil ich keine MFC unterstützte Express Version habe, weiche ich 
nun auf die QT Software aus.

von An D. (deinbesta)


Lesenswert?

> das habe wir ihn gestern schon versucht zu erkären
Das ist richtig, nur dachte ich, dass es vielleicht irgendwo da draußen 
Profis gibt, die täglich solche Com Schnittstellen mit QT programmieren 
und schnell ein Grundgerüst Programm anbieten könnten. Wie gesagt, 
eigentlich habe ich die wesentlichen Sachen schon in dem ersten Beitrag 
genannt. Das mit Coinitialize und dass ich schon die über die .idl und 
.tlb files verfüge etc...

von Peter II (Gast)


Lesenswert?

An Dre schrieb:
> Das ist richtig, nur dachte ich, dass es vielleicht irgendwo da draußen
> Profis gibt, die täglich solche Com Schnittstellen mit QT programmieren
> und schnell ein Grundgerüst Programm anbieten könnten.

wenn du ein wenig C könntenst, dann ist es kein Problem diese code 
einzubauen. Da du aber das scheinbar nicht kannst, sollte du erstmal die 
Grundlagen von C/C++ lernen.

von An D. (deinbesta)


Lesenswert?

Nochmals um klarzustellen: Die Bedienung der externen Software passiert 
nichtauf die Art, dass man eine Maus über die externe Software bewegt, 
sondern auf die Art, dass man über eine Schnittstelle z.B. einen Button 
der externen Software aktiviert/deaktiviert.

Dafür wird z.B. der folgende Befehl dieser externen Software angeboten:
gBUSMASTERApp .Connect 1

von An D. (deinbesta)


Lesenswert?

Wenn es doch kein Problem ist, dann verrat mir bitte auf welche Art und 
Weise?

Ich wäre dir sehr dankbar. Wir können dafür auch ruhig Codes 
austauschen.

Außerdem habe ich in Foren: (z.B.)
''''''''''''''''''''''''
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuc...
''''''''''''''''''''''''
...auch gelesen, dass so eine Einlernung von COM Interface 
Programmierung bis zu mehreren Monaten Zeit Bedarf. Ob ich nun ein super 
C Programmierer bin, oder nicht, ist bei diesem schwierigen/ und 
zugleich kinderleichten  Thema dahingestellt.

Ich will aufjedenfall an diesem Thema dranbleiben und auch eine 
allumfassende Lösung allen unwissenden da draußen, wie es schon in dem 
Link von henkesoft... der Fall ist, anbieten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

An Dre schrieb:
> Außerdem habe ich in Foren: (z.B.)
> ''''''''''''''''''''''''
> http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuc...

Das bezieht sich auf die MFC. Du benutzt die MFC nicht, Du kannst die 
MFC nicht benutzen.

Bemüh doch einfach mal die Internetsuchmaschine Deiner Wahl und füttere 
sie mit den Stichworten "QT COM automation", wenn Du schon darauf 
verharrst, Dir unbedingt mit C++ die Finger brechen zu müssen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.