09-29-2011، 06:58 PM
چگونه یک برنامه وی بی بسازیم که فقط نیاز به یک فایل اجرایی داشته باشه. لازم به ذکر است که برنامه های وی بی برای اجرا در سیستمی که ویژوال بیسیک روی اون نصب نیست ، باید به همراه همه کامپوننت های مورد نظر باشد تا اجرا شوند. در وینوز 2000 به بعد فایل dll اصلی ماشین مجازی وی بی به طور پیش فرض در سیتم موجود می باشد. بنابراین باید سایر فایل های dll و ocx راکه در برنامه از آن استفاده کرده ایم در کنار فایل exe اصلی برنامه بگذاریم تا فایل exe اجرا شود. اما در این قسمت ما قصد داریم کل dll ها و ocx های مورد نیاز را درون فایل exe اصلی ریسورس کرده و هنگام بارگذاری برنامه به طور اتومات آن را روی سیستم کاربر نصب کنیم. تا برنامه به درستی اجرا شود. اما برای این کار باید در پروژه وی بی در قسمت project Properties بخش startup object را به sub main تغییر داده سپس یک ماژول به پروژه اضافه کرده و کد زیر را در آن بنویسید.
حال به منوی 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 کد های زیر رابنویسید.
حال برنامه را اجرا کنید. در اینصورت برنامه قبل از بارگذاری فرمی که در آن از common dialog استفاده شده است ocx آن را در سیستم کپی نموده سپس فرم را ظاهر می کند.
کد:
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 آن را در سیستم کپی نموده سپس فرم را ظاهر می کند.