مشاهده دست آورد نظرسنجی: نظر شما در رابطه این مقاله چیست؟

رای دهنده
72. شما نمی توانید در این رای گیری رای بدهید
  • عالی است

    42 58.33%
  • خوب است

    25 34.72%
  • بدک نیست

    4 5.56%
  • بدرد نخور است

    1 1.39%
نمایش نتایج 1 تا 27 از 27

نام تاپیک: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

  1. #1
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    پلاگین چیست؟
    پلاگین برنامه است که با اضافه شدن به برنامه ای قابلیتهایی به ان برنامه اضافه می کند.
    حتما شما با flash player اشنا هستید. برنامه ای که با نصب آن مرورگر شما قابلیت پخش انیمیشن های فلش را پیدا می کند. این برنامه یک پلاگین برای نرم مرورگر شماست.
    پلاگین در .net framework
    برای نوشتن برنامه ای در دات نت که قابلیت پذیرش پلاگین باشد به سه لایه احتیاج دارد
    1.لایه رابط
    2.لایه برنامه
    3.لایه پلاگین
    حالا بریم سروقت پروژه و هریک از سه لایه بالا را با تفصیل توضیح دهیم.
    پروژه
    یک برنامه ساده می خواهیم ایجاد کنیم که قابلیت پذیرش پلاگین را داشته باشد. این برنامه حاوی یک فرم است که روی ان دو عدد textbox است و می خواهیم پلاگین بنویسیم که به کنترلهای textbox روی فرم اصلی دسترسی پیدا کند و حاصلضرب دو عدد داخل textbox را بدست آورد و منویی هم به من فرم اصلی اضافه کند.
    حالا یک solution در vs ایجاد کنید و یک پروژه جدید از نوع class library به نام IPlugin به آن اضافه کنید تا اولین لایه برنامه را ایجاد کنیم.
    لایه رابط
    حالا یک code file به پروژه اضافه کرده و با توجه به زبان یکی از کدهایه زیر را در ان قرار دهید.
    با زبان وی بی

    Public Interface IPlugin

    Property Name() As String

    Sub About()
    Sub DisplayPlugForm()
    Sub GetMessage(ByVal msg As String)

    Event SendMessage(ByVal msg As String, ByVal IPlugin As IPlugin)
    Property menu() As Windows.Forms.ToolStripItemCollection

    End Interface

    با زبان سی شارپ

    namespace SDK {
    public delegate void EventHandler(string msg, IPlugin IPlugin);
    public interface IPlugin
    {
    string name();
    void About();
    void DisplayPlugForm();
    void GetMessage(string msg);
    event EventHandler SendMessage;
    System.Windows.Forms.ToolStripItemCollection menu();

    }
    }

    خوب interface بالا متدها و رویداها و خاصیتهایی که باید در هر پلاگین باشد را توصیف می کند.
    خاصیت name این خاصیت حاوی نام پلاگین است.
    خاصیت menu این خاصیت حاوی منوهایی است که می خواهیم به برنامه اصلی اضافه شود.
    متد about این متد فرم توضیحات پلاگین را نمایش خواهد داد.
    متد DisplayPlugForm فرم اصلی پلاگین را نمایش می دهد.
    متد GetMessage این متد برای فرستادن پیغام از برنامه اصلی به پلاگین بکار می رود.
    رویداد SendMessage این رویداد وقتی اجرا می شود که بخواهیم پیغامی را از پلاگین به برنامه اصلی بفرستیم .
    خوب لایه اول تمام شد.
    لایه برنامه
    ابتدا یک پروژه جدید از نوع application به نام program به solution خود اضافه کنید و پروژه قبلی را به فهرست رفرنس های این پروژه اضافه کنید.
    این قسمت برنامه شامل دو کلاس مهم است.
    اولین کلاس IPlugin_Collection این کلاس همانطور که از نامش پیداست یک مجموعه است که ما تمام پلاگین هایه خودمان را در ان نگه می داریم کد این کلاس
    وی بی


    Imports sdk

    Public Class IPlugin_Collection
    Inherits CollectionBase

    Public Property item(ByVal iIndex As Integer) As IPlugin
    Get
    Return (InnerList.Item(iIndex))
    End Get
    Set(ByVal Value As IPlugin)
    InnerList.Item(iIndex) = Value
    End Set
    End Property

    Public Function add(ByVal iPluginObj As IPlugin) As Integer
    Return InnerList.Add(iPluginObj)

    End Function

    Public Function contains(ByVal iPluginObj As IPlugin) As Boolean
    Return (InnerList.Contains(iPluginObj))
    End Function

    Public Function indexOf(ByVal iPluginObj As IPlugin) As Integer
    Return (InnerList.IndexOf(iPluginObj))
    End Function

    Public Sub remove(ByVal iPluginObj As IPlugin)
    Call InnerList.Remove(iPluginObj)
    End Sub



    End Class

    با سی شارپ

    using System;
    using System.Collections.Generic;
    using System.Text;
    using SDK;

    namespace program
    {
    public class IPlugin_Collection : System.Collections.CollectionBase
    {
    public IPlugin this[int index]
    {
    get
    {
    return (IPlugin )this.InnerList[index];
    }
    set
    {
    this.InnerList[index] = value;
    }
    }
    public int add(IPlugin iPluginObj)
    {
    return this.InnerList.Add(iPluginObj);

    }
    public bool contains(IPlugin iPluginObj)
    {
    return this.InnerList.Contains(iPluginObj);
    }
    public int indexOf(IPlugin iPluginObj)
    {
    return this.InnerList.IndexOf(iPluginObj);
    }
    public void remove(IPlugin iPluginObj)
    {
    this.InnerList.Remove(iPluginObj);
    }
    }
    }

    فکر نکنم نیازی به توضیح باشد.
    کلاس بعدی کلاس plugin_manager است در این کلاس ما پلاگین ها را لود می کنیم.
    ما برای لود پلاگین ها علاوه بر داشتن فایل dll انها باید نام کلاس اصلی این پلاگین ها که براساس انترفیس پروژه اول ما شکل گرفته اند را باید داشته باشیم.من در این برنامه اطلاعات پلاگین ها را در ریجیستری ذخیره کردم.که بعدا در این مورد بیشتر توضیح میدهیم حالا کد کلاس
    وی بی

    Imports SDK
    Public Class plugin_manager
    Public cPicPlugins As New IPlugin_Collection()
    Public Event reciveMessage(ByVal msg As String, ByVal IPlugin As IPlugin)

    Private Sub recive(ByVal msg As String, ByVal IPlugin As IPlugin)
    RaiseEvent reciveMessage(msg, IPlugin)
    End Sub


    Public Sub load_plugin()
    Dim r, r1, r2 As Microsoft.Win32.RegistryKey
    Dim s(), s1, pStrPath, pStrType As String
    r = Microsoft.Win32.Registry.LocalMachine
    r1 = r.OpenSubKey("SOFTWARE\my program\plug in", False)
    s = r1.GetSubKeyNames
    For Each s1 In s
    Try
    r2 = r1.OpenSubKey(s1)
    pStrPath = r2.GetValue("path")
    pStrType = r2.GetValue("type")
    Catch ex As Exception
    End Try
    Try
    Dim pObhHandle As Runtime.Remoting.ObjectHandle = Activator.CreateInstanceFrom(pStrPath, pStrType)
    Dim pIpnPlugin As SDK.IPlugin = CType(pObhHandle.Unwrap, SDK.IPlugin)
    Call cPicPlugins.add(pIpnPlugin)
    AddHandler pIpnPlugin.SendMessage, AddressOf recive
    Catch ex As Exception
    MsgBox(ex.ToString)
    End Try
    Next
    End Sub

    End Class

    در سی شارپ

    namespace program
    {
    using SDK;
    public class plugin_manager
    {
    public IPlugin_Collection cPicPlugins = new IPlugin_Collection();
    public event reciveMessageEventHandler reciveMessage;
    public delegate void reciveMessageEventHandler(string msg, IPlugin IPlugin);

    private void recive(string msg, IPlugin IPlugin)
    {
    if (reciveMessage != null)
    {
    reciveMessage(msg, IPlugin);
    }
    }


    public void load_plugin()
    {
    Microsoft.Win32.RegistryKey r;
    Microsoft.Win32.RegistryKey r1;
    Microsoft.Win32.RegistryKey r2;
    string[] s;

    string pStrPath=null ;
    string pStrType=null ;
    r = Microsoft.Win32.Registry.LocalMachine;
    r1 = r.OpenSubKey("SOFTWARE\\my program\\plug in", false);
    s = r1.GetSubKeyNames();
    foreach (string s1 in s)
    {
    try {
    r2 = r1.OpenSubKey(s1);
    pStrPath = (string )r2.GetValue("path");
    pStrType = (string)r2.GetValue("type");
    }
    catch (Exception ex) {
    }
    try {
    System.Runtime.Remoting.ObjectHandle pObhHandle = Activator.CreateInstanceFrom(pStrPath, pStrType);
    SDK.IPlugin pIpnPlugin = (SDK.IPlugin)pObhHandle.Unwrap();
    cPicPlugins.add(pIpnPlugin);
    pIpnPlugin.SendMessage += recive;
    }
    catch (Exception ex) {
    System.Windows.Forms.MessageBox.Show(ex.ToString() );
    }
    }
    }

    }

    }

    توضیحات کلاس
    متد load_plugin از اسمش داد میزنه که رای لود پلاگین ها بکار می رود.در این تابع اطلاعات از ریجیستری خوانده شده و dll پلاگین ها لود می شود. لود این dll ها در این دو خط کد است.
    وی بی

    Dim pObhHandle As Runtime.Remoting.ObjectHandle = Activator.CreateInstanceFrom(pStrPath, pStrType)
    Dim pIpnPlugin As SDK.IPlugin = CType(pObhHandle.Unwrap, SDK.IPlugin)

    سی شارپ

    System.Runtime.Remoting.ObjectHandle pObhHandle = Activator.CreateInstanceFrom(pStrPath, pStrType);
    SDK.IPlugin pIpnPlugin = (SDK.IPlugin)pObhHandle.Unwrap();

    پس از لود انها را در مجوعه پلاگین قرار می دهیم.
    cPicPlugins مجموعه پلاگین هایه ماست.
    رویداد reciveMessage این رویداد واسطه ای بین رویداد sendmessage یک پلاگین و فرم اصلی برنامه است.
    تابع recive هم این رویداد را فرا می خواند.
    کدهای فرم اصلی
    با وی بی

    Dim WithEvents p As New plugin_manager
    Dim plug As SDK.IPlugin
    Dim a As Integer

    Private Sub p_reciveMessage(ByVal msg As String, ByVal IPlugin As SDK.IPlugin) Handles p.reciveMessage
    If msg = "textbox1" Then
    p.cPicPlugins.item(p.cPicPlugins.indexOf(IPlugin)) .GetMessage(TextBox1.Text)
    ElseIf msg = "textbox2" Then
    p.cPicPlugins.item(p.cPicPlugins.indexOf(IPlugin)) .GetMessage(TextBox2.Text)
    End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    p.load_plugin()
    For a = 0 To p.cPicPlugins.Count - 1
    plug = p.cPicPlugins.item(a)
    If Not plug.menu Is Nothing Then
    Me.MenuStrip1.Items.AddRange(p.cPicPlugins.item(a) .menu)
    End If
    Next

    End Sub

    با سی شارپ

    namespace program
    {
    public partial class Form1 : Form
    {
    plugin_manager p;
    SDK.IPlugin plug;
    int a;
    public Form1()
    {
    InitializeComponent();
    p = new plugin_manager();
    p.reciveMessage += new plugin_manager.reciveMessageEventHandler(p_reciveM essage);
    }

    void p_reciveMessage(string msg, SDK.IPlugin IPlugin)
    {
    if (msg == "textbox1") { p.cPicPlugins[p.cPicPlugins.indexOf(IPlugin)].GetMessage(TextBox1.Text); }
    if (msg == "textbox2") { p.cPicPlugins[p.cPicPlugins.indexOf(IPlugin)].GetMessage(TextBox2.Text); }

    }

    private void Button1_Click(object sender, EventArgs e)
    {
    p.load_plugin();
    for (a = 0; a < p.cPicPlugins.Count; a++) {
    plug = p.cPicPlugins[a];
    if (plug.menu() != null) { this.MenuStrip1.Items.AddRange(p.cPicPlugins[a].menu()); }
    }
    }
    }
    }

    تو ضیحات کد
    متغییر ها که نیاز به توضیح ندارند اما دو تابع رویداد اولی تابع p_reciveMessage که وقتی اطلاعاتی از پلاگین ها می رسد اجرا می شود. در این تابع ما پس از کردن پیغام پاسخ مناسب را می فرستیم مثلا در اینجا یک پلاگین با فرستادن پیغام textbox1 ما برای ان مقدار text این کنترل را می فرستیم.
    رویداد کلیک دکمه لود پلاگین ها با اجرا شدن این تابع پلاگین ها لود و منو های داخل ان در منو اصلی برنامه ادغام می شود.


    لایه پلاگین
    ابتدا یک پروژه از نوع application ایجاد کنید.سپس در قسمت خصوصیات پروژه نوع پروژه را از application به class library تغییر دهید چون باید خروجی ما حتما یک dll باشد.سپس پروژه اولون یعنی IPlugin را به رفرنس های برنامه اضافه کنید
    این پروژه یک کلاس مهم بنام my_plugin دارد.این کلاس براساس Interface IPlugin که در پروژه اول نوشتیم ایجاد می شود.
    کد وی بی

    Imports sdk

    Public Class my_plugin
    Implements IPlugin
    Dim WithEvents f As Form1
    Public Sub New()
    f = New Form1
    End Sub
    #Region "Private declarations"

    Private Const IPlugin_name As String = "my_plugin"

    #End Region

    #Region "Property interface"

    Public Property Name() As String Implements IPlugin.Name
    Get
    Return (IPlugin_name)
    End Get
    Set(ByVal value As String)

    End Set
    End Property

    Public Property menu() As Windows.Forms.ToolStripItemCollection Implements IPlugin.menu
    Get
    Return (f.MenuStrip1.Items)
    End Get
    Set(ByVal value As Windows.Forms.ToolStripItemCollection)

    End Set
    End Property
    Dim message As String
    Public Sub GetMessage(ByVal msg As String) Implements IPlugin.GetMessage
    message = msg
    End Sub

    Event SendMessage(ByVal msg As String, ByVal IPlugin As IPlugin) Implements IPlugin.SendMessage


    Public Sub About() Implements IPlugin.About

    Dim f As New about
    f.ShowDialog()
    End Sub

    Public Sub DisplayPlugForm() _
    Implements IPlugin.DisplayPlugForm
    f.Show()
    End Sub

    #End Region


    Private Sub f_menu1_click() Handles f.menu1_click
    RaiseEvent SendMessage("textbox1", Me)
    f.a = Int(Message)
    RaiseEvent SendMessage("textbox2", Me)
    f.b = Int(Message)
    End Sub
    End Class

    کد سی شارپ

    using System;
    using System.Collections.Generic;
    using System.Text;
    using SDK;
    namespace my_plugin
    {
    class my_plugin :IPlugin
    {
    #region IPlugin Members
    const string IPlugin_name = "my_plugin";
    string message=null ;
    Form1 f ;
    public string name()
    {
    return IPlugin_name;
    }

    public void About()
    {
    about f = new about();
    f.ShowDialog();
    }

    public void DisplayPlugForm()
    {
    f.Show();
    }

    public void GetMessage(string msg)
    {
    message = msg;
    }

    public event SDK.EventHandler SendMessage;

    public System.Windows.Forms.ToolStripItemCollection menu()
    {
    return f.menuStrip1.Items ;
    }

    #endregion
    public my_plugin() {
    f = new Form1();
    f.menu1_click += new Form1.menu1_click_eventhandler(f_menu1_click);
    }

    void f_menu1_click()
    {
    SendMessage("textbox1", this);
    f.a = Convert.ToInt32(message);
    SendMessage("textbox2", this);
    f.b = Convert.ToInt32(message);
    }
    }
    }


    توضیحات کد
    خاصیت name و menu اولی نام پلاگین را بر می گرداند دومی هم menu فرم اصلی ]چون فرصت نداشتم منو با کد تعریف کنم یک منو داخل فرم گذاشتم بعد ایتم های ان را به عنوان منو می فرستم اما شما در برنامه هاتون این کار را نکنید[
    تابع GetMessage هم اطلاعات در یافتی از برنامه اصلی را در متغییر رشته ای بنام message ذخیره می کند.
    رویداد SendMessage فکر نکنم نیاز به توضیح داشته باشد.
    تابع های About و DisplayPlugForm هم به ترتیب فرم های توضیحات برنامه و فرم اصلی را نمایش می دهد.
    تابع رویداد f_menu1_click این هم وقتی اجرا می شود که منو روی فرم اصلی کلیک شود.
    این تابع پبغامی را به برنامه اصلی فرستاده و از برنامه اصلی مقدار کنترل هلی تکس با کس را می کند و سپس این مقادبر را در متغییرهایی که در فرم اصلی تعریف کردیم ذخیره می کند.
    می رسیم به کد فرم اصلی
    با وی بی

    Public Class Form1
    Public a, b As Integer
    Public Event menu1_click()
    Private Sub ضربToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ضربToolStripMenuItem.Click
    RaiseEvent menu1_click()
    Me.Show()
    Label1.Text = "حاصلضرب اعداد شما برابر" + (a * b).ToString
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.MenuStrip1.Hide()
    End Sub
    End Class

    با سی شارپ

    namespace my_plugin
    {
    public partial class Form1 : Form
    {
    public delegate void menu1_click_eventhandler();
    public Form1()
    {
    InitializeComponent();
    }

    public event menu1_click_eventhandler menu1_click;
    private void ضربToolStripMenuItem_Click(object sender, EventArgs e)
    {
    menu1_click();
    this.Show();
    this.label1.Text = "حاصلضرب اعداد شما برابر" + (a * b).ToString();
    }
    public int a, b;
    private void Form1_Load(object sender, EventArgs e)
    {
    this.menuStrip1.Hide();
    }
    }
    }

    توضیحات کد
    دو متغییر a,b که قبلا توضیح دادم رویداد menu1_click هم که رویدادی است که با فشرده شدن منو فرا خوانده می شود و بقیه کدها هم فکر نکنم نیاز به توضیح باشد.
    اجرای برنامه مثال
    ابتدا شما فایل ریجیستری برنامه را با نام reg.reg را اجرا کنید تا کلید و مقادیر ریجیستری ایجاد شود و سپس برنامه را اجرا نمایید.
    کد برنامه
    با وی بیplug_in_vb.zip
    با سی شارپplug_in_cs.zip
    مقاله بصورت article.zippdf
    فایل ریجیستری reg.zip

    در انتها از تمامی دوستان اگر نظری سوالی پیشنهادی انتقادی یا نکته ای علمی که من رعایت نکردم مطرح کنند
    با تشکر علی غفوری 10/3/1386

  2. #2
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    خوب بود... فقط مثالش خیلی طولانی بود :)

  3. #3
    ممنون
    خیلی آموزنده و به درد بخور بود.

  4. #4
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    مرسی غفوری عزیز

    ما بیشتر پلاگین ها رو تو برنامه های درست و حسابی و پدر مادر دار دیدیم

    حالا به نظرتون تو کدوم برنامه ها لزوم استفادده از پلاگین ها بیشتر حس میشه که بتونیم جای استفاده اونها رو هم بدونیم

  5. #5
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    دوست عزیز با توجه به اینکه اینکار در دات نت بسیار اسان است به نظر من می توانیم در هر پروژه ای استفاده کنیم
    مثلا شما یک نرم افزار حسابداری درست کردید به مشتری فروختید مشتری بعد از نصب از شما یک گزارش خاصی از حساب و کتاب خود می خواهد که شما پیش بینی نکرده بودید
    حالا چیکار کنید باید تمام کد نرفزار را باز کنید فرم گزارش را طراحی کنید داخل برنامه قرار دهید بعد ان را کامپایل کنید حالا در قسمت مشتری تازه قضیه جالب می شود
    شما باید برنامه قبلی را پاک کنید از بانک اطلاعاتی تون پشتیبانی بگیرید و برنامه را دوباره نصب کنید و نهایتا پشتیبانی را بر گردانید یک روز علافی کلافگی مشتری و خودتان
    حالا اگر برنامه شما از پلاگین پشتیبانی کند شما برای مشتری یک dll می فرستید بقیه کار هم بر عهده خود برنامه است و تمام

  6. #6
    کاربر تازه وارد آواتار EleRam
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    مشهد الرّضا
    پست
    42

    in VB

    سلام!
    خیلی آموزش خوبیه واسه این برنامه ها
    ولی یه سوال
    من توی وی بی چطور می تونم اینکارا رو بکنم؟
    می تونید یه آموزش کامل مثل این واسه توی وی بی بذارین؟ آخه من توی برنامه جدیدم خیلی نیاز به پلاگین رو حس می کنم
    منتظرم...

  7. #7
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    متاسفانه من هیچ وقت وی بی کار نکردم من از اول با دات نت شروع کردم بنبراین بلد نیستم فکر نکنم هم وی بی بتواند این کار را انجام بده چون از interface و شی گرایی فوق العاده ای ندارد اما شما یک سرچی بزنید

  8. #8
    با سلام به همه دوستان
    من می خواستم با #C بتونم از طریق برنامه خودم با اسکنر ارتباط بر قرار کنم. اگه کسی بتونه به من DLL یا کامپوننتی که مجانی هم باشه و کار منو راه بندازه معرفی کنه خیلی ممنون می شم.
    خودم کلی جستجو کردم و کامپوننت های زیادی که اکثرا Twain هم بودن رو دیدم ولی متاسفانه همشون پولی بودن. ممنون میشم از کمک و راهنمایی شما.

  9. #9
    کاربر تازه وارد آواتار RezaKia
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فعلاً اتاق خوابم، پای میز کامپیوترم
    پست
    92

    Thumbs up چقدر واسه اونایی که VB کار نکردم متاسفم.

    نقل قول نوشته شده توسط EleRam مشاهده تاپیک
    سلام!
    من توی وی بی چطور می تونم اینکارا رو بکنم؟
    نقل قول نوشته شده توسط ghafoori مشاهده تاپیک
    متاسفانه من هیچ وقت وی بی کار نکردم

    سلام،

    چقدر واسه اونایی که VB کار نکردند متاسفم. دنیای بسیار جالبی رو تجربه نکردید.

    تو خود VB امکانی هست به اسم Add-ins . این قابلیت و این نوع پروژه ها برای ساخت چیزهایی مثل Plugin و غیره بکار میروند.

    البته اصلش این بوده که برای VB نوشته بشن؛ ولی بعداً معلوم شد با کمی تغییر در نوع Setup و اضافه کردن چند خط کد ساده به پروژه میتونید این ابزار یا همون Plugin رو در دیگر برنامه ها استفاده کنید.

    البته من امکان استفاده از این ها رو تو دات نت امتحان نکردم. ولی در زمان VB 6.0 برای دیگر برنامه ها و زبانهای آن دوره از این Plugin ها ساختم.

    توضیح بیشتر و نمونه کد ها رو میتونید از MSDN همراه خود VB 6.0 دریافت کنید.

    همراه این راهنما چند مثال کامل نیز در این زمینه موجود است.


    موفق باشید.

  10. #10
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234

    تشکر

    واقعا تاپیک جالب و آموزنده ای بود.
    تو وی بی هم میشه اینکارو کرد.

  11. #11
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234
    میشه بیشتر راجع به نحوه ساخت در وی بی توضیح بدید.
    البته به غیر از Msdn

  12. #12
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234
    نقل قول نوشته شده توسط RezaKia مشاهده تاپیک
    البته من امکان استفاده از این ها رو تو دات نت امتحان نکردم. ولی در زمان VB 6.0 برای دیگر برنامه ها و زبانهای آن دوره از این Plugin ها ساختم.

    توضیح بیشتر و نمونه کد ها رو میتونید از MSDN همراه خود VB 6.0 دریافت کنید.

    :
    لطفا راجع به اینکار در وی بی بیشتر توضیح بدید
    الیته به غیر از مثالهای Msdn

  13. #13
    با تشکر از تاپیک جالبتون
    لطفا در مورد ساخت پلاگین برای نرم افزار photoshop توضیحی بدین ممنون میشم اگه مطالب جالبی دارید برام میل کنید.
    آخرین ویرایش به وسیله shahroz_2001 : شنبه 24 تیر 1391 در 00:28 صبح

  14. #14
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile

    پیر شی الهی جوون

  15. #15

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    نقل قول نوشته شده توسط ghafoori مشاهده تاپیک
    حالا اگر برنامه شما از پلاگین پشتیبانی کند شما برای مشتری یک dll می فرستید بقیه کار هم بر عهده خود برنامه است و تمام
    خیلی ممنون میشوم اگر یک کم بیشتر توضیح بدهید.

  16. #16

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    جالب بود
    ممنون دوست عزیز

  17. #17

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    خیلی عالی بود فقط یک نکته:
    اگر بخواهیم از یک برنامه نویس معمولی درخواست کنیم که برای برنامه ما پلاگین بنویسد با این پیچیدگی که این دارد نمی تواند، چطور میتوانیم به گونه ای کار را برای برنامه نویس مورد نظر ساده کنیم؟(برنامه نویس مجهول است و ما آن را نمی شناسیم)
    (بیشتر سوالم شبیه مسائل ریاضی شد)

  18. #18
    کاربر جدید آواتار pmn.asd
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    پست
    5

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    منم خواستم در مورد این مطالب مفید از دوستمون تشکر کنم.

  19. #19
    کاربر دائمی آواتار Sharif Lotfi
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    Tehran
    سن
    50
    پست
    285

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎.net

    مثال آقاي غفوري كامل و بي نقصه . ازشون ممنونم
    اگه يه نفر كه دستش روونه لطف كنه و يه مثال خيلي خلاصه و ساده براي آموزش اصول اوليه كار برام بذاره دعاش مي كنم .
    يه مثال به اين صورت كه يه پروژه VB Application (بعنوان پروژه اوليه) داشته باشيم كه توش يه فرم با يه دكمه و يه textBox باشه و مثلا با زدن دكمه عدد 1 تو تكست باكس نوشته بشه
    يه فايل (سولوشن) ديگه هم بعنوان Add-In يا پلاگين داشته باشيم كه وقتي exe اون اجرا ميشه
    كارش اين باشه كه تو فرم مربوط به پروژه اوليه يه دكمه ديگه ايجاد كنه و تو textbox قديم بنويسه 2
    اين واسه اين منظوره كه ما بعد از اينكه پروژه خودمونو به مشتري داديم و خواستيم تغيير بديم سولوشن دوم رو بنويسيم و exe بديم به مشتري تا تغييرات داده بشه
    راستش ده دوازده تا مثال و فايل pdf از سايتهاي ديگه گرفتم ولي هنوز نتونستم كاري بكنم
    بازم ممنون
    شريف لطفي

  20. #20

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎.net


    سلام دوستان عزیز

    یه نمونه برنامه که با پلاگین کار میکنه برای نمونه درست کردم. این پلاگینا همون userControl های خودمون هستن که به برنامه اضافه میشن. ببخشید اگه کد نویسی و مثالهاش خوب نبودن نیم ساعته درستش کردم.() .
    موفق باشید.
    https://barnamenevis.org/showpo...3&postcount=22

  21. #21

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    برای برنامه KitchenDraw چگونه پلاگین بنویسیم
    فایل های ضمیمه فایل های ضمیمه

  22. #22

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎‎.net

    سلام آقای غفوری
    من می خواهم که يك application را که چندین فرم داره و خودش از dll های دیگه ای استفاده می کنه به صورت پلاگین وارد برنامه کنم. output type برنامم رو که می خوام به عنوان plugin استفاده کنم هم به class library تغییر دادم و dll ساختم ازش . ولی چون تجربه ای در این زمینه ندارم همه چیز برام گنگه . اگر ممکنه می خواستم برام توضیح بدین که چی کار باید بکنم . از فروم های دیگه که مشکل شبیه منو داشتند چون به زبان vb بود چیز کاملی متوجه نشدم. مثال شما رو تقریبا متوجه شدم ولی نمی تونم به مشکل خودم ربطش بدم
    با تشکر فقط اگه ممکنه خواهشا زود جوابمو بدین چون خیلی وقته دارم تو شرکت دنبال حل این قضیه می گردم در ضمن می خوام وقتی برنامه load شد به اجزاش دسترسی داشته باشم مثلا بعضی از componentهای (منوی خاصی را ) اون رو از فرم خودش بردارم و در جای دیگری در صفحه نمایش دهیم ؟؟!!
    آخرین ویرایش به وسیله akhavan_a : سه شنبه 18 آبان 1389 در 19:14 عصر

  23. #23
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    application را که چندین فرم داره و خودش از dll های دیگه ای استفاده می کنه
    من سوال شما را درست متوجه نشدم چندتا سوال
    شما به کدهای این برنامه دسترسی دارید یا نه ؟ اگر دارید ان برنامه با دات نت فریم ورک ساخته شده یا نه ؟شما می خواهید دقیقا چه کار انجام دهید ؟

  24. #24

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎‎.net

    نقل قول نوشته شده توسط ghafoori مشاهده تاپیک
    من سوال شما را درست متوجه نشدم چندتا سوال
    شما به کدهای این برنامه دسترسی دارید یا نه ؟ اگر دارید ان برنامه با دات نت فریم ورک ساخته شده یا نه ؟شما می خواهید دقیقا چه کار انجام دهید ؟
    ممنون که توجه کردین

    1- بله دسترسی دارم
    2- بله
    3- ما در شرکت دو برنامه داریم به نام تماس و فهرست پروژه ها . حالا می خواهم اینها رو به اینصورت باز نویسی کنم (البته فعلا تماس رو) که : یک برنامه base داشته باشیم و برنامه ی تماس یا فهرست پروژه ها رو به صورت plugin وارد برنامه کنم .که این یک مشکل هست که با چیزهایی که از پست شما یاد گرفتم نمی دونم چطور می شه اینکار و کرد
    مشکل دیگه اینکه وقتی در نهایت برنامه ها وارد شدند . در اینصورت منو ها و toolbox آنها به منوها و toolbox برنامه base اضافه شود .یعنی وقتی plug in وارد برنامه می شه به component هاشون دسترسی داشته باشم.
    ممنونم
    آخرین ویرایش به وسیله akhavan_a : چهارشنبه 19 آبان 1389 در 11:38 صبح

  25. #25
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎.net

    خوب شما اول طبق مقاله اول یک پروژه رابط ایجاد می کنی که بصورت dll است و حاوی اینترفیس داخل این اینترفیس هم هرچی را می خواهی بین برنامه و پلاگین ردوبدل بشه را تعریف می کنی مثل منوها تولبارها رویدادها تابع ها و دیلیگیت ها خوب بعد میایی این رو اضافه می کنی برنامه پایه بعد می ریری سراغ برنامه پلاگینت مثل برنامه ی تماس یا فهرست پروژه ها هر دو را بصورت dll در میاری پروژه رابط را هم add reference می کنی یک کلاس داخل پلاگین می زاری که براساس اینترفیس پروژه رابط implement بشه این کلاس واسطی میشه بین فورم ها و کنترل های پلاگین و برنامه اصلی بقیه کار را هم براساس مقاله انجام بده کلا یادت باشه پروژه Inteface و پلاگین هر دو dll هستن و فقط برنامه پایه هست که exe هستش

  26. #26

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎.net

    اجراش می کنم ببینم چطور می شه اینجوری نمی فهمم که فهمیدم یا نه
    فقط یه سوال در مورد کلاس واسط که می گین"یک کلاس داخل پلاگین می زاری که براساس اینترفیس پروژه رابط implement بشه " یک کم بیشتر توضیح می دین که چجوری این کار و باید بکنم .
    بازم ممنونم
    آخرین ویرایش به وسیله akhavan_a : دوشنبه 24 آبان 1389 در 10:39 صبح

  27. #27

    نقل قول: آموزش ساخت plug in با استفاده از Vb.net and C#‎‎.net

    نقل قول نوشته شده توسط Mr.Moghadam مشاهده تاپیک
    سلام
    لطفا می شه توضیح بدید که به چه صورت می شود dll ایجاد کرد که با برنامه ای که هست اجرا شود

تاپیک های مشابه

  1. plug in
    نوشته شده توسط mjelecom در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 18 فروردین 1385, 22:40 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •