PDA

View Full Version : سوال: OCX یک دردسر بزرگ شده



shahabbasic
یک شنبه 30 مرداد 1390, 23:09 عصر
من حدود 11 تا کامپوننت دارم و اسماشون رو عوض کردم مثلا اگر بوده Mbcombobox.ocx گذاشتم M.od.ocx (این کارو بعد از اضافه کردن کامپوننت به جعبه ابزار کردم) بعد همگی رو به حساب خودم خواستم رجیستر کنم در رویداد
Initialize فرم نوشتم :
Shell "RegSvr32 /s " & App.path & "m.od.OCX", vbNormalFocus
11 تا مثل خط بالا نوشتم
خلاصه فایل ستاپ براش ساختم و روی یک سیستم دیگه نصبش کردم ولی موقع اجرا ارور میده همون خطایی که از نخوندن ocx میاد ( یک بار عکسشو گذاشتم) نمیدونم مشکل چیه :اشتباه: تو سیستم خودم براش اون فایل notepad رو ساختم با پسوند bat و OCX هارو رجیستر کردم ولی نمیدونم قضیه چیه

setroyd
دوشنبه 31 مرداد 1390, 04:11 صبح
شاید رو سیستمی که 7 بوده نصب کردی اره ؟

returnx
دوشنبه 31 مرداد 1390, 10:34 صبح
Initialize فرم نوشتم :
Shell "RegSvr32 /s " & App.path & "m.od.OCX", vbNormalFocus
11 تا مثل خط بالا نوشتم
خلاصه فایل ستاپ براش ساختم و روی یک سیستم دیگه نصبش کردم ولی موقع اجرا ارور میده همون خطایی که از نخوندن ocx میاد ( یک بار عکسشو گذاشتم) نمیدونم مشکل چیه :اشتباه: تو سیستم خودم براش اون فایل notepad رو ساختم با پسوند bat و OCX هارو رجیستر کردم ولی نمیدونم قضیه چیه
شاید اینچیزی که الان میگم ربطی به خطایی که میده نداشته باشه اما شما دقت داشته باشید ، زمانی که Setup میسازید دیگه نیازی نیست که با کد نویسی OCX خودتون رو رجیستر کنید کافیه در زمان ساخت Setup برنامه OCX های مورد نیاز را انتخاب کنید ، در زمان نصب برنامه همه ی OCX ها به صورت خودکار رجیستر میشوند...
موفق باشید.../

farboodj1375
دوشنبه 31 مرداد 1390, 11:59 صبح
شاید اینچیزی که الان میگم ربطی به خطایی که میده نداشته باشه اما شما دقت داشته باشید ، زمانی که Setup میسازید دیگه نیازی نیست که با کد نویسی OCX خودتون رو رجیستر کنید کافیه در زمان ساخت Setup برنامه OCX های مورد نیاز را انتخاب کنید ، در زمان نصب برنامه همه ی OCX ها به صورت خودکار رجیستر میشوند...
موفق باشید.../

برای اینکه توسط ستاپ ساز کامپوننت ها رجیستر بشن حتما باید مسیر مقصد رو سیستم 32 تعیین کنیم؟

shahabbasic
دوشنبه 31 مرداد 1390, 12:49 عصر
شاید اینچیزی که الان میگم ربطی به خطایی که میده نداشته باشه اما شما دقت داشته باشید ، زمانی که Setup میسازید دیگه نیازی نیست که با کد نویسی OCX خودتون رو رجیستر کنید کافیه در زمان ساخت Setup برنامه OCX های مورد نیاز را انتخاب کنید ، در زمان نصب برنامه همه ی OCX ها به صورت خودکار رجیستر میشوند...
موفق باشید.../
خب بله اتفاقا موقعی که داره فایلها رو کپی میکنه یک مرحله هم مینویسه :
Registering Commponents...
ولی در واقع همچین اتفاقی نمی افته

shahabbasic
دوشنبه 31 مرداد 1390, 12:50 عصر
شاید رو سیستمی که 7 بوده نصب کردی اره ؟
روی قدیمی ترین نسخه xp نصبش کردم

