Parsi Coders

نسخه‌ی کامل: اضافه کردن OCX و Dll در Runtime
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
چگونه یک برنامه وی بی بسازیم که فقط نیاز به یک فایل اجرایی داشته باشه. لازم به ذکر است که برنامه های وی بی برای اجرا در سیستمی که ویژوال بیسیک روی اون نصب نیست ، باید به همراه همه کامپوننت های مورد نظر باشد تا اجرا شوند. در وینوز 2000 به بعد فایل dll اصلی ماشین مجازی وی بی به طور پیش فرض در سیتم موجود می باشد. بنابراین باید سایر فایل های dll و ocx راکه در برنامه از آن استفاده کرده ایم در کنار فایل exe اصلی برنامه بگذاریم تا فایل exe اجرا شود. اما در این قسمت ما قصد داریم کل dll ها و ocx های مورد نیاز را درون فایل exe اصلی ریسورس کرده و هنگام بارگذاری برنامه به طور اتومات آن را روی سیستم کاربر نصب کنیم. تا برنامه به درستی اجرا شود. اما برای این کار باید در پروژه وی بی در قسمت project Properties بخش startup object را به sub main تغییر داده سپس یک ماژول به پروژه اضافه کرده و کد زیر را در آن بنویسید.
کد:
Sub main()



End sub()

حال به منوی add-ins سپس Add-ins manager رفته و VB6 Resource Editor را به محیط وی بی اضافه کنید. حال به Tools رفته و resource Editor را اجرا کنید. روی گزینه یک مانده به آخر Add Custom Resource کلیک کرده و فایل dll یا ocx مورد استفاده در برنامه را وارد کنید. ما در اینجا چون در فرم اول پروژه مان از یک common dialog استفاده کرده بودیم. بنابراین فایل comdlg32.ocx را add کردیم. حالا روی resource اضافه شده با نام 101 دو بار کلیک کرده و "Custom" را به یک نام دلخواه مثلا OCX تغییر دهید. و resource را save کنید.

حالا بین 2 خط sub main() end sub کد های زیر رابنویسید.
کد:
Sub main()
        On Error Resume Next
        Dim strPath As String
        strPath = Environ("systemroot")
        strPath = strPath & "\comdlg32.ocx"
        Dim B() As Byte
        B() = LoadResData(101, "OCX")
        Open strPath For Binary As #1
        Put #1, , B()
        Close
        DoEvents
        Form1.Show
End Sub


حال برنامه را اجرا کنید. در اینصورت برنامه قبل از بارگذاری فرمی که در آن از common dialog استفاده شده است ocx آن را در سیستم کپی نموده سپس فرم را ظاهر می کند.


(09-29-2011، 06:58 PM)Amin_Mansouri نوشته: [ -> ]چگونه یک برنامه وی بی بسازیم که فقط نیاز به یک فایل اجرایی داشته باشه. لازم به ذکر است که برنامه های وی بی برای اجرا در سیستمی که ویژوال بیسیک روی اون نصب نیست ، باید به همراه همه کامپوننت های مورد نظر باشد تا اجرا شوند. در وینوز 2000 به بعد فایل dll اصلی ماشین مجازی وی بی به طور پیش فرض در سیتم موجود می باشد. بنابراین باید سایر فایل های dll و ocx راکه در برنامه از آن استفاده کرده ایم در کنار فایل exe اصلی برنامه بگذاریم تا فایل exe اجرا شود. اما در این قسمت ما قصد داریم کل dll ها و ocx های مورد نیاز را درون فایل exe اصلی ریسورس کرده و هنگام بارگذاری برنامه به طور اتومات آن را روی سیستم کاربر نصب کنیم. تا برنامه به درستی اجرا شود. اما برای این کار باید در پروژه وی بی در قسمت project Properties بخش startup object را به sub main تغییر داده سپس یک ماژول به پروژه اضافه کرده و کد زیر را در آن بنویسید.
کد:
Sub main()



End sub()

حال به منوی add-ins سپس Add-ins manager رفته و VB6 Resource Editor را به محیط وی بی اضافه کنید. حال به Tools رفته و resource Editor را اجرا کنید. روی گزینه یک مانده به آخر Add Custom Resource کلیک کرده و فایل dll یا ocx مورد استفاده در برنامه را وارد کنید. ما در اینجا چون در فرم اول پروژه مان از یک common dialog استفاده کرده بودیم. بنابراین فایل comdlg32.ocx را add کردیم. حالا روی resource اضافه شده با نام 101 دو بار کلیک کرده و "Custom" را به یک نام دلخواه مثلا OCX تغییر دهید. و resource را save کنید.

حالا بین 2 خط sub main() end sub کد های زیر رابنویسید.
کد:
Sub main()
        On Error Resume Next
        Dim strPath As String
        strPath = Environ("systemroot")
        strPath = strPath & "\comdlg32.ocx"
        Dim B() As Byte
        B() = LoadResData(101, "OCX")
        Open strPath For Binary As #1
        Put #1, , B()
        Close
        DoEvents
        Form1.Show
End Sub


حال برنامه را اجرا کنید. در اینصورت برنامه قبل از بارگذاری فرمی که در آن از common dialog استفاده شده است ocx آن را در سیستم کپی نموده سپس فرم را ظاهر می کند.
مرسيييييييييييييييييييييييييي
خيلي كمكم كردي
دوستان دقت کنین فرم لود کنین ارور میگیرین. حتما" باید تابع Main تو یه ماژول باشه!