الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام كود فيجول بيزيك 2005 في فيجول بيزيك 6

مغلق
بدأه محمد سامر أبو سلو في 5 أبريل 2006 · 14 رد · 1,746 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يمكن للبرامج المبنية على COM مثل VB6 التعامل مع الكود الخاص بك والمكتوب ضمن الفريموورك مثل Class - Interface - struct - enum إذا تم اتباع القواعد التالية بشسكل عام

- يجب على الفئات تعريف واجهة

- التعريف باستخدام Public

- الأنواع Types لايمكن أن تكود مجردة

كما يمكنك تحديد فيما إذا كان يمكن أو لايمكن رؤية الإجراء أو الكلاس أو ... الخ من عملي الـ com باستخدام ComVisibleAttribute كالمثال

Imports System.Runtime.InteropServices

<ComVisible(False)> _
Class SampleClass
    
    Public Sub New()
        'Insert code here.
    End Sub
    
    <ComVisible(False)> _
    Public Function MyMethod(param As String) As Integer
        Return 0
    End Function    
    
    Public Function MyOtherMethod() As Boolean
        Return True
    End Function
    
    <ComVisible(False)> _
    Public ReadOnly Property MyProperty() As Integer
        Get
            Return MyProperty
        End Get
    End Property
    
End Class

ويجب عليك تسجيل مجمع .net لـعملاء الـ Com حتى يمكن استخدامها وذلك باستخدام Tlbexp.exe و RegAsm.exe للقيام بعملية التسجيل ويستخدم من سطر الأوامر بالشكل التالي

TlbExp AssemblyName /out:FileName

و عملاء الـ com يصلون للمجمع الخاص بك عن طريق ملف .tlb المنشأ بواسطة هذه الأداة كما يجب عليك تسجيل المجمع الخاص بك عن طريق Regasm.exe والذي يمكنه توليد ملف tlb أيضا عن طريق الخيار /tlb: والذي يمكن استخدامه بالشكل

RegAsm AssemblyName /tlb: FileName.tlb /codebase

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

دعنا نقوم بعمل مثل عملي على الموضوع

أنا أعمل على VB2005

- افتح بيئة التطوير وابدأ مشروعا جديدا من نوع Class Library وسمه TestProj فيتم انشاء Class1 افتراضيا

- ادخل الكود التالي في Class1

Option Strict On

Public Class Class1
   Public Function myFunction() As Integer
      Return 100
   End Function
End Class

- افتح خصائص المشروع واضغط الزر Assembly Information من الصفحة Application وتأكد من وضع إشارة بجانب Make Assembly COM-Visible ثم اضغط OK

- من صفحة Compile تأكد من وضع إشارة بجانب Register for COM Interop

- قم بالحفظ ثم قم بعمل Build للمشروع

- افتح VB6 ثم قم بإنشاء مشروع افتراضي جديد

- من قائمة Project اختر References ومن Available References اختر اسم مشروعنا TestProj ثم اضغط Ok

- ضع زر أوامر على النموذج الخاص بمشروعك ثم انقر عليه نقرا مزدوجا لينقلك إلى محرر الكود و في الحدث Button1_Click أدخل الكود التالي

Dim myObject As TestProj.Class1
Set myObject = New TestProj.Class1
MsgBox myObject.myFunction

- شغل مشروعك واختبره

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

شكرا لك اخي سامر على الموضوع المتميز ،

ولكن عندما رأيت عنوان الموضوع ظننت ان هناك طريقة مباشرة لنسخ الكود او كتابته في vb6 دون الترجمة الى dll

على العموم ما رأيكم بالإستخدام المباشر لمكتبات .net في vb6 !!!

#4

عند الضرورة ولكن بالنسبة للبرامج الجديدة يفضل البدء مباشرة على الدوت نيت

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

الف شكر على الموضوع الجميل ده

بس عندى سؤال:

لما أعمل compile لمشروع الـvb6 هحتاج الـ.net framework ولا لأ؟

bartkr7.png
#6

طبعا إذا استعملت مكتبة فيها أكواد دوت نيت من برنامج VB6 بالطريقة المذكورة هنا ستحتاج للفريموورك لتشغيل البرنامج

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

مشكور أخونا المشرف على الموضوع

#8
محمد سامر أبو سلو كتب:
طبعا إذا استعملت مكتبة فيها أكواد دوت نيت من برنامج VB6 بالطريقة المذكورة هنا ستحتاج للفريموورك لتشغيل البرنامج

يعني الفريم ورك ورانا ورانا..:D

لدي سؤال هل يعني هذا أنه ممكن تشغيل كلاسات الدوت نيت على ال6.. و هل يمكن العكس؟

و هل كل الفئات التي تنشأ قابلة للتشغليل؟

lxcs.png

syria-flag_small.jpg

#9

لوسمحت أخ محمد

أنا اللي بدي أعرفة الكود هاد

ممكن يشغل vb.net

في بيئة برنامجvb6؟؟؟؟؟؟

والك جزيل الشكر

يا آل إسرائيل، لا يأخذكم الغرور

عقارب الساعة إن توقفت

لا بد أن تدور..

إن اغتصاب الأرض لا يخيفنا

فالريش قد يسقط من أجنحة النسور

والعطش الطويل لا يخيفنا

فالماء يبقي دائما في باطن الصخور

هزمتم الجيوش .. إلا أنكم لم تهزموا الشعور

قطعتم الأشجار من رؤوسها

وظلت الجذور..

اذا كان الأنسان والزمان ضدي ...

أنا فلسطيني أحب التحدي...

القرآن الكريم بعدة أصوات ..استماع وحفظ

http://quran.muslim-web.com/

قصص الأنبياء لعدة مشايخ باسلوب جميل

http://www.prophetstory.com/

#10

بالفعل اخي محمد مواضيع جدا متميزه :

باعتقادي انه لا يوجد جدوى من ذلك فلماذا تريد استخدام فئات في .net على vb6 الأفضل طالما انك تجيد استخدام vb6 ان تنتقل إلا .net لا ان تستخدم امكانيات .net في vb6 فليس بالمنطق كما اضن انا ذلك ....

طالما ان لديك الفكرة بوجود قوة مذهلة في vb.net اذا انتقل له لا ان تستخدام بعض امكانياتة ....

قد يكون جميل جدا ان تتوافق اللغات مع بعضها البعض ايضا الفكرة هي موحدة حتى مع الدلفي ولكن ... تكامل اللغات مع بعضها البعظ الغرض منه هوا استخدام الإمكانيات المتاحة في لغة عن اخرى حتى تستطيع عمل ما تريد ... ولكن ذلك التكامل اعتد انه مفيد عند استخدام لغات مختلفة عن الأخرى وليس بين اللغات متجانسة ....

#11

أخ فواز وأنا أيضا أعتقد أنه من الأفضل العمل على الدوت نيت مباشرة

ولكن افرض أن لديك مشروعا قد قمت بتطويره سابقا على VB6 وعملية تطوير الكود إلى الدوت نيت ستحتاج منك إعادة كتابة المشروع بأكمله عندها إن احتجت إلى عمل بعض الأشياء الممكن عملها بالدوت نيت و غير الممكن عملها بـ VB6 ستجد أن هذا المقال مفيد جدا

بالإضافة إلى أن البرمجة ضمن الأوفيس ( إكسل - وورد - أكسيس ) أي VBA مازال يعمل على أسلوب ومفاهيم VB6 وبهذا تستطيع تطوير مقدراتها البرمجية باستخدام الطريقة المذكورة هنا في هذا المقال

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#12
SalehRam كتب:

يعني الفريم ورك ورانا ورانا.. :D

لدي سؤال هل يعني هذا أنه ممكن تشغيل كلاسات الدوت نيت على ال6.. و هل يمكن العكس؟

