http://bayanbox.ir/view/263405954590585756/2mobile.png

Tavvafi@gmail.com

این نرم افزار :

این نرم افزار dllی تولید می کند که می توانید توسط آن برای نرم افزارتان قفل نرم افزاری تولید کنید.همچنین مدیریت کدفعالسازی را نیز برای شما انجام می دهد.

این نرم افزار برای شما dllی تولید می کند که به صورت اختصاصی به سخت افزار رایانه ی شما حساس خواهد بود، و وقتی به رایانه ای منتقل شود بر اساس فرمولی بر پایه کد سخت افزاری رایانه شما و کد سخت افزاری رایانه مشتری کد فعالسازی برای نرم افزار شما تولید و درخواست می کند.- و پس از تطبیق کد فعالسازی با آنچه که به عنوان کد فعالسازی دریافت می کند پیامی مناسب به نرم افزار فراخواننده ارسال می کند، تا به این ترتیب برنامه نویس بتواند برای ادامه کار نرم افزار خودش برنامه ریزی کند- می توان گفت برنامه نویس از مدیریت کدهای پیچیده سخت افزاری فاصله خواهد گرفت تا فراق خاطر به مباحث مربوط به مدیریت نرم افزار خود بپرازد- به همین دلیل این نرم افزار ویژه برنامه نویسان طراحی شده است. این نرم افزار می تواند دو نوع DLL از نوع 64 بیتی و 32 بیتی تولید کند تا با کامپایلرهای 32 بیتی و 64 بیتی رابطه برقرار کند. همچنین به سادگی قابل استفاده است، چون تنها دارای دو فانکشن(Function) اصلی است، که بدون هیچ پارامتری مورد استفاده قرار می گیرد و مقدار برگشتی توابع نیز بسیار ساده(True/False) است.

این نرم افزار ضمن تولید کدفعالسازی برای مشتریان در رایانه برنامه نویس، قابلیت ذخیره و نگهداری کدفعالسازی صحیح را در رایانه مشتری(در بخش رجیستری Registry ویندوز) فراهم می کند. بنابراین تمامی کارهای لازم، در این DLL، مدیریت خواهد شد.

این نمایش(Powerpoint) را ببینید

توضیح تصویر:

  • ابتدا برنامه نویس در رایانه خودشMaster یک فایل dll تولید می کند.
  • به این ترتیب فایل dll تولید شده یک فایل اختصاصی برای تولید کننده نرم افزار محسوب خواهد شد.
  • سپس فایل dll تولید شده را در نرم افزار خود استفاده خواهد کرد- درباره نحوه استفاده از فایل dll توضیح داده خواهد شد.
  • بعد، فایل dll، همراه نرم افزار تولید شده، در رایانه استفاده کننده از نرم افزار -هنگام setup- نصب خواهد شد.

نرم افزار، هر گاه بخواهد ادامه کار بدهد، از dll این سئوال را در قالب یک Function می پرسد:

  • آیا فعالسازی انجام شده است؟(شکل دستور به صورت TSN_Act است.)
  • اکنون dll تنها یک پاسخ (درست/نادرست)، به نرم افزار ارسال خواهد کرد.
  • این پاسخ نتیجه فعالیتهایی به شرح زیر است:
    1. dll، کد سخت افزاری رایانه مشتری را بدست می آورد.
    2. dll، کدفعالسازی ذخیره شده در رجیستری ویندوز را بدست می آورد.
    3. dll، در یک فرمول کد سخت افزاری رایانه مشتری، کد سخت افزاری رایانه برنامه نویس و کد فعالسازی را با هم مقایسه می کند، اگر هماهنگی لازم برقرار باشد، پاسخ درست(True)، و در صورت ناهماهنگی پاسخ غلط (False)، را به نرم افزار ارسال می کند.

فرآیندفعالسازی به شرح زیر است:

  • نرم افزار از dll درخواست کمک برای فعالسازی می کند(شکل دستور به صورت TSN_ACTIVATION است.)
    • dll، کد سخت افزاری رایانه مشتری را بدست می آورد.
    • در یک پنجره کد موقت، سخت افزاری رایانه مشتری را به نمایش می گذارد.
    • و درخواست کد فعالسازی می کند.

در این هنگام مشتری باید این کد را به بخش پشتیبانی (برنامه نویس)، از طریق ایمیل، تلفن، تلگرام و ... انتقال دهد، تا کد فعالسازی دریافت کند، سپس کد فعالسازی را در محل مورد نظر تایپ یا Paste کند.


برنامه نویس برای صدور کد فعالسازی از نرم افزار TSN استفاده می کند.

کد موقت سخت افزاری مشتری را در نرم افزار در محل کد سخت افزاری که با کادر مشکی رنگ مشخص شده است وارد می کند، یا Paste می کند(برنامه نویس کد سخت افزاری مشتری را از طریق تلفن، ایمیل، یا تلگرام دریات نموده است.)

روی دکمه صدور کد فعالسازی کلیک می کند تا کد فعالسازی متناسب تولید شود.

سپس کد فعالسازی را به مشتری انتقال می دهد.(راههای انتقال مجدد نیز مانند راههای دریافت است: تلفن و ...)

مشتری (استفاده کننده از نرم افزار)، کد فعالسازی را در محل مناسب در پنجره ای -که در نرم افزارخودش مشاهده می کند- وارد خواهد کرد.


اگر کد فعالسازی وارد شده غلط باشد، فرآیند فعالسازی متوقف خواهد شد. و مثل این است که اصلا فعالسازی انجام نشده باشد.

اگر فرآیند فعالسازی موفقیت آمیز باشد، به صورت خودکار کد فعالسازی درست در رجیستری ویندوز به نام شرکت تولید کننده نرم افزار، و نرم افزار، ثبت خواهد شد تا در مراجعات بعدی نرم افزار  به dll، dll بتواند فعال بودن نرم افزار را تشخیص داده و به نرم افزار اطلاع دهد.


پس از فعالسازی،نرم افزار، هر گاه بخواهد ادامه کار بدهد، از dll این سئوال را در قالب یک Function می پرسد:

  • آیا فعالسازی انجام شده است؟(شکل دستور به صورت TSN_Act است.)
  • اکنون dll تنها یک پاسخ (درست/نادرست)، به نرم افزار ارسال خواهد کرد.
  • این پاسخ نتیجه فعالیتهایی به شرح زیر است:
    1. dll، کد سخت افزاری رایانه مشتری را بدست می آورد.
    2. dll، کدفعالسازی ذخیره شده در رجیستری ویندوز را بدست می آورد.
    3. dll، در یک فرمول کد سخت افزاری رایانه مشتری، کد سخت افزاری رایانه برنامه نویس و کد فعالسازی را با هم مقایسه می کند، اگر هماهنگی لازم برقرار باشد، پاسخ درست(True)، و در صورت ناهماهنگی پاسخ غلط (False)، را به نرم افزار ارسال می کند.

این نمایش(Powerpoint) را ببینید


مقدمه ای بر شماره سریال سخت افزاری رایانه:

هر قطعه از رایانه دارای یک یا چند شماره سریال یکتا است که بدون تکرار و تغییر ناپذیر می باشد. تغییر ناپذیر بودن شماره سریال ها به خصوص در برخی از ابزاهای اصلی رایانه مانند CPU و Motherboard و HDD هارد دیسک، امریست قطعی، چرا که اساس فروش و اعتبار اموال شرکت های تولید کننده و خریدارنی است که به اعتبار شرکت های تولید کننده سرمایه گذاری های کلان اقتصادی می کنند. بر همین اساس شماره سریال سخت افزاری هارد دیسک به عنوان مبنای صدور کد فعالسازی برای هر نرم افزار می تواند قرار بگیرد، و شماره سریال تولید شده برای فعالسازی نرم افزار بر مبنای کد سخت افزاری شماره سریال سخت افزاری رایانه، توسط تولید کننده نرم افزار به مشتریان ارائه می شود.

مقدمه ای بر DLL:

در کامپیوتر، DLL کد مخفف Dynamic Link Library است مجموعه ای از برنامه های کوچک است، که هر کدام می تواند توسط یک برنامه بزرگتر که در کامپیوتر در حال اجرا است احضار شود. برنامه کوچکی که به برنامه بزرگتر اجازه برقراری با جزای سخت افزاری رایانه را می دهد را میدهد. مزیت فایل های DLL این است که، از آنجا که آنها در حافظه کامپیوتر (RAM) با هم به همراه برنامه اصلی بارگذاری نــمی شوند، فضا در RAM صرفه جویی می شود. وقتی که یک فایل DLL نیاز است، بعد بارگذاری و اجرا می شود. به طور مثال تا مادامی که یک کاربر microsoft word ( یک برنامه پردازش کلمه که توسط شرکت microsoft به وجود امده است ) دارد یک سند (Document) را ویرایش می کند، فایل DLL چاپگر نیاز نیست تا در RAM بارگذاری شود. اگر کاربر تصمیم به پرینت گرفتن آن سند بگیرد، سپس برنامه کاربردی Word باعث می شود تا فایل DLL چاپگر بارگذاری و اجرا شود.

