<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Visual Basic 6.0</title><link>https://www.dotnetzone.gr:443/cs/forums/25/ShowForum.aspx</link><description>Θέματα που αφορούν την VB6 και COM components</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1365.aspx</link><pubDate>Mon, 07 Mar 2005 05:25:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1365</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1365.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1365</wfw:commentRss><description>&lt;font face="Tahoma" size="2"&gt;Λοιπόν από την αρχή... Προχτές για τα γεννεθλιά μου - μην ρωτήσεις πόσο&amp;nbsp;έγινα - μου κάνανε δώρο το "&lt;/font&gt;&lt;a target="_blank" title="http://www.apress.com/book/bookDisplay.html?bID=81" href="http://www.apress.com/book/bookDisplay.html?bID=81"&gt;&lt;font face="Tahoma" size="2"&gt;COM and .NET Interoperability&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;" του Andrew Troelsen της Apress. Αυτό μου έβαλε τις φυτιλές και είπα να κάνω αυτό το "project".&lt;br /&gt;&lt;br /&gt;Μετά αυτό που μου είπες να βάλω το AssemblyInfo.vb το&lt;/font&gt;&lt;br /&gt;&lt;br /&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;font color="#0000ff"&gt;Assembly&lt;/font&gt;: ClassInterface(ClassInterfaceType.None)&amp;gt; &lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;είναι ότι&amp;nbsp;δεν&amp;nbsp;δεν θα πρέπει&amp;nbsp;να κάνεις σε μια τέτοια δουλειά απο .NET σε VB. Δεν βάζει τίποτα μέσα στο TypeLib από automation και άντε να καταλάβει η VB... Και αυτό δουλεύει μόνο για Classes. Εδώ δεν είχαμε Classes αλλά μόνο Interface. Για να κάνεις το ίδιο για το Interface γράφεις το&lt;/font&gt; &lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Guid("BB071552-04E6-4144-8179-A36613DD4B98"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)&amp;gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Interface&lt;/font&gt;&lt;font size="2"&gt; IBlogExtension&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tahoma"&gt;Από ότι κατάλαβα άμα χρησιμοποιήσεις το&lt;/font&gt; &lt;font size="2"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;ComInterfaceType.InterfaceIsDual&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;&lt;br /&gt;&lt;font face="Tahoma"&gt;τα κάνει όλα μόνο του, και την αρίθμιση των members όπως πρότεινες.&lt;br /&gt;&lt;br /&gt;Θα μου πεις τώρα αν δούλεψε τελικά! &lt;br /&gt;&lt;br /&gt;Τσου! Δεν πρόλαβα να προβληματιστώ πως θα δω το System.Windows.Forms.dll - που ούτως ή άλλως είναι κάτω από τα References της VB, ψάξε να το δεις - γιατί η VB δεν υποστηρίζει Interfaces που τα members τους έχουν μεταβλητές τύπου IUnknown, που είναι οι μεταβλητές από τα δύο τελευταία members για την VB.&lt;br /&gt;&lt;br /&gt;Για αυτό ενώ το βλέπεις να το κάνεις Implement και το βλέπεις από τον Object Browser δεν βλέπεις τα members να γράψεις το κώδικα.&lt;br /&gt;&lt;br /&gt;Εχω σχεδόν διαβάσει το μισό βιβλίο από χτες, θα συνεχίσω να διαβάσω και το υπόλοιπο και κατά πάσα πιθανότητα θα το φτιάξω&amp;nbsp;σε VB.NET, αν δεν βαρεθώ.&lt;br /&gt;&lt;br /&gt;Πάντως μετά από την βαβούρα και το&amp;nbsp;ψάξιμο βρήκα ότι μπορείς να κάνεις πολλά πράγματα με τα .IDL αρχεία, πχ να φτιάξεις TypeLibs που κάνουν reference το WinAPI και δεν χρειάζεται να γράφεις τα Declare μέσα από VB6 ποτέ ξανά... &lt;br /&gt;&lt;br /&gt;Αχ αυτοί οι C++ programmers γιατί μας αφήνουν τόσα χρόνια στα σκοτάδια και να τα βλέπω αυτά τα πράγματα μετά από 8 χρόνια developing VB6, ενώ το VS6 και VC6 μπορούσε να φτιάχνει .IDLs&amp;nbsp;και να τα κάνεις TypeLib από την αρχή;&lt;br /&gt;&lt;br /&gt;George J.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1364.aspx</link><pubDate>Mon, 07 Mar 2005 01:57:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1364</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1364.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1364</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/forums/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;gcapnias wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt; Το έκανα και έκανα reference το .tlb από τη VB6, αλλά όταν έγραψα το Implements IBlogExtension δεν εμφανίστηκε στη λίστα το IBlogInterface για να μπορέσω να το κάνω implement! &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;Αααα... sorry, αλλά νόμιζα ότι δεν φαίνονταν το interface όταν έγραφες το "implements xxx", δεν πήγα παρακάτω να κάνω implement κάποιο member...&lt;br /&gt;Όντως συμβαίνει αυτό που λες και για να σου πω την αλήθεια, έχω μπερδευτεί με αυτό που προσπαθείς να κάνεις... &lt;br /&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/forums/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;gcapnias wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt; &lt;font face="Tahoma" size="2"&gt;Να φτιάξω 2 wrappers για δύο πολύ βαριά controls,&amp;nbsp;και να τα κάνω απλώς πιο βαριά,&amp;nbsp;μόνο και μόνο για&amp;nbsp;να είμαι μέσα από managed περιβάλλον; Δεν είναι χαζό; Δεν είναι προτιμητέο να κάνω το Interface .tlb και να το κάνω implement κάτω από unmanaged περιβάλλον, από VB6; &lt;font face="Verdana"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;Οι δύο wrappers αυτοί ουσιαστικά είναι proxy objects οπότε δεν πρόκειται για δύο νέα βαριά objects αλλά για τα proxies τους, το δε dll που παράγεται από μια τέτοια διαδικασία είναι πολύ μικρό ακριβώς γι αυτόν το λόγο.&lt;br /&gt;Από την άλλη μεριά, το interface που έχεις βάλει στο μάτι, στα δύο τελευταία sub χρησιμοποιεί δύο άλλα interfaces που ανήκουν στο assembly &lt;font face="Lucida Sans Typewriter"&gt;System.Windows.Forms &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;οπότε, μπλέκεται το πράγμα όταν θα τις κάνεις implement... Θα πρέπει να κάνεις wrapper για το System.Windows.Forms για να το δεις μέσα από unmanager περιβάλλον... &lt;br /&gt;Οπότε, αν έχω&amp;nbsp;καταλλάβει αυτό που θες να κάνεις,&amp;nbsp;δεν γλυτώνεις το περιτύλιγμα &lt;img src="/forums//emoticons/emotion-51.gif" alt="Gift" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1363.aspx</link><pubDate>Sun, 06 Mar 2005 19:47:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1363</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1363.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1363</wfw:commentRss><description>&lt;font face="Tahoma" size="2"&gt;Αυτό το έκανε από την αρχή... Για διάλεξε το interface από πάνω για να μπορέσεις να γράψεις τον κώδικα στις function που θες να υλοποιήσεις να σε δω... Δεν βλέπεις το interface!&lt;br /&gt;&lt;br /&gt;Βρήκα ένα άρθρο μέσα στην KB που μάλλον εξηγεί τι είναι... Θα το δοκιμάσω και θα πω...&lt;br /&gt;&lt;br /&gt;George J.&lt;/font&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1362.aspx</link><pubDate>Sun, 06 Mar 2005 17:46:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1362</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1362.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1362</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Για του λόγου το αληθές, το άνοιξα και με τον object viewer και πάλι το δείχνει το interface (έχω φορτώσει το COM component)&lt;br /&gt;&lt;br /&gt;Δοκίμασες να κάνεις unregister το παλίο και reregister το καινούργιο;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1361.aspx</link><pubDate>Sun, 06 Mar 2005 17:39:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1361</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1361.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1361</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Περίεργο, εμένα το intellisence (σε VB6) μου εμφανίζει το Interface (βλ. attached)&lt;br /&gt;Αυτό δεν ήταν το ζητούμενο?&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1360.aspx</link><pubDate>Sun, 06 Mar 2005 11:32:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1360</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1360.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1360</wfw:commentRss><description>&lt;font size="3"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/forums/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt;&lt;/font&gt; &lt;/font&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;Ο λόγος που δεν δούλευε το προηγούμενο είναι ότι αν απλά γράψεις ένα interface, το κάνεις &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;compile&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;και πάρεις το tlb, τότε έχεις μόνο late binding μέσα από το ΙDispatch interface. Με τον παραπάνω τρόπο, μέσα από το AssemblyInfo.vb ζητάς να μην παραχθεί μόνο το IDispatch αλλά το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;interface&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;που προσδιορίζεις εσύ (μιας και στη συνέχεια θα μπορούσες να γράψεις μια κλάση που να χρησιμοποιεί αυτό το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;interface&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;, την οποία κλάση θα ήθελες να χρησιμοποιήσεις από το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;COM&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;). Επίσης, δίνεις συγκεκριμένο Dispatch Id για κάθε method (&amp;lt;DispId(1)&amp;gt;, κλπ) και τέλος &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;το guid (εκεί βάζεις ό,τι &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;GUID&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;θέλεις) χρησιμεύει για να μην αποκτά νέο guid το interface σου στην περίπτωση που το ξανακάνεις compile (οπότε και θα πρέπει να ξαναβάλεις το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;reference&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;&lt;font size="3"&gt;).&lt;br /&gt;&lt;font size="2"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/font&gt;&lt;br /&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Λοιπόν αυτό που λες το βλέπω και μέσα από το .IDL αρχείο (με το εργαλείο OLEView). Όντως το Interface IDispatch φτιάχνεται μόνο.&lt;br /&gt;&lt;br /&gt;Δοκίμασα και το δικό σου κώδικα, αλλά δεν είδα κάποια διαφορά. Μαζί με το .dll βγάζει κατευθείαν&amp;nbsp; και .tlb&amp;nbsp;αλλά χρησιμοποιώντας αυτό το .tlb έχω τα ίδια αποτελέσματα. Από το OLEView βλέπω ότι το .IDL αρχείο βγαίνει και πάλι μόνο το IDispatch Interface.&lt;br /&gt;&lt;br /&gt;Θυμάμαι μια φορά που έκανα μια παρόμοια δουλειά σε VB χρησιμοποιώντας οδηγίες από τo Microsoft KB - &lt;/font&gt;&lt;a target="_blank" title="http://support.microsoft.com/default.aspx?scid=kb;en-us;182598" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;182598"&gt;&lt;font face="Tahoma" size="2"&gt;182598 How To Implement IObjectSafety in Visual Basic Controls&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;. Εδώ πάλι είχα ένα interface που έκανα Implement από VB6 και προερχόταν από .IDL/.ODL αρχείο. Ωραίο παρόμοιο άρθρο είναι και το &lt;/font&gt;&lt;a target="_blank" title="http://support.microsoft.com/default.aspx?scid=kb;en-us;143258" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;143258"&gt;&lt;font face="Tahoma" size="2"&gt;143258 How To Create Constants and DLL Declarations in a Type Library&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="3"&gt;&lt;font size="2"&gt;&amp;nbsp;που κινήται στο ίδιο δρόμο.&lt;br /&gt;&lt;br /&gt;Για να γίνει εμφανές το Interface στην VB6 είναι IUnknown και όχι IDispatch. Άλλαξα στο .IDL που είχα το IDispatch σε IUnknown και προσπάθησα να το κάνω .tlb, αλλά το MkTypLib επιστρέφει λάθος, ότι δεν καταλαβαίνει τον τύπο των μεταβλητών...&lt;br /&gt;&lt;br /&gt;Εχει δει κάποιος, κάπου, specs για την IDL/ODL; MSDN ή κάπου αλλού;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/forums/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt;&lt;br /&gt;Τώρα βέβαια μένει το ερώτημα, γιατί θέλεις να κάνεις κάτι τέτοιο και δεν κάνεις implement το interface μέσα από ένα .NET component?&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;Γιατί, ρωτάς... Απλή η απάντηση: &lt;br /&gt;&lt;br /&gt;Θέλω να φτιάξω ένα .dll που θα έχει Interface μια φόρμα&amp;nbsp;για κάνει post ένας χρήστης ένα άρθρο σε WebBlog. Κατά συνέπεια ο κώδικας που είναι το άρθρο θα είναι HTML. Ένας εύκολος WYSIWYG HTML editor είναι ένα control που έρχεται με τον IE και είναι μέσα στο \Program Files\Common Files\Microsoft Shared\Triedit. Μπορείς να το παραμετροποιήσεις πλήρως. Και φυσικά χρειάζομαι και το Webcontrol για να μπορώ να κάνω και Preview τον κώδικα.&lt;br /&gt;&lt;br /&gt;Να φτιάξω 2 wrappers για δύο πολύ βαριά controls,&amp;nbsp;και να τα κάνω απλώς πιο βαριά,&amp;nbsp;μόνο και μόνο για&amp;nbsp;να είμαι μέσα από managed περιβάλλον; Δεν είναι χαζό; Δεν είναι προτιμητέο να κάνω το Interface .tlb και να το κάνω implement κάτω από unmanaged περιβάλλον, από VB6;&lt;br /&gt;&lt;br /&gt;George J.&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1359.aspx</link><pubDate>Sun, 06 Mar 2005 08:11:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1359</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1359.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1359</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;Δοκίμασε να κάνεις &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;compile&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;και &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;reference&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;από &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;VB&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;6 αυτό:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Imports&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; System&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Imports&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; System.Xml.XPath&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Imports&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; System.Reflection&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Imports&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; System.Runtime.InteropServices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Imports&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; System.Windows.Forms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;Namespace&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt; Syndication.Extensibility&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;Guid("BB071552-04E6-4144-8179-A36613DD4B98")&amp;gt; &lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Interface&lt;/span&gt; IBlogExtension&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' Name of plug-in, suitable for display to a user &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;DispId(1)&amp;gt; &lt;span style="COLOR: blue"&gt;ReadOnly&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; DisplayName() &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' return true if plug-in has configuration settings&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;DispId(2)&amp;gt; &lt;span style="COLOR: blue"&gt;ReadOnly&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; HasConfiguration() &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' Return true if an editing GUI will be shown to the &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' user when BlogItem is called. In this case, the &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' aggregator will not display its own editing UI. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;DispId(3)&amp;gt; &lt;span style="COLOR: blue"&gt;ReadOnly&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; HasEditingGUI() &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' Display configuration dialog to user, if applicable &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;DispId(4)&amp;gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; Configure(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; parent &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; IWin32Window)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' Post item to weblog. If plug-in is going to show a &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;' GUI for editing, it should return true to HasEditingGUI(). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;DispId(5)&amp;gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; BlogItem(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; rssFragment &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; IXPathNavigable, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; edited &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Boolean&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'"&gt;End&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'"&gt; &lt;span style="COLOR: blue"&gt;Interface&lt;/span&gt; &lt;span style="COLOR: green"&gt;'IBlogExtension&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter Regular'"&gt;End&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'"&gt; &lt;span style="COLOR: blue"&gt;Namespace&lt;/span&gt; &lt;span style="COLOR: green"&gt;'Syndication.Extensibility&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;&lt;font face="Verdana"&gt;Επίσης, πρόσθεσε στο AssemblyInfo.vb τη γραμμή:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Sans Typewriter Regular'"&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;Assembly&lt;/span&gt;: ClassInterface(ClassInterfaceType.None)&amp;gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;font face="Verdana"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;Ο λόγος που δεν δούλευε το προηγούμενο είναι ότι αν απλά γράψεις ένα interface, το κάνεις &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;compile&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;και πάρεις το tlb, τότε έχεις μόνο late binding μέσα από το ΙDispatch interface. Με τον παραπάνω τρόπο, μέσα από το AssemblyInfo.vb ζητάς να μην παραχθεί μόνο το IDispatch αλλά το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;interface&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;που προσδιορίζεις εσύ (μιας και στη συνέχεια θα μπορούσες να γράψεις μια κλάση που να χρησιμοποιεί αυτό το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;interface&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;, την οποία κλάση θα ήθελες να χρησιμοποιήσεις από το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;COM&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;). Επίσης, δίνεις συγκεκριμένο Dispatch Id για κάθε method (&amp;lt;DispId(1)&amp;gt;, κλπ) και τέλος &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;το guid (εκεί βάζεις ό,τι &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;GUID&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;θέλεις) χρησιμεύει για να μην αποκτά νέο guid το interface σου στην περίπτωση που το ξανακάνεις compile (οπότε και θα πρέπει να ξαναβάλεις το &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US"&gt;reference&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; mso-bidi-font-size: 12.0pt"&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Τώρα βέβαια μένει το ερώτημα, γιατί θέλεις να κάνεις κάτι τέτοιο και δεν κάνεις implement το interface μέσα από ένα .NET component?&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Φτιάχνοντας ένα COM Wrapper για ένα .NET Component</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1358.aspx</link><pubDate>Sun, 06 Mar 2005 04:38:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1358</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1358.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=25&amp;PostID=1358</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Ένα καλό...&lt;br /&gt;&lt;br /&gt;Θέλω να στιάξω ένα component που να υλοποιεί το IBlogExtension interface σε VB6.&lt;br /&gt;&lt;br /&gt;Για να κάνουμε μια παρόμοια δουλειά σε .NET υπάρχει ένα .dll (blogExtension.dll) που είναι φτιαγμένο από τους δημιουργούς του extension για να γίνεται implement.&lt;br /&gt;&lt;br /&gt;Για να κάνουμε implement ένα interface σε VB6 πρέπει να έχουμε ένα .tlb αρχείο ή να είναι διαθέσιμο μέσα από ένα .dll. Το συγκεκριμένο είναι σε C# γραμμένο και δεν έχει μέσα .tlb για να κάνει interop με COM services.&lt;br /&gt;&lt;br /&gt;Μπορούμε να φτιάξουμε ένα με το &lt;font face="Courier New"&gt;&lt;strong&gt;regasm blogExtension.dll /tlb:blogExtension.tlb&lt;/strong&gt;&lt;/font&gt; και να το χρησιμοποιήσουμε απο VB6.&lt;br /&gt;&lt;br /&gt;Το έκανα και έκανα reference το .tlb από τη VB6, αλλά όταν έγραψα το Implements IBlogExtension δεν εμφανίστηκε στη λίστα το IBlogInterface για να μπορέσω να το κάνω implement! &lt;br /&gt;&lt;br /&gt;Που έχω κάνει λάθος;&lt;br /&gt;&lt;br /&gt;Συνημμένο στο μήνυμα είναι ένα .zip που έχει όλα τα αναφερόμενα αρχεία (το .NET assembly, το blogExtension.tlb και το blogExtension.cs - εξτρα είναι και το blogExtension.idl αν βοηθάει)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;George J.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item></channel></rss>