shahabbasic
دوشنبه 31 مرداد 1390, 19:34 عصر
خیلی ممنون از راهنمایی های زیاد دوستان خودم مشکل رو حل کردم فقط بگم که اگر کسی این مشکل رو داره کمکی بشه بهش
این مشکل یک بی دقتی است و یک ایراد ظریفه دستور app.path مسیری رو میده که خود فایل exe در اونجا حضور داره بدون \ و مشکل همینجاست در دستوری که من در پست 1 نوشتم یک بک اسلش کم داره و مسیر ناقص به اینصورت میشه :
Shell "RegSvr32 /s "D:\BH m.od.OCX", vbNormalFocus
دستور به این شکل درست میشه :
Shell "RegSvr32 /s " & App.path & "\m.od.OCX", vbNormalFocus
فقط همین

IamOverlord
شنبه 19 آذر 1390, 15:30 عصر
من با این دستور مشکل دارم.
توی Windows 7 وقتی برنامه از این دستور استفاده می کنه، اگه Run as administrator رو زده نشده باشه، Component ها Register نمی شن، ضمنا نمی دونم چی کار کنیم که از کاربر سوال کنه که دسترسی Administrator می ده یا نه.

Mr'Jamshidy
شنبه 19 آذر 1390, 15:46 عصر
دوست عزیز دوستور App.Path بعضی مواقع آخر آدرس \ رو اضافه میکنه و برخی مواقع نه! بستگی به این داره که برنامه از کجا اجرا بشه

مثلا اگر در روت درایو باشه با \ آخرش بر میگردونه و اگر در یک فولدر باشه بدون \ بر میگردونه

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

((من که خودم همیشه از این روش استفاده میکنم))

Function AppPath() As String
Dim aPath As String
aPath = App.Path
If Not Right(aPath,1) = "\" Then aPath = aPath & "\"

AppPath = aPath
End Function

حالا که خداروشکر مشکلت حل شده اما برای اضافه شدن به معلومات برنامه نویسیت گفتم

در ضمن تا جایی که میتونید (اینو خطاب به همه برنامه نویسای VB6 میگم) از RegSvr32.exe استفاده نکنید
برای رجیستر کردن یک کامپوننت همش یک ماژول کار با رجیستری لازمه

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

موفق باشید

SlowCode
شنبه 19 آذر 1390, 20:26 عصر
اگه اون ماژول توی سایت هست بی زحمت آدرس رو بنویسید، اگرهم نیست بزارید تا استفاده کنیم.

محسن واژدی
شنبه 19 آذر 1390, 23:33 عصر
اگه اون ماژول توی سایت هست بی زحمت آدرس رو بنویسید، اگرهم نیست بزارید تا استفاده کنیم.


سلام
ضمیمه پست زیر را بررسی کنید:


http://barnamenevis.org/showthread.php?291542-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-%D8%B2%DB%8C%D8%B1-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D8%AA-%D8%9F%D8%9F%D8%9F&p=1281931&viewfull=1#post1281931 (http://barnamenevis.org/showthread.php?291542-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-%D8%B2%DB%8C%D8%B1-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3)

موفق باشید

Mr'Jamshidy
یک شنبه 20 آذر 1390, 11:12 صبح
این هم یک لینک دیگه مرتبط با ثبت کامپوننت ها

http://barnamenevis.org/showthread.php?317560-%D8%AB%D8%A8%D8%AA-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D9%87%D8%A7-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-RegSvr32.exe

IamOverlord
یک شنبه 20 آذر 1390, 17:04 عصر
سلام
ضمیمه پست زیر را بررسی کنید:


http://barnamenevis.org/showthread.php?291542-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-%D8%B2%DB%8C%D8%B1-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D8%AA-%D8%9F%D8%9F%D8%9F&p=1281931&viewfull=1#post1281931 (http://barnamenevis.org/showthread.php?291542-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-%D8%B2%DB%8C%D8%B1-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3)

موفق باشید

خوب مشکل کار با Registery نیست، Register کردن Component هست.

Mr'Jamshidy
یک شنبه 20 آذر 1390, 17:14 عصر
خوب مشکل کار با Registery نیست، Register کردن Component هست.