این ویژگی چندین مزیت دارد :

  • چون فایل های DLL فقط در هنگام نیاز، در حافظه بارگذاری می شوند، موجب اشغال غیرضروری حافظه ای نمی شوند
  • دوم اینکه برنامه نویسان می توانند بدون تاثیر روی برنامه فراخوان یا فایلهای DLL دیگر، فقط از دستوراتی که داخل آنها است استفاده کنند.
  • توابع DLL تنها با استفاده از برنامه‌ها و فایل‌های EXE می‌توانند اجرا شوند چون در آن‌ها می‌توان از توابع نام برده ویندوز (LoadLibrary و ...) استفاده کرد. بنابراین نمی‌توان به صورت مستقیم و بدون هیچ چیزی از توابع و منابع فایل DLL استفاده نمود.

توضیح درباره فرآیند کار نرم افزار TSN:

با این دو جمله توضیح را آغاز می کنیم که:

الف -  تولید کننده نرم افزار، در رایانه خودش نرم افزاری را تولید می کند. 

  ب -   مصرف کننده نرم افزار، در رایانه ای از نرم افزار تولید شده استفاده می کند.

  الف/1 - به رایانه ای که برنامه نویس از آن استفاده می کند Master می گوییم.

    ب/1 - به رایانه مشتری هم Cust می گوئیم.

به این ترتیب با دو کد سخت افزاری واقعی روبرو خواهیم بود، یکی کد سخت افزاری Master و یکی کد سخت افزاری Cust.


برنامه نویس:

  • ابتدا نرم افزار TSN در رایانه Master نصب می کند.
  • توسط نرم افزار TSN، یک فایل dll تولید می کند.
    • هنگام تولید(کامپایل) فایل dll، در رایانه Master برخی از اطلاعات درون فایل dll واقع خواهد شد، این اطلاعات شامل کد سخت افزاری رایانه Master نیز خواهد بود.
    • به این ترتیب فایل dll تولید شده، با نامی که خود برنامه نویس برای آن انتخاب خواهد کرد.
  • درون نرم افزاری که برنامه نویس آن را نوشته است با فراخوانی کدهای مخفی درون آن مورد استفاده واقع خواهد شد.
    • نحوه استفاده از کدها به دو شکل کاملا ساده است:
      1. دستوری که به این سئوال پاسخ می دهد :  آیا قبلا فعالسازی انجام شده است؟
      2. دستوری که عملیات فعالسازی را انجام می دهد.
      3. به این ترتیب برنامه نویس تنها بر روی نرم افزار خود تمرکز می کند، و عملیات فعالسازی را به dll مربوطه واگذار خواهد کرد.
      4. در مواقعی که لازم باشد بداند آیا مشتری از نرم افزار فعالسازی شده استفاده می کند یا نه، دستور یا  تابع  (آیا قبلا فعالسازی انجام  شده است؟) را از فایل dll فراخوانی می کند.
  • پس از اتمام کار برنامه نویسی فایل dll تولید شده همراه نرم افزار تولید شده به رایانه Cust منتقل و نصب خواهد شد.
    • معمولا فایل های dll درون فولدر سیستمی معروف به System32 در رایانه های با سیستم عامل ویندوز 32 بیتی(و معروف به SYSWOW64 در رایانه های با سیستم عامل ویندوز 64 بیتی) قرار داده می شوند، اما می توان این فایلها را در هر فولدری از رایانه مثلا کنار خود نرم افزار (در فولدری که نرم افزار در آن نصب شده است) نیز قرار داد.

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

  • همانطور که گفته شده هنگام نصب نرم افزاری که برنامه نویس آنرا تهیه کرده است، فایل dll کامپایل(تولید) شده، در رایانه مشتری واقع خواهد شد.
  • فایل dll هنگام فراخوانی شماره سریال سخت افزاری رایانه Cust را مورد بررسی قرار خواهد داد.
  • به این ترتیب اگر فرآیند فعالسازی هنوز انجام نشده باشد، پاسخ سئوال نرم افزار از dll، خیر(False)، خواهد بود.
  • اگر مشتری تصمیم داشته باشد فرآیند فعالسازی را انجام دهد، اینکار توسط dll به صورت کامل انجام خواهد شد.
  • به این ترتیب نرم افزار با توجه به نتیجه و پاسخ دستور (آیا قبلا فعالسازی انجام  شده است؟) ادامه کار خواهد داد.
  • منظور این است که اگر پاسخ خیر(False)، باشد: برخی از امکانات نرم افزار مسدود خواهد شد، و اگر پاسخ (True)، باشد، تمام امکانات نرم افزار در اختیار مشتری قرار داده خواهد شد. 

اولین سئوالی که پس مطالعه مطالب بالا برای برنامه نویس پیش می آید، این سئوال است:

آیا می توان به این فرآیند اطمینان کرد؟

چگونه به درستی این فرآیند، اطمینان کنم؟

پاسخ: خودتان امتحان کنید.

توضیح:چگونه به درستی این فرآیند dll، اطمینان کنم؟

برای آزمودن نرم افزار گام های زیر کافی است:

  1. نرم افزار را از اینجا دانلود کنید.
  2. نرم افزار را نصب کنید.
  3. هنگام نصب نرم افزار نام کمپانی، شرکت و موسسه برنامه نویسی، و نام نرم افزار تولیدی خود را وارد کنید.اینکار به جهت نگهداری کدفعالسازی نرم افزار در رایانه مشتری اهمیت دارد.
  4. پس از نصب نرم افزار TSNآیکن نرم افزار در دسکتاپ قرار خواهد گرفت، وارد نرم افزار شوید.

متناسب با اینکه می خواهید چه نوع dll ی تولید کنید روی یکی از دکمه های 32 بیتی یا 64 بیتی کلیک کنید.

  • این دکمه یک فایلDLL از نوع  32 بیتی، برای استفاده در ویندوز 32 بیتی تولید می کند.
  • این دکمه یک فایلDLL از نوع  64 بیتی، برای استفاده در ویندوز 64 بیتی تولید می کند. 
  • نام و مسیر فایل DLL مورد نظرتان را در پنجره باز شده تعیین کنید.
  • در پایان پس از تولید فایل در این پنجره   نام و مسیر کامل فایل DLL تولید شده، به نمایش گذاشته می شود.
  • می توانید این عبارت را کپی کنید و درون نرم افزار هنگام تعریف DLL در نرم افزارتان از آن استفاده کنید.
  • به این ترتیب فایلی پدید خواهد آمد که می تواند سرویس های فعالسازی نرم افزار شما را تامین کند.
  • از آنجا که این فایل در رایانه Master تولید شده است، حاوی اطلاعاتی خواهد بود که کد فعالسازی نرم افزار را تنها از این رایانه دریافت خواهد کرد.
    • هیچ رایانه ی دیگری نمی تواند برای رایانه Cust کد فعالسازی تولید کند.
  • اکنون متناسب با اینکه با چه نرم افزاری می خواهید از این DLL استفاده کنید می توانید در مثال های زیر کدهای نمونه را برای تعریف dll و استفاده در نرم افزارتان کپی برداری کنید.
  • Excel  در ویندوز 32 بیتی.
  • Excel  در ویندوز 64 بیتی.
  • اکنون باید دو تابع TSN_ACT و TSN_ACTIVATION  را مورد آزمایش قرار دهید.
    • قبل از استفاده از توابع باید آنها را در نرم افزار بدرستی تعریف کنید، هنگام تعریف dll توجه به موارد زیر ضروریست.
      • تعریف dll ها در نرم افزارهای مختلف با scriptها متفاوت انجام می شود.
      • مسیر فایل dll باید به درستی تعیین شود(مثلا در مثال بالا فایل dll تولید شده در آدرس: C:\Users\Username\Documents\dllfile.dll تعیین مسیر شده است)
      • توجه داشته باشید که dll ها باید در رایانه مشتری با ویندوز 32 بیتی در فولدر C:\Windows\System32 واقع شوند، بنابراین در استفاده نهایی از نرم افزار باید دقت کرد.
      • توجه داشته باشید که dll ها باید در رایانه مشتری با ویندوز 64 بیتی در فولدر C:\Windows\SYSWOW64 واقع شوند، بنابراین در استفاده نهایی از نرم افزار باید دقت کرد.
    • تابع TSN_ACT را از درون یک Sub یا Function فراخوانی کنید، مقدار برگشتی این تابع 0 یا False خواهد بود- چون هنوز فعالسازی نرم افزار انجام نشده است.
    • تابع TSN_ACTIVATION را از درون یک Sub یا Function فراخوانی کنید، این تابع موجب نمایش پنجره ای به شکل زیر درون نرم افزار شما خواهد شد:
    • همانطور که مشاهده می کنید، این اطلاعات در پنجره ملاحظه می شود.
      • نام شرکت، موسسه، کمپانی تولید نرم افزار Company، که می توانید توسط نرم افزار TSN هنگام تولید فایل dll این مقدار را تعیین کنید.
      • نام نرم افزار تولید شده SoftwareName، که می توانید توسط نرم افزار TSN هنگام تولید فایل dll این مقدار را تعیین کنید.
      • کد موقت سخت افزاری- این کد برای نرم افزار TSN دارای مفهوم است.
        • هر چند ممکن است با هر بار اجرای این dll کد سخت افزاری متفاوتی نمایش داده شود، اما این کد برای نرم افزار TSN در رایانه ی Master کاملا به یک معنی خواهد بود؛ بنابراین کافی است یکی از این کدها به نرم افزار TSN اعلام شود تا در تفسیر کد و مشخصات سخت افزاری رایانه Cust نتیجه گیری منطق نماید.
      • همچنین قسمتی در این پنجره وجود دارد که از کاربر کد فعالازی را طلب می کند.
      • چنانچه کاربر کدفعالسازی را از صاحب اثر و تولید کننده نرم افزار تهیه کند، و در این کارد Paste یا type کند، نرم افزار کد فعالازی را به نام Company و Software در رایانه Cust ذخیره می کند و در رجوع های بعدی به تابع قبلی یعنی (تابع TSN_ACT ، مقدار برگشتی این تابع 1 یا True خواهد بود)
    • به این ترتیب این dll قدرت حفظ و نگهداری کدفعالسازی را نیز در رایانه دارد.
  • در ادامه تصمیم داریم یک کدفعالسازی برای نرم افزار در رایانه Cust تولید کنید به نحوی که پس از ورود کد فعالسازی درست مقدار برگشتی هنگام فراخوانی تابع TSN_ACT ، مقدار 1 یا True باشد.
      • شما می توانید از نرم افزار TSN برای رایانه ای که به صورت Master تولید dll می کند کد فعالسازی تولید کنید. به این ترتیب برای آزمودن نرم افزار TSN در تولید dll و استفاده از dll در رایانه خود هیچ محدودیتی نخواهید داشت.اما برای تهیه کدفعالسازی برای رایانه ای بجز رایانه Master که به عنوان Cust حقیق مطرح است باید برای نرم افزار TSN کدفعالسازی تهیه کنید.
      • وارد نرم افزار TSN شوید و کدی را که در پنجه dll هنگام اجرای نرم افزار به شما اعلام شده بود را در نرم افزار TSN به نرم افزار معرفی کنید.
      • برای اینکار می توانید از دکمه Paste استفاده کنید.
      • اکنون برای تولید کد فعالسازی برای مشتری فرضی خود روی دکمه کلیک کنید.
      • به این ترتیب از آنجا که dll تولید شده شما در همین رایانه مورد استفاده قرار گرفته است، و کد سخت افزاری دقیقا این مفهوم را به TSN القا می کند. کد فعالسازی برای استفاده از این dll به نمایش گذاشته خواهد شد. که می توانید این کد را توسط دکمه Copy به حافظه منتقل کنید و هنگام فراخوانی تابع فعالسازی به پنجره درخواست کدفعالسازی تحویل دهید.
        • نکاتی که در اینجا وجود دارد و برای جلب اطمینان شما کارشناس محترم به نرم افزار TSN به آنها اشاره می کنیم:
          1. همانطور که ملاحظه می کنید، تولید کد فعالسازی برای dllی که در همین رایانه تولید کد سخت افزاری نموده است، در نرم افزار TSN حتی بدون فعالسازی میسر گردیده، این موضوع نشان می دهد که از کد سخت افزاری موقت نرم افزار TSN این موضوع را تحلیل و درک نموده است. شما می توانید از همین dll در یک رایانه دیگر استفاده کنید. و کد سخت افزاری آنرا به نرم افزار TSN درحالیکه هنوز TSN فعالسازی نشده است بدهید تا ملاحظه کنید که برای کد سخت افزاری رایانه دیگر، کد فعالسازی تولید نخواهد کرد، چونکه نرم افزار تشخیص می دهد که شما در حال استفاده کاربردی از آن هستید و دربرابر استفاده کاربردی بدون فعالسازی مقاومت می کند، 
          2. پس از فعالسازی نرم افزار TSN م یتوانید برای کدهای سخت افزاری تولید شده توسط dll خودتان در رایانه های دیگر به تعداد نامحدود کد فعالسازی تولید کنید.
          3. کدفعالسازی برای dll مفاهیم زیر را در برخواهد داشت:
            • کدسخت افزاری Master
            • کدسخت افزاری Cust
            • بنابراین از آنجا که کد سخت افزاری Master داخل dll هنگام کامپایل قرار گرفته است، در تحلیل کدهای سخت افزاری مجموعه دستورات موجود در dll هنگام فعالسازی موارد منطقی زیر را لحاظ خواهد نمود:
              • کد فعالسازیی که توسط رایانه ی دیگری بجز (رایانه Mastrی که فایل dll را تولید کرده است)، تولید شده باشد پذیرفته نخواهد شد.
              • و شروط دیگر 
          4. برای بررسی کارشناسانه خودتان پس از آزمودن نرم افزار در یک رایانه مسلما شما نیاز به آزمودن نرم افزارتان در دو یا چند رایانه خواهید داشت.
          5. در صورت کافی نبودن توضیحات بالا تماس بگیرید: 09105363463 و 09351449983 : پاسخگو طوافی و مهندس اسماعیلی
      • .
      • پس از دریافت کد فعالسازی و ورود آن به کادر
        • روی دکمه Activation کلیک کنید، به این ترتیب نرم افزار در این رایانه فعال خواهد شد.
        • در دفعات بعد فراخوانی تابع  TSN_ACT ، مقدار برگشتی 1 یا True را باز خواهد گرداند.

توضیح درباره ی راههایی برای افزایش ضریب اطمینان، در استفاده از dll وجود دارد؟

راههایی برای جلوگیری از هک نرم افزار شما:

!شرح نرم افزار مدیریت قفل نرم افزاری: روش های هک و کرک و جلوگیری از آن

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

این نمایش(Powerpoint) را ببینید


نمونه کدهای بهره برداری از DLL در نرم افزارهای گوناگون:

فهرست کدها:


    Excel  در ویندوز 32 بیتی

    این کدهای برای تمام نرم افزارهای Microsoft Office که با VBA کار می کنند کاربرد دارد

    از جمله: Word، Powerpoint , Access:

    Public Declare Function TSN_ACT Lib "C:\Windows\System32\dllfile32.dll" () As Boolean
    Public Declare Function TSN_ACTIVATION Lib "C:\Windows\System32\dllfile32.dll" () As Boolean

    Sub check_active()
                  If TSN_ACT() Then
                                MsgBox "ACTIVATED", vbInformation, "My Company Name"
                  Else
                                MsgBox "not ACTIVATED", vbCritical, "My Company Name"
                  End If
    End Sub

    Sub Activation()
                  TSN_ACTIVATION
    End Sub


    Excel  در ویندوز 64 بیتی

    این کدهای برای تمام نرم افزارهای Microsoft Office که با VBA کار می کنند کاربرد دارد

    از جمله: Word، Powerpoint , Access:

    Public Declare PtrSafe Function TSN_ACT Lib "C:\Windows\SYSWOW64\dllfile64.dll" () As Boolean
    Public Declare PtrSafe Function TSN_ACTIVATION Lib "C:\Windows\SYSWOW64\dllfile64.dll" () As Boolean
    Sub check_active()
                  If TSN_ACT() Then
                                MsgBox "ACTIVATED", vbInformation, "My Company Name"
                  Else
                                MsgBox "not ACTIVATED", vbCritical, "My Company Name"
                  End If
    End Sub
    Sub Activation()
                  TSN_ACTIVATION
    End Sub


    به کارگیری DLL در زبان های دیگر (متعارفترین زبان ها)

    javascript

    var to_return = $.ajax({
             type: "POST",
             url: "Default.aspx/CallMe", //CallMe is WebService method
             data: "{}", // parameter to pass
             async: false,
             contentType: "application/json; charset=utf-8",
             dataType: "json",
         });
    
         alert(to_return.responseText);

    java

    package jnahelloworldtest;
    
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.NativeLong;
    import com.sun.jna.Platform;
    import com.sun.jna.*;
    
    /** Simple example of native library declaration and usage. */
    public class Main {
        public interface simpleDLL extends Library {
            simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary(
                (Platform.isWindows() ? "simpleDLL" : "simpleDLLLinuxPort"), simpleDLL.class);
            // it's possible to check the platform on which program runs, for example purposes we assume that there's a linux port of the library (it's not attached to the downloadable project)
            byte giveVoidPtrGetChar(Pointer param); // char giveVoidPtrGetChar(void* param);
            int giveVoidPtrGetInt(Pointer param);   //int giveVoidPtrGetInt(void* param);
            int giveIntGetInt(int a);               // int giveIntGetInt(int a);
            void simpleCall();                      // void simpleCall();
        }
    
        public static void main(String[] args) {
    
            simpleDLL sdll = simpleDLL.INSTANCE;
    
            sdll.simpleCall();  // call of void function
    
            int a = 3;
            int result1 = sdll.giveIntGetInt(a);  // calling function with int parameter&result
            System.out.println("giveIntGetInt("+a+"): " + result1);
    
            String testStr = "ToBeOrNotToBe";
            Memory mTest = new Memory(testStr.length()+1);  // '+1' remember about extra byte for \0 character!
            mTest.setString(0, testStr);
            String testReturn = mTest.getString(0); // you can see that String got properly stored in Memory object
            System.out.println("String in Memory:"+testReturn);
    
            Memory intMem = new Memory(4);  // allocating space
            intMem.setInt(0, 666); // setting allocated memory to an integer
            Pointer intPointer = intMem.getPointer(0);
    
            int int1 = sdll.giveVoidPtrGetInt(Pointer.NULL); // passing null, getting default result
            System.out.println("giveVoidPtrGetInt(null):" + int1); // passing int stored in Memory object, getting it back
            int int2 = sdll.giveVoidPtrGetInt(intMem);
           //int int2 = sdll.giveVoidPtrGetInt(intPointer);  causes JVM crash, use memory object directly!
            System.out.println("giveVoidPtrGetInt(666):" + int2);
    
            byte char1 = sdll.giveVoidPtrGetChar(Pointer.NULL);  // passing null, getting default result
            byte char2 = sdll.giveVoidPtrGetChar(mTest);        // passing string stored in Memory object, getting first letter
    
            System.out.println("giveVoidPtrGetChar(null):" + (char)char1);
            System.out.println("giveVoidPtrGetChar('ToBeOrNotToBe'):" + (char)char2);
    
        }
    }

    Ruby

    require 'fiddle'
    
    libm = Fiddle.dlopen('/lib/libm.so.6')
    
    floor = Fiddle::Function.new(
      libm['floor'],
      [Fiddle::TYPE_DOUBLE],
      Fiddle::TYPE_DOUBLE
    )
    
    puts floor.call(3.14159) #=> 3.0

    or

    require 'fiddle'
    require 'fiddle/import'
    
    module Logs
      extend Fiddle::Importer
      dlload '/usr/lib/libSystem.dylib'
      extern 'double log(double)'
      extern 'double log10(double)'
      extern 'double log2(double)'
    end
    
    # We can call the external functions as if they were ruby methods!
    puts Logs.log(10)   # 2.302585092994046
    puts Logs.log10(10) # 1.0
    puts Logs.log2(10)  # 3.321928094887362

    Python

    import ctypes
    
    # Load DLL into memory.
    
    hllDll = ctypes.WinDLL ("c:\\PComm\\ehlapi32.dll")
    
    # Set up prototype and parameters for the desired function call.
    # HLLAPI
    
    hllApiProto = ctypes.WINFUNCTYPE (
        ctypes.c_int,      # Return type.
        ctypes.c_void_p,   # Parameters 1 ...
        ctypes.c_void_p,
        ctypes.c_void_p,
        ctypes.c_void_p)   # ... thru 4.
    hllApiParams = (1, "p1", 0), (1, "p2", 0), (1, "p3",0), (1, "p4",0),
    
    # Actually map the call ("HLLAPI(...)") to a Python name.
    
    hllApi = hllApiProto (("HLLAPI", hllDll), hllApiParams)
    
    # This is how you can actually call the DLL function.
    # Set up the variables and call the Python name with them.
    
    p1 = ctypes.c_int (1)
    p2 = ctypes.c_char_p (sessionVar)
    p3 = ctypes.c_int (1)
    p4 = ctypes.c_int (0)
    hllApi (ctypes.byref (p1), p2, ctypes.byref (p3), ctypes.byref (p4))

    PHP

    you do the following in your command line:

    REGSVR32 MyStuff.dll

    Now that the dll is registered you can do the following to start accessing the dll:

    $my_dll = new COM(‘MyStuff.Functions’);

    MyStuff is the dll name an/or id and Functions is the object inside the dll that we want to use. Now I call the method I need and pass the parameters:

    $encrypted_text = null;
    $input = ‘This needs to be encrypted.’;
    $my_dll->EncryptString($input$encrypted_text );

    This is pretty much it. We instantiate the COM class with the dll and function I want. Then I call the method in the dll passing my text and it returns into my $encrypted_text var the encrypted text. I can now do my next process with the encrypted text like:

    print $encrypted_text;

    Cو ++C

    // MathLibrary.h - Contains declaration of Function class  
    #pragma once  
    
    #ifdef MATHLIBRARY_EXPORTS  
    #define MATHLIBRARY_API __declspec(dllexport)   
    #else  
    #define MATHLIBRARY_API __declspec(dllimport)   
    #endif  
    
    namespace MathLibrary  
    {  
        // This class is exported from the MathLibrary.dll  
        class Functions  
        {  
        public:  
            // Returns a + b  
            static MATHLIBRARY_API double Add(double a, double b);  
    
            // Returns a * b  
            static MATHLIBRARY_API double Multiply(double a, double b);  
    
            // Returns a + (a * b)  
            static MATHLIBRARY_API double AddMultiply(double a, double b);  
        };  
    }  
    
    


    #C

    Depends on what type of DLL. Is this built in .NET ? if it is unmanaged code then here is an example otherwise the Answer from Rob will work.

    Unmanaged C++ dll example:

    using System;
    using System.Runtime.InteropServices;

    You may need to use DllImport

    [DllImport(@"C:\Cadence\SPB_16.5\tools\bin\mpsc.dll")]
    static extern void mpscExit();

    or

    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

    Then each of those are called like this:

    // a specific DLL method/function call
    mpscExit();
    // user32.dll is Microsoft, path not needed
    MessageBox(new IntPtr(0), "Test", "Test Dialog", 0);


    (Objective_C  (Swift

    enum FileReadableStreamError : Error {
    case failedOnRead
    }
    
    // Some help from: http://stackoverflow.com/questions/38983277/how-to-get-bytes-out-of-an-unsafemutablerawpointer
    // and https://gist.github.com/kirsteins/6d6e96380db677169831
    override func readBytes(size:UInt32) throws -> [UInt8]? {
        guard let unsafeMutableRawPointer = malloc(Int(size)) else {
            return nil
        }
    
        let numberBytesRead = read(fd, unsafeMutableRawPointer, Int(size))
    
        if numberBytesRead < 0 {
            free(unsafeMutableRawPointer)
            throw FileReadableStreamError.failedOnRead
        }
    
        if numberBytesRead == 0 {
            free(unsafeMutableRawPointer)
            return nil
        }
    
        let unsafeBufferPointer = UnsafeBufferPointer(start: unsafeMutableRawPointer.assumingMemoryBound(to: UInt8.self), count: numberBytesRead)
    
        let results = Array<UInt8>(unsafeBufferPointer)
        free(unsafeMutableRawPointer)
    
        return results
    }

    SQL

    First of all you need to create assembly in Sql Server as

    Your DataBase -> Programming -> Assembles -> Create Assembly

    And next you need to create sql function to wrap your assembly method like this:

    CREATE FUNCTION [dbo].[fn_funcName](@str [varchar](max))
    RETURNS 
       varchar(max) 
    WITH EXECUTE AS CALLER
    AS 
    EXTERNAL NAME [YourSqlAssemblyName].[YourAssemblyName.Class1].[GetName]

    VB.net

       Dim s As New CSecurityCheck
        s.AppPath = Application.StartupPath()
        If Not s.DateIsValidated Then
            s = Nothing
            End
        End If
        mRegisteredUser = s.RegisteredUser
        mDaysRemaining = s.DaysRemaining
        s = Nothing