و هل كل الفئات التي تنشأ قابلة للتشغليل؟

لأ ليس جميع الكلاسات المنشأة تكون قابلة للتشغيل يجب أن تكون أنواع مجردة وأن تغلف بواجهة COM كما هو مذكور هنا

وطبعا العكس ممكن ولكن لم أقتنع بجدواه لذا لم أعمل موضوعا حوله على كل حال راجع التفاصيل في مكتبة MSDN وإعمل لنا موضوعا حوله إذا أردت

el-zaeem كتب:
لوسمحت أخ محمد

أنا اللي بدي أعرفة الكود هاد

ممكن يشغل vb.net

في بيئة برنامجvb6؟؟؟؟؟؟

والك جزيل الشكر

بيشغل كود دوت نيت مغلف بواجهة com بالطريقة المذكورة هنا

فكرة: يمكنك عمل Form كامل بكافة وظائفه ثم تضمينه ضمن ملف DLL واستدعاؤه من ضمن برنامج VB6 بهذه الطريقة - هل من أحد يمكنه عمل مثال وإرفاقه هنا فيستفيد ويفيد ؟؟؟؟؟ -

ملاحظة: الفكرة مطروحة في مكتبة MSDN المرفقة مع فيجول ستوديو وستجدون تفاصيل أوفى هناك

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 22 مارس 2007 في 19:45

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#13

بالفعل أخى ComClass يقوم بالمطلوب

comclassha3.gif

regev8.gif

Practice makes perfect 2007*

البرمجة بلا انطباعات

#14
محمد سامر أبو سلو كتب:
فكرة: يمكنك عمل Form كامل بكافة وظائفه ثم تضمينه ضمن ملف DLL واستدعاؤه من ضمن برنامج VB6 بهذه الطريقة - هل من أحد يمكنه عمل مثال وإرفاقه هنا فيستفيد ويفيد ؟؟؟؟؟ -

ممكن فكرة

بس أنا ماعندي اصلا برنامج vb.net

ومابعرف اتعامل معه

واللي سألت عنه

هو ان انا في بعض البرامج هون في المنتدى تعجبني

ولكنها مصممة بواسطة vb.net

واود الاطلاع عليها وتشغيلها من خلال بيئةvb6

انا فهمت الفكرة اللي طرحتها أخ محمد

يعني ممكن أعمللها استدعاء بواسطة vb6

ولكن كيف؟؟؟؟؟

اذا كنت بتقول ان الفورم لازم يكون ضمن ملفDLL ؟؟

ولكم جزيل الشكر

يا آل إسرائيل، لا يأخذكم الغرور

عقارب الساعة إن توقفت

لا بد أن تدور..

إن اغتصاب الأرض لا يخيفنا

فالريش قد يسقط من أجنحة النسور

والعطش الطويل لا يخيفنا

فالماء يبقي دائما في باطن الصخور

هزمتم الجيوش .. إلا أنكم لم تهزموا الشعور

قطعتم الأشجار من رؤوسها

وظلت الجذور..

اذا كان الأنسان والزمان ضدي ...

أنا فلسطيني أحب التحدي...

القرآن الكريم بعدة أصوات ..استماع وحفظ

http://quran.muslim-web.com/

قصص الأنبياء لعدة مشايخ باسلوب جميل

http://www.prophetstory.com/

#15

إذا ما عندك دوت نيت لايمكن استعراض البرامج أنت بتستخدم المكتبة الناتجة بهذه الطريقة من برنامج الـ 6 مثل أي DLL عادي وأعتقد هذا الحكي واضح من المثال

وفكرة الفورم ضمن الـ DLL هو بما أن كودنا الذي نستخدمه من فيجول 6 هو عبارة عن كلاس والفورم في الدوت نيت هو بالأصل كلاس فبنفس الطريقة ممكن يتغلف بملف DLL ونستخدم الفورم جاهز من الـ 6 أعتقد الفكرة واضحة

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة