نمایش نتایج 1 تا 23 از 23

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

  1. #1

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

    فرض کنید من 2 تا کامپوننت دارم کنار برنامم و نمیخوام براش ستاپ بسازم حالا چجوری این کامپوننت هارو رجیستر کنم با چه دستوری؟
    روش زیر رو بلدم و در ویندوز 7 کاملا جواب میده اما در ویندوز xp حتما باید برنامه رو Run as administrator بکنید تا این کد اجرا بشه
    Private Sub Form_Initialize()
    If Len(App.Path) = 3 Then
    ph = App.Path
    Else
    ph = App.Path & "\"
    End If
    Shell "RegSvr32 /s " & ph & "COMDLG32.OCX", vbNormalFocus
    End Sub


    حالا من برای حل مشکلش در ویندوز اکس پی چکار کنم؟

  2. #2

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

    سلام
    از آنجایی که کامپوننت ها برای دسترسی نیازمند ریجستری شدن پیش از استفاده هستند و در فرایند ریجستر کردن هم داده های فایل در HKCR نوشته میشوند، همانطور که اطلاع دارید چون ویرایش این بخش ها در سطح admin است پس بدون دسترسی administrator نمیتوانیم بخش هایی نظیر این قسمت ریجستری را ویرایش کنیم که در نتیجه آن ثبت کامپوننت هم با شکست مواجه میشود

    یک نکته عمومی هم که شاید مفید باشد:
    اگر کامپوننت مورد استفاده برنامه را در کنار فایل exe برنامه قرار داده باشیم دیگر نیازی به اجرای regsvr32 برای ریجستر کردن آن نیست، چرا که در سیستم مقصد برنامه بصورت خودکار کامپوننت را یافته و ثبت میکند (البته این هم نیازمند دسترسی admin است)

    موفق باشید
    .: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
    .: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]

    .: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.

  3. #3

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

    نقل قول نوشته شده توسط محسن واژدی مشاهده تاپیک
    سلام
    از آنجایی که کامپوننت ها برای دسترسی نیازمند ریجستری شدن پیش از استفاده هستند و در فرایند ریجستر کردن هم داده های فایل در HKCR نوشته میشوند، همانطور که اطلاع دارید چون ویرایش این بخش ها در سطح admin است پس بدون دسترسی administrator نمیتوانیم بخش هایی نظیر این قسمت ریجستری را ویرایش کنیم که در نتیجه آن ثبت کامپوننت هم با شکست مواجه میشود

    یک نکته عمومی هم که شاید مفید باشد:
    اگر کامپوننت مورد استفاده برنامه را در کنار فایل exe برنامه قرار داده باشیم دیگر نیازی به اجرای regsvr32 برای ریجستر کردن آن نیست، چرا که در سیستم مقصد برنامه بصورت خودکار کامپوننت را یافته و ثبت میکند (البته این هم نیازمند دسترسی admin است)


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

  4. #4

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

    کاملا اشتباه است من بارها کامپوننت هارو در کنار فایل اصلی قرار دادم و با حساب ادمین هم وارد سیستم شدم
    ولی بازم ارور میده پس تنها راه رجیستره
    سلام
    شاید حق با شما باشد، ولی برای بنده اتفاق نیفتاده است
    البته شاید برای فایل اجرایی نیازمند ریجستر کردن باشد حتی اگر کامپوننت در کنار فایل قرار داشته باشد، اما برای زمان طراحی همانطور که در پست قبل عرض کردم کامپوننت در کنار برنامه باشد کافیست

    موفق باشید
    .: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
    .: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]

    .: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.

  5. #5

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

    حالا بالاخره راه حل چیه؟ چطور میتونم بدون استفاده از فایل نصبی کامپوننت هارو رجیستر بکنم؟؟

  6. #6

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

    به همان صورتی که در پست هم اول اشاره کردین انجام میشود، همانطور که اطلاع دارید در کل فرایند ریحستر کردن یعنی معرفی فایل به ویندوز با درج مشخصاتش در ریجستری، حالا چه توسط regsbr32 باشد و چه با توابع api، و در هردو صورت نیازمند دسترسی admin هستیم که در هرصورت نداشتن دسترسی admin در هیچ یک از دو ویندوزهای xp و 7 نمیتوانیم یک کامپوننت را ثبت کنیم به عبارتی ویندوز این مزیّت را به یوزر محدود که ما باشیم نمیدهد، به همین جهت است که حتی نصّاب های بزرگی مانند install-shield نیز برای ویرایش ریجستری نیازمند دسترسی admin هستند

    موفق باشید
    .: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
    .: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]

    .: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    دی 1390
    محل زندگی
    C#‎‎‎,VB6‎‎‎,vb.net,Assembly,AVR,Java For Android
    پست
    1,112

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

    با سلام

    شما به یک روش دیگر میتوانید
    که کامپوننت را در خود برنامه قرار بدی . منظورم همون برنامه ای هست که نوشتی
    اگه خواستی بگو تا یه نمونه بزارم واست

  8. #8

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

    نقل قول نوشته شده توسط سید حمید حق پرست مشاهده تاپیک
    با سلام

    شما به یک روش دیگر میتوانید
    که کامپوننت را در خود برنامه قرار بدی . منظورم همون برنامه ای هست که نوشتی
    اگه خواستی بگو تا یه نمونه بزارم واست
    سلام
    بله در مورد user-controlها میتوانیم اما متاسفانه درباره فایل های ocxیی که سورس آن ها را در دسترس نداریم تنها راه پیش رو ثبت کامپوننت پیش از استفاده است

    موفق باشید
    .: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
    .: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]

    .: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.

  9. #9

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

    دوست عزیز من از یک برنامه کمکی استفاده میکنم
    یک برنامه ساده که از هیچ کامپونتی استفاده نشده و فقط برنامه اصلی را اجرا می کند ( (R= Sell (Path Exe /Code ) .

    که این کار 3 مزیت بسیار مهم دارد :
    1. اگر برنامه اصلی اجرا نشد می توانیم خطا زدایی کنیم (نصب نبودن کامپونت ها , ویروسی بودن برنامه , نصب نبودن فونت مورد نظر و غیره ...)
    2. شما می توانید برنامه را به راحتی از طیق اینترنت آپدیت کنید.
    3. شما می توانید برنامه اصلی را با یک کد انحصاری که بر حسب زمان می سازید اجرا کنید ( که این کار باعث می شود کسی نتواند برنامه اصلی را مستقیما اجرا کند که باعث می شود برنامه شما هک نشود)

  10. #10

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

    ببین سئوالمو ساده بگم
    من فایل ocx رو گذاشتم کنار برنامم و ستاپ هم نداره حالا میخوام این دوتا فایل رو بدم دست کاربر
    چه کار کنم که وقتی اون برای اولین مرتبه برنامه رو اجرا میکنه با پیغام خطای کامپوننت مواجه نشه؟

  11. #11
    کاربر دائمی آواتار M.T.P
    تاریخ عضویت
    دی 1388
    محل زندگی
    Planet Earth
    پست
    1,769

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

    نقل قول نوشته شده توسط shahabbasic مشاهده تاپیک
    ببین سئوالمو ساده بگم
    من فایل ocx رو گذاشتم کنار برنامم و ستاپ هم نداره حالا میخوام این دوتا فایل رو بدم دست کاربر
    چه کار کنم که وقتی اون برای اولین مرتبه برنامه رو اجرا میکنه با پیغام خطای کامپوننت مواجه نشه؟
    برنامه رو Sub Main شروع کنید.

    با یک تابع ابتدا کامپوننت ها رو بررسی کنید بعد فرم ها رو به نمایش بگذارید.

  12. #12

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

    میشه بفرمایید چجوری با یک تایع کامپوننت هارو بررسی کنم؟

  13. #13
    کاربر دائمی آواتار M.T.P
    تاریخ عضویت
    دی 1388
    محل زندگی
    Planet Earth
    پست
    1,769

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

    فرض کنید در FrmMain که فرم اصلی برنامه است از یک Listview استفاده کردید و باید قبل از اجرای فرم بررسی کنید که کامپوننت مربوطه نصب شده یا نه!

    کد HTML:
    Sub Main()
        Call CheckComponents
        FrmMain.Show
    End Sub
    
    Sub CheckComponents()
        Dim StrSysDir As String
        Dim StrComFile As String
    
        StrSysDir = Environ$("windir") & "\system32\"
        StrComFile = StrSysDir & "comctl32.ocx"
        
        If Dir(StrComFile) = vbNullString Then
            Call MsgBox("comctl32.ocx not installed.", vbExclamation)
            End
        End If
    End Sub
    با این حال همه چیز تحت اختیار شماست ، خطای Run Time ناشی از نبود این ocx رو کنترل کردید ، می تونید کامپوننت در کنار برنامه هم جستجو کنید ، ریجستر کنید و یا پیغام بدید که کاربر برنامه رو مجدد نصب کنه.

  14. #14

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

    خب این روال که وقتی کامپوننت نصب نشده باشه فقط پیغام میده که نصب نشده من میخوام رجیستر کنم سورسی وجود نداره؟
    If Dir(StrComFile) = vbNullString Then
    ؟
    ؟
    ؟
    ...
    end if

    یا پیغام بدید که کاربر برنامه رو مجدد نصب کنه.
    اگر قرار بود نصبی باشه که راحت رجیستر میشد من برنامم نصبی نیست
    با این حال همه چیز تحت اختیار شماست ، خطای Run Time ناشی از نبود این ocx رو کنترل کردید
    حرف شما متین ولی چه سود؟

  15. #15
    کاربر دائمی آواتار M.T.P
    تاریخ عضویت
    دی 1388
    محل زندگی
    Planet Earth
    پست
    1,769

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

    تو xp و Seven تست شد مشکل ندره ، کاربر ویندوز هم که باید Administrator باشه ، کاربر Limit که معنی نداره.

    کد HTML:
    Sub Main()
        Call CheckComponents
        FrmMain.Show
    End Sub
    
    Sub CheckComponents()
        Dim StrAppPath As String
        Dim StrComFile As String
    
        StrAppPath = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
        StrComFile = "COMDLG32.OCX"
        
        If Dir(StrAppPath & StrComFile) = vbNullString Then
            Call MsgBox("COMDLG32.OCX not found.", vbExclamation)
            End
        Else
            Call Shell("regsvr32 /s " & StrAppPath & StrComFile, vbHide)
        End If
        
    End Sub

  16. #16

    Thumbs up نقل قول: رجیستر کردن کامپوننت های یک برنامه در داخل خودش

    این هم سورس برنامه خودم

    Run Program.zip

    اگر با حال بود تشکر یادت نره

  17. #17

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

    نقل قول نوشته شده توسط mahmood744 مشاهده تاپیک
    این هم سورس برنامه خودم

    Run Program.zip

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

  18. #18

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

    نقل قول نوشته شده توسط M.T.P مشاهده تاپیک
    تو xp و Seven تست شد مشکل ندره ، کاربر ویندوز هم که باید Administrator باشه ، کاربر Limit که معنی نداره.

    کد HTML:
    Sub Main()
        Call CheckComponents
        FrmMain.Show
    End Sub
    
    Sub CheckComponents()
        Dim StrAppPath As String
        Dim StrComFile As String
    
        StrAppPath = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
        StrComFile = "COMDLG32.OCX"
        
        If Dir(StrAppPath & StrComFile) = vbNullString Then
            Call MsgBox("COMDLG32.OCX not found.", vbExclamation)
            End
        Else
            Call Shell("regsvr32 /s " & StrAppPath & StrComFile, vbHide)
        End If
        
    End Sub
    خب یعنی اگر با ادمین اومده باشه بالا لازم نیست run as administrator بکنه؟

  19. #19

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

    دوست عزیز یه جای اسم فایل Prog2.EXE نام فایل اجرایی خودت را بزار
    و در جای Register.exe شما کامپونت هایی که می خواهی رجیستر کنی را بزار

    اگر خاستی برنامه اجرایی و کامپونتهای برنامه را بزار تا خودم همشو برات درست کنم

  20. #20
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

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

    من با regsvr32.exe کامپوننت ها رو Register نمی کنم، چون برای اجرای برنامه باید Run as administrator زده بشه و اگه زده نشه، کامپوننت ها Register نمی شن.

  21. #21

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

    شما می توانید با تابع زیر کامپونت ها را رجیستر کنید و احتیاجی به regsvr32.exe نیست

    Public Declare Function DLLSelfRegister Lib "vb6stkit.dll" (ByVal lpDllName As String) As Integer

  22. #22

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

    اگر نمونه کدشو بذاری ممنون میشم

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

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

    این خودش به vb6stkit.dll نیاز داره.

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

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