PDA

View Full Version : سوال: رجیستر کردن کامپوننت ها از طریق کد نویسی



SlowCode
جمعه 24 دی 1389, 19:02 عصر
سلام دوستان می خواستم بدونم چطور از طریق کدنویسی یه کامپوننت رو توی کامپیوتر کاربر رجیستر کنم؟

M.T.P
جمعه 24 دی 1389, 19:27 عصر
Shell "regsvr32 VBAME.dll"

اگه میخواین پیغام نده بصورت Silent میشه:


Shell "regsvr32 VBAME.dll /s"

ali.rezaei7
شنبه 25 دی 1389, 00:24 صبح
با تاييد روش جناب M.T.P . يه راهش هم استفاده از API هست.خب شايد Regsvr32.exe بلايي سرش اومده باشه!


Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long

Private Sub RegisterCom(ComFileName As String)

Dim lngLoadLB As Long
Dim lngGetAdd As Long
Dim lngSendMsg As Long

lngLoadLB = LoadLibrary(ComFileName)
lngGetAdd = GetProcAddress(lngLoadLB, "DllRegisterServer")
lngSendMsg = CallWindowProc(lngGetAdd, hWnd, (0), (0), (0))

FreeLibrary lngLoadLB

End Sub

shedayat
شنبه 25 دی 1389, 11:23 صبح
خیلی عذر می خوام ها. شما همه روشتون درست، ولی وقتی روی برنامه دابل کلیک می کنی تا اجرا بشه اول سیستم چک می کنه که کامپوننت ثبت شده هست یا نه اگه ثبت شده نبود همون اول برنامه ارور می ده و دیگه داخلش نمی ره. اونوقت شما این کدها رو می خواین کجا بنویسین تا اول این دستورات رو انجام بده؟

M.T.P
شنبه 25 دی 1389, 11:33 صبح
خیلی عذر می خوام ها. شما همه روشتون درست، ولی وقتی روی برنامه دابل کلیک می کنی تا اجرا بشه اول سیستم چک می کنه که کامپوننت ثبت شده هست یا نه اگه ثبت شده نبود همون اول برنامه ارور می ده و دیگه داخلش نمی ره. اونوقت شما این کدها رو می خواین کجا بنویسین تا اول این دستورات رو انجام بده
اینطوری:
http://barnamenevis.org/showthread.php?270261-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C%DB%8C-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-Portable-%DA%A9%D9%86%DB%8C%D9%85!-(%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%D9%86%D8%B5%D8%A7%D8%A8)

ghasemweb
یک شنبه 26 دی 1389, 23:08 عصر
خیلی عذر می خوام ها. شما همه روشتون درست، ولی وقتی روی برنامه دابل کلیک می کنی تا اجرا بشه اول سیستم چک می کنه که کامپوننت ثبت شده هست یا نه اگه ثبت شده نبود همون اول برنامه ارور می ده و دیگه داخلش نمی ره. اونوقت شما این کدها رو می خواین کجا بنویسین تا اول این دستورات رو انجام بده؟

خب اين كد رو ميتوني در يك فايل اجرايي كه ساده است و از هيچ كامپوننتي استفاده نشده بنويسي و اجرا كني

SlowCode
چهارشنبه 06 بهمن 1389, 16:04 عصر
خیلی عذر می خوام ها. شما همه روشتون درست، ولی وقتی روی برنامه دابل کلیک می کنی تا اجرا بشه اول سیستم چک می کنه که کامپوننت ثبت شده هست یا نه اگه ثبت شده نبود همون اول برنامه ارور می ده و دیگه داخلش نمی ره. اونوقت شما این کدها رو می خواین کجا بنویسین تا اول این دستورات رو انجام بده؟
اگه تو قسمت Initialize بنویسی همچین چیزی اتفاق نمی افته.