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?
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.
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.
Es ist möglich, ich muss nur diese Schnittstelle erzeugen.
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.
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....
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"
... und weil ich keine MFC unterstützte Express Version habe, weiche ich nun auf die QT Software aus.
> 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...
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.