روش اول رو که خیلی ساده هم هست تو پست شماره 12 (http://barnamenevis.org/showthread.php?301426-OCX-%DB%8C%DA%A9-%D8%AF%D8%B1%D8%AF%D8%B3%D8%B1-%D8%A8%D8%B2%D8%B1%DA%AF-%D8%B4%D8%AF%D9%87&p=1393341&viewfull=1#post1393341) گفتم

و اما روش دوم:

فایل ضمیمه رو ببینید حتما متوجه میشید

IamOverlord
یک شنبه 20 آذر 1390, 17:57 عصر
خوب یه سوال، فایل ocx مون هم باید خودمون تو پوشه ی system32 قرار بدیم؟

Mr'Jamshidy
یک شنبه 20 آذر 1390, 18:50 عصر
نه نیازی نیست

فقط بعد از رجیستر محل نباید تغییر کنه

Restlesa
یک شنبه 20 آذر 1390, 21:00 عصر
زمانی که Setup میسازید دیگه نیازی نیست که با کد نویسی OCX خودتون رو رجیستر کنید کافیه در زمان ساخت Setup برنامه OCX های مورد نیاز را انتخاب کنید ، در زمان نصب برنامه همه ی OCX ها به صورت خودکار رجیستر میشوند.../[/QUOTE]
آیا واقعا همچین کاری عملیه ؟؟؟
یعنی واقعا کامپوننت ها و DLL ها رو به صورت صحیح رجیستر می کنه ؟؟؟

Mr'Jamshidy
یک شنبه 20 آذر 1390, 22:03 عصر
زمانی که Setup میسازید دیگه نیازی نیست که با کد نویسی OCX خودتون رو رجیستر کنید کافیه در زمان ساخت Setup برنامه OCX های مورد نیاز را انتخاب کنید ، در زمان نصب برنامه همه ی OCX ها به صورت خودکار رجیستر میشوند.../
آیا واقعا همچین کاری عملیه ؟؟؟
یعنی واقعا کامپوننت ها و DLL ها رو به صورت صحیح رجیستر می کنه ؟؟؟[/QUOTE]

100% شک نکن دوست من
اما به برنامه setup ساز شما هم بستگی داره

Restlesa
دوشنبه 21 آذر 1390, 13:29 عصر
یعنی کامپننت های پولی رو مثل Codejocks رو هم رجیستر می کنه ؟؟؟
من از برنامه ستاپ ساز Installshild و Setup Factori استفاده می کنم آیا قابل اطمینان هستن ؟؟؟

Mr'Jamshidy
دوشنبه 21 آذر 1390, 16:51 عصر
:متفکر: دوست عزیز Register به معنی خریدن نیست
رجیستر به معنی ثبت شدن در ویندوز هست

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

Restlesa
سه شنبه 22 آذر 1390, 02:13 صبح
بله حق با شماست
میشه به صورت واضح همراه با توضیح و مثال برام توضیح بدین که رجیستر کردن یه کامپوننت در سیستم مقصد یعنی چی ؟؟؟

mr-adler
سه شنبه 22 آذر 1390, 02:46 صبح
ریجیستر کردن دو نوعه:(البته از توضیحات mr جمشیدی بر میاد!)
1.ریجیستری که قرار داده شده تا از شما پول بگیره. یعنی در قبال ساخت برنامه یا کامپونت یا .... از شما وجهی دریافت میکنند تا شما بتونی ازش استفاده کنی
2.ریجیستر کردن به منظور اینه ویندوز تشخیص بده که اره این افزونه در حال استفاده شدنه(یا میخواد استفاده بشه)در کل باید سیستم بفهمه یه مورد جدید اضافه شده و باید ثبت بشه.
نکته مهم اینه که:
هر کامپونتی یا ... ملزم به دارا بودن مورد اول نیست(یعنی ممکنه پولی نباشه)اما در هر صورت باید مورد دوم انجام بشه..../

امیدوارم درست بوده باشه....!:لبخند:

Restlesa
سه شنبه 22 آذر 1390, 12:11 عصر
ممنونم دوست عزيز
من هميشه قكر مي كردم كه منظور از رجيستر شدن فقط مورد اول هستش :خجالت:
بابت اين توضيح بازم ازت ممنونم

حالا دوتا سوال ديگه هم داشتم
يكي در مورد پست ١٢ هستش كه آدرس يه تاپيك درش قرار داده شده ... مي خواستم بدونم كه آيا فايل ضميمه شده در اون تاپيك قابل اطمينان هست يا خير ؟؟؟
و سوال بعديم هم در رابطه با فايل ضميمه شده در پست 14 هستش ... چه طوري مي تونم همچين فايلي رو خودم بسازم ؟؟؟

Mr'Jamshidy
سه شنبه 22 آذر 1390, 16:29 عصر
ممنونم دوست عزيز
من هميشه قكر مي كردم كه منظور از رجيستر شدن فقط مورد اول هستش :خجالت:
بابت اين توضيح بازم ازت ممنونم

حالا دوتا سوال ديگه هم داشتم
يكي در مورد پست ١٢ هستش كه آدرس يه تاپيك درش قرار داده شده ... مي خواستم بدونم كه آيا فايل ضميمه شده در اون تاپيك قابل اطمينان هست يا خير ؟؟؟
و سوال بعديم هم در رابطه با فايل ضميمه شده در پست 14 هستش ... چه طوري مي تونم همچين فايلي رو خودم بسازم ؟؟؟

در مورد سوال اولتون باید بگم اون فایل ضمیمه شده رو من خودم نوشتم اگر فکر میکنید قابل اطمینان هست میتونید دانلود کنید که همراه با فایل یک سورس هم ضمیمه شده تا نحوه کار کتابخانه رو نشون بده

و در مورد سوال دوم:

اون فایلی که شما میبینید یک کلید Export شده از رجیستری ویندوز من هست که نشون میده کامپوننت WinSock.ocx چطور رجیستر شده
اون فایل رو گزاشتم تا دوستانی که میخوان دستی کامپوننت هاشون رو ثبت کنن بدونن چطور باید این کار رو انجام بدن

موفق باشید

Mr'Jamshidy
سه شنبه 22 آذر 1390, 16:32 عصر
ریجیستر کردن دو نوعه:(البته از توضیحات mr جمشیدی بر میاد!)
1.ریجیستری که قرار داده شده تا از شما پول بگیره. یعنی در قبال ساخت برنامه یا کامپونت یا .... از شما وجهی دریافت میکنند تا شما بتونی ازش استفاده کنی
2.ریجیستر کردن به منظور اینه ویندوز تشخیص بده که اره این افزونه در حال استفاده شدنه(یا میخواد استفاده بشه)در کل باید سیستم بفهمه یه مورد جدید اضافه شده و باید ثبت بشه.
نکته مهم اینه که:
هر کامپونتی یا ... ملزم به دارا بودن مورد اول نیست(یعنی ممکنه پولی نباشه)اما در هر صورت باید مورد دوم انجام بشه..../

امیدوارم درست بوده باشه....!:لبخند:

درست که بود دوست عزیز اما من چیزی رو گفتم که بین عموم رایجه

اما به هر حال ممنون

Restlesa
سه شنبه 22 آذر 1390, 18:18 عصر
در مورد سوال اولتون باید بگم اون فایل ضمیمه شده رو من خودم نوشتم اگر فکر میکنید قابل اطمینان هست میتونید دانلود کنید که همراه با فایل یک سورس هم ضمیمه شده تا نحوه کار کتابخانه رو نشون بده
دانلودش كردم ... فقط يه سوال ... آيا بصورت كامل درست و صحيح كار مي كنه ؟؟؟ تو ويندوز 7 و xp Sp3 هم بدون مشكل هست ؟؟؟

Mr'Jamshidy
سه شنبه 22 آذر 1390, 19:11 عصر
دانلودش كردم ... فقط يه سوال ... آيا بصورت كامل درست و صحيح كار مي كنه ؟؟؟ تو ويندوز 7 و xp Sp3 هم بدون مشكل هست ؟؟؟

والا من ویندوز 7 دارم و تو همین ویندوز نوشتمش و امتحانش کردم

تو سیستم من که درست جواب داد

بقیه دوستان هم امتحان کنن (با کامپوننت های مختلف) ببینیم نتیجه چی میشه