Toon posts:

[VB6][C++] Communicatie tussen 2 apps

Pagina: 1
Acties:
  • 159 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil graag informatie tussen twee programma's uitwisselen. Beide moeten tegelijkertijd draaien. Mijn plan was om de (oo) structuur in c++ te doen, en vb dan de info te geven om de gui te laten draaien. Het probleem: hoe? Ik hoorde van DDE, maar wat dat exact is weet ik ook niet. Ik heb nu enkel telefoonbinternet,dus een dagenlange zoektoht over het internet zou mijn ouders niet blijmaken, daarom vraag ik het hier.
Alvast bedankt voor de hulp.

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Er zijn verschillende voor IPC (zoek eens op die term).

- Pipes
- Messages
- COM
- DDE (zoals je zelf al aangeeft).

Welke methode het meest geschikt is hangt een beetje af van wat je wil communiceren.

Verwijderd

Ik raad je aan om gebruik te maken van COM objecten. Daar valt best veel over te weten, en op deze URL kan je er meer informatie over vinden: http://msdn.microsoft.com...l_introduction_to_com.asp

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wat voor informatie moet je zoal uitwisselen? Constante realtime info of sporadische info? Grote of kleine info? Etc?

Sowieso moet je je al afvragen of het wel slim is om 2 processen in de lucht te jassen: dat is alleen interessant als ze feitelijk gescheiden moeten kunnen leven (server/client). In de meeste gevallen is het interessanter om het C++ core-verhaal als DLL te schrijven en in VB aan te roepen.

COM is troep, en ik raad je van harte af om ermee kennis te maken. Microsoft vindt het ook troep fyi, en het lijkt me niet dat je het hiervoor nodig gaat hebben (het is alleen onmisbaar bij Shell-plugins, 'embedded' objects en bepaalde distributed applicaties).

DDE is trouwens een anachronisme, I quote uit de SDK:
DDE is a protocol that enables applications to exchange data in a variety of formats. Applications can use DDE for one-time data exchanges or for ongoing exchanges in which the applications update one another as new data becomes available.

The data formats used by DDE are the same as those used by the clipboard. DDE can be thought of as an extension of the clipboard mechanism. The clipboard is almost always used for a one-time response to a user command, such as choosing the Paste command from a menu. DDE is also usually initiated by a user command, but it often continues to function without further user interaction. You can also define custom DDE data formats for special-purpose IPC between applications with more tightly coupled communications requirements.

DDE exchanges can occur between applications running on the same computer or on different computers on a network.

Key Point: DDE is not as efficient as newer technologies. However, you can still use DDE if other IPC mechanisms are not suitable or if you must interface with an existing application that only supports DDE.

Professionele website nodig?


Verwijderd

curry684 schreef op 29 December 2002 @ 00:42:
COM is troep, en ik raad je van harte af om ermee kennis te maken. Microsoft vindt het ook troep fyi, en het lijkt me niet dat je het hiervoor nodig gaat hebben (het is alleen onmisbaar bij Shell-plugins, 'embedded' objects en bepaalde distributed applicaties).
Fijn stukje fud curry of heb je ook nog 'n ms linkje om het te onderbouwen? (je weet dat .net stiekum com3 is he?)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 29 December 2002 @ 00:55:
Fijn stukje fud curry of heb je ook nog 'n ms linkje om het te onderbouwen? (je weet dat .net stiekum com3 is he?)
Waarom zou COM al in z'n korte bestaan voorbijgestreeft zijn door COM+ en COM3 (om in jouw terminologie te blijven) als het geen troep was? :)

.NET is bruikbaar door normale mensen, COM niet (vanuit C++ overigens, in VB valt het allemaal best mee totdat je gaat mixen met C++).

Professionele website nodig?


Verwijderd

COM+ is niet een vervanger van COM, maar een aantal extra services waar je met COM gebruik van kunt maken. Het is vergelijkbaar met MTS, maar dan ingebouwd in het OS (Win2000 en hoger). Verder zou Windows omvallen zonder COM (want bijna alles is COM, behalve de WinAPI).

Edit:
En ja, COM is best complex, maar niet noodzakelijkerwijs crap. En tenzij je .Net gebruikt is het gewoon je beste keuze.

Edit2:
Overigens bestaat COM al sinds Win95 SR2, en tot op heden niet aangepast, dus zo kort leven is het nou ook niet beschoren geweest.

[ Voor 37% gewijzigd door Verwijderd op 29-12-2002 01:33 . Reden: Win 92?? Oeps ;) ]


Verwijderd

curry684 schreef op 29 december 2002 @ 01:00:
.NET is bruikbaar door normale mensen, COM niet (vanuit C++ overigens, in VB valt het allemaal best mee totdat je gaat mixen met C++).
Och in Visual C valt het ook reuze mee hoor, met het #import directive genereerd ie hele mooie wrapper classjes voor je inc error handling zodat je niet steeds bezig bent je hresults te checken...

  • beany
  • Registratie: Juni 2001
  • Laatst online: 26-08 04:23

beany

Meeheheheheh

klinz schreef op 28 december 2002 @ 23:45:
Er zijn verschillende voor IPC (zoek eens op die term).

- Pipes
- Messages
- COM
- DDE (zoals je zelf al aangeeft).

Welke methode het meest geschikt is hangt een beetje af van wat je wil communiceren.
- TCP/IP

Ben je klaar voor de toekomst als de 2 applicaties op aparte machines moet gaan draaien.

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Verwijderd

Okay, maar zo kan je door blijven gaan ...
- XML-RPC
- SOAP
- CORBA
- etc

Overigens kan je met COM ook D(istributed)COM gebruiken.

  • beany
  • Registratie: Juni 2001
  • Laatst online: 26-08 04:23

beany

Meeheheheheh

Gaat alles wat je opnoemt, MrX, niet over TCP/IP ???

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Verwijderd

beany schreef op 29 December 2002 @ 01:57:
Gaat alles wat je opnoemt, MrX, niet over TCP/IP ???
Ja, maar je steekt op een ander nivo in, waardoor je los staat van de TCP/IP implementatie. Ik nam aan dat jij bedoelde dat je met sockets wilde gaan werken.

Ik doelde te zeggen dat je op heel veel wijzen computers met elkaar kunt laten communiceren.

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 10:37

johnwoo

3S-GTE

Wat extra informatie van de topicstarter zou inderdaad handig zijn :)
Als het echt puur om de scheiding core classes / GUI gaat dan kun je inderdaad het beste een DLL bakken in C++, en die gebruiken in VB. Let er wel op dat je dan geen classes uit de DLL kan gebruiken in je VB programma (tenzij je er COM classes van maakt ;) ), dus de interface zal gewoon plat moeten zijn.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

beany schreef op 29 December 2002 @ 01:42:
- TCP/IP

Ben je klaar voor de toekomst als de 2 applicaties op aparte machines moet gaan draaien.
Niet meteen kijken, maar Named Pipes en COM werken ook over aparte machines.

Professionele website nodig?


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Als je voor DDE, Named Pipes of DCOM kiest weet je i.i.g. dat het alleen op Windows gaat werken. Als je voor iets anders kiest heb je nog de mogelijkheid om ook te verbinden met niet-Windows computers...

FireFox - neem het web in eigen hand


Verwijderd

Topicstarter
Eigenlijk was het idee enkel om de OO structuur in c++ te maken omdat ik daar een aantal dingen wel kan die in vb ook slomer gaan. De bedoeling was om dan in vb er een gui bij te maken. Die wil ik dus ook kunnen vervangen, de gui.

Verwijderd

Verwijderd schreef op 01 januari 2003 @ 01:26:
Eigenlijk was het idee enkel om de OO structuur in c++ te maken omdat ik daar een aantal dingen wel kan die in vb ook slomer gaan. De bedoeling was om dan in vb er een gui bij te maken. Die wil ik dus ook kunnen vervangen, de gui.
Niet moeilijk doen met inter process communications dus maar gewoon een dll gebruiken, verreweg het gemakkelijkst

Verwijderd

Topicstarter
Hoe maak ik in c++ dan een dll en kan ik die classes die ik daar maak ook toegankelijk maken voor vb? Ik gebruik als compiler dev/c++.

Verwijderd

Verwijderd schreef op 01 January 2003 @ 15:23:
Hoe maak ik in c++ dan een dll en kan ik die classes die ik daar maak ook toegankelijk maken voor vb? Ik gebruik als compiler dev/c++.
Voor de duidelijkheid: Deze tutorial gaat dus over COM, wat dus iets anders is als even een dll'tje maken wat ik voorstelde. COM is eigenlijk een geavanceerde en gestandardiseerde manier waarop je onderandere je app met een dll (of andere process) kan laten communiceren, maar in dit geval is het denk ik overkill: COM is vooral nuttig als je dll door verschillende programma's op een pc gebruikt moet worden en dat lijkt bij jouw niet zo te zijn. COM geeft je wel de mogelijkheid objecten in VB aan te spreken, iets wat met een simpel dll'tje niet gaat, daar kun je alleen alle globale methoden (die expliciet geexporteerd worden) aanroepen vanuit externe applicaties.
COM biedt dus (veel) meer mogelijkheden, maar is wel een stukje lastiger te proggen in C++. Succes!

Verwijderd

Verwijderd schreef op 01 January 2003 @ 18:57:
Voor de duidelijkheid: Deze tutorial gaat dus over COM, wat dus iets anders is als even een dll'tje maken wat ik voorstelde.
't was ook geen tutorial over jouw idee, 't was een antwoord op z'n vraag hoe maak in C++ een dll waarvan ik de classes in VB kan benaderen en dan is de enige manier COM.. het valt me op dat nogal wat mensen (vooral uit de C/C++ hoek) tegen COM aan kijken als iets vreselijk ingewikkelds terwijl als je je een heel klein beetje basis kennis eigen maakt met visual C in notime COM enabled dll's kan maken dmv de active template lib.. goed gaat voor de topic starter niet op omdat ie 'n andere onwikkel omgeving gebruikt maakt maar echt.. COM is niet eng.. echt niet...
Pagina: 1