ایجاد تغییر در ریجستری ویندوز از طریق کدهای vba

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    آموزشی ایجاد تغییر در ریجستری ویندوز از طریق کدهای vba

    کد:
    SaveSetting appname:="[COLOR=#008000]ExcelIranسلام به همه دوستان عزیز
    تو این تاپیک میخوام مطلبی رو خدمتتون آموزش بدم که جزو آموزش های حرفه ای و تخصصی دسته بندی میشه.
    اعمال تغییر در ریجستری این امکان رو به ما میده که مقدارهای خاصی رو برای همیشه در ویندوز ذخیره کنیم و وقتی که فایل اکسل یا اکسس ما مجددا باز میشه میتونیم از این کدهای ذخیره شده استفاده کنیم.
    یک نمونه از کاربرد این قابلیت اینه که برنامه رو بصورت 30 روزه به کاربرا ارائه کنیم. یا مثلا در نرم افزاری که چند کاربر ازش استفاده میکنن میتونیم مشخص کنیم هر فعالیت رو چه کاربری انجام داده و ...
    
    خب بریم سراغ آموزش:
    
    ثبت کد در ریجستری
    در ابتدا باید یک کد رو در ریجستری ثبت کنیم. برای اینکار از دستور SaveSetting استفاده میکنیم. به این صورت:
    ", Section:="[COLOR=#ffd700]VBA[/COLOR]", Key:="[COLOR=#800080]startdate[/COLOR]", setting:=[COLOR=#00ff00]13940101[/COLOR]
    خب بریم سراغ توضیح کد نوشته شده:
    نام نرم افزار شما (پوشه اصلی)
    نام بخش مربوطه (پوشه فرعی)
    نام کلید مورد نظر (بخش نهایی آدرس کلید مورد نظر)
    مقدار مورد نظر (اینجا تاریخ شروع نرم افزار)

    نکته مهم: کدهای ریجستری تولید شده در این آدرس ذخیره خواهد شد
    کد:
    [FONT=Verdana]HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[/FONT]

    Click image for larger version

Name:	1.jpg
Views:	1
Size:	110.5 کیلو بایت
ID:	143920

    فراخوانی کد ریجستری ثبت شده
    خب حالا که کد رو در ریجستری ثبت کردیم باید بتونیم ازش استفاده کنیم. مثلا داخل یک شرط که اگر تعداد روزهای گذشته از تاریخ شروع استفاده بیش از 30 روز هست نرم افزار بسته بشه یا مثلا پیغام بده تاریخ مصرف نرم افزار تموم شده. خریداری کنید.
    برای فراخوانی کد ثبت شده به این صورت عمل میکنیم:
    کد:
    GetSetting "[COLOR=#008000]ExcelIran[/COLOR]", "[COLOR=#ffd700]VBA[/COLOR]", "[COLOR=#800080]startdate[/COLOR]"
    نام نرم افزار شما (پوشه اصلی)
    نام بخش مربوطه (پوشه فرعی)
    نام کلید مورد نظر (بخش نهایی آدرس کلید مورد نظر)


    حذف کد ریجستری ثبت شده
    گاهی وقتا نیاز هست کدی رو که ثبت کردیم حذف کنیم. مثلا برای حذف محدودیت استفاده از نرم افزار
    برای اینکار طبق کد زیر عمل میکنیم:
    کد:
    DeleteSetting "[COLOR=#008000]ExcelIran[/COLOR]", "[COLOR=#ffd700]VBA[/COLOR]", "[COLOR=#800080]startdate[/COLOR]"
    نام نرم افزار شما (پوشه اصلی)
    نام بخش مربوطه (پوشه فرعی)
    نام کلید مورد نظر (بخش نهایی آدرس کلید مورد نظر)

    توجه داشته باشید که دو فیلد آخر یعنی فیلد بخش و فیلد کلید وارد کردنشون اختیاریه. به این معنی که اگه این دو بخش رو وارد نکنیم کل کدهایی که در پوشه نرم افزار ExcelIran ذخیره شده حذف خواهد شد. یا مثلا اگه بخش رو مشخص کنیم و کلید رو ننویسیم تمام کلیدهای موجود در بخش VBA حذف خواهد شد


    امیدوارم آموزش مورد توجه شما قرار گرفته باشه[/COLOR]
  • sabertb

    • 2014/04/09
    • 347
    • 45.00

    #2
    خیلی جالبه

    این کد هارو کجا باید وارد کنیم؟
    :min10::min18::min13::min22:

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4598
      • 100.00

      #3
      نوشته اصلی توسط sabertb
      خیلی جالبه

      این کد هارو کجا باید وارد کنیم؟
      داخل ساب روتین دیگه. تو محیط ویژوال بیسیک
      همون جایی که کدهای vba رو مینویسین

      کامنت

      • sabertb

        • 2014/04/09
        • 347
        • 45.00

        #4
        نوشته اصلی توسط amir ghasemiyan
        داخل ساب روتین دیگه. تو محیط ویژوال بیسیک
        همون جایی که کدهای vba رو مینویسین
        تو محیط VBA در اکسل ؟ داخل صفحه Module ؟
        قسمتی که تصویرشو گذاشتید هم نتونستم پیدا کنم قسمت Registry یا احتمال میدم تو شرکت دسترسی به این بخش رو محدود کردند که من پیداش نمیکنم
        :min10::min18::min13::min22:

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4598
          • 100.00

          #5
          نوشته اصلی توسط sabertb
          تو محیط VBA در اکسل ؟ داخل صفحه Module ؟
          قسمتی که تصویرشو گذاشتید هم نتونستم پیدا کنم قسمت Registry یا احتمال میدم تو شرکت دسترسی به این بخش رو محدود کردند که من پیداش نمیکنم
          بله خودشه
          اون عکسی که گذاشتم مربوط به ریجستری سیستم هست. شما باید از منوی استارت RUN رو اجرا کنید و دستور regedit رو تایپ کنید تا وارد این محیط بشین

          کامنت

          • sabertb

            • 2014/04/09
            • 347
            • 45.00

            #6
            نوشته اصلی توسط amir ghasemiyan
            بله خودشه
            اون عکسی که گذاشتم مربوط به ریجستری سیستم هست. شما باید از منوی استارت RUN رو اجرا کنید و دستور regedit رو تایپ کنید تا وارد این محیط بشین
            دست شما درد نکنه راهنمایی مفید واقع شد موفق شدم ثبت کنمش . حالا یه سوال این کار باعث میشه محدودیت مورد نظر برای فایل ایجاد کنیم یه مثال میتونید بزنید مثلا اگر از تاریخ ایجاد فایل 20 روز گذشت این پیام ظاهر بشه " فایل مورد نظر در دسترس نمی باشد "
            می تونید برای افرادی مثل من که مبتدی هستن تو این زمینه ها مثال بزنید جوری که گام به گام بریم جلو به نتیجه برسیم ؟
            فایل پیوست هم چیزیه که با توجه به پست شما درست کردم و می خوام همون پیغام براش فعال بشه
            فایل های پیوست شده
            :min10::min18::min13::min22:

            کامنت

            • Amir Ghasemiyan

              • 2013/09/20
              • 4598
              • 100.00

              #7
              نوشته اصلی توسط sabertb
              دست شما درد نکنه راهنمایی مفید واقع شد موفق شدم ثبت کنمش . حالا یه سوال این کار باعث میشه محدودیت مورد نظر برای فایل ایجاد کنیم یه مثال میتونید بزنید مثلا اگر از تاریخ ایجاد فایل 20 روز گذشت این پیام ظاهر بشه " فایل مورد نظر در دسترس نمی باشد "
              می تونید برای افرادی مثل من که مبتدی هستن تو این زمینه ها مثال بزنید جوری که گام به گام بریم جلو به نتیجه برسیم ؟
              فایل پیوست هم چیزیه که با توجه به پست شما درست کردم و می خوام همون پیغام براش فعال بشه

              خواهش میکنم
              کل کدهای شما به این صورت در میاد:
              کد:
              
              Sub start()
              today = Date
              SaveSetting appname:="ExcelIran", Section:="VBA", Key:="startdate", setting:=today
              End Sub
              
              
              Sub startt()
              Dim a As Date
              a = GetSetting("ExcelIran", "VBA", "startdate")
              today = Date
              If today - a > 30 Then MsgBox "License is expired"
              End Sub

              کامنت

              • sabertb

                • 2014/04/09
                • 347
                • 45.00

                #8
                نوشته اصلی توسط amir ghasemiyan

                خواهش میکنم
                کل کدهای شما به این صورت در میاد:
                کد:
                
                Sub start()
                today = Date
                SaveSetting appname:="ExcelIran", Section:="VBA", Key:="startdate", setting:=today
                End Sub
                
                
                Sub startt()
                Dim a As Date
                a = GetSetting("ExcelIran", "VBA", "startdate")
                today = Date
                If today - a > 30 Then MsgBox "License is expired"
                End Sub
                دست شما درد نکنه خیلی ممنون ، من این کد رو جایگزین کردم .
                وقتی Run میزنم Error میده .
                کد PHP:
                GetSetting("ExcelIran""VBA""startdate"
                این خط کد نویسی رو هایلایت میکنه . این Error تاثیر داره تو کارش یا نه ؟
                :min10::min18::min13::min22:

                کامنت

                • salon-zeba
                  • 2018/07/23
                  • 1

                  #9
                  مرسی مطلب بسیار خوبی بود .ممنون

                  کامنت

                  چند لحظه..