Tavvafi@gmail.com |
این نرم افزار :
این نرم افزار dllی تولید می کند که می توانید توسط آن برای نرم افزارتان قفل نرم افزاری تولید کنید.همچنین مدیریت کدفعالسازی را نیز برای شما انجام می دهد.
این نرم افزار برای شما dllی تولید می کند که به صورت اختصاصی به سخت افزار رایانه ی شما حساس خواهد بود، و وقتی به رایانه ای منتقل شود بر اساس فرمولی بر پایه کد سخت افزاری رایانه شما و کد سخت افزاری رایانه مشتری کد فعالسازی برای نرم افزار شما تولید و درخواست می کند.- و پس از تطبیق کد فعالسازی با آنچه که به عنوان کد فعالسازی دریافت می کند پیامی مناسب به نرم افزار فراخواننده ارسال می کند، تا به این ترتیب برنامه نویس بتواند برای ادامه کار نرم افزار خودش برنامه ریزی کند- می توان گفت برنامه نویس از مدیریت کدهای پیچیده سخت افزاری فاصله خواهد گرفت تا فراق خاطر به مباحث مربوط به مدیریت نرم افزار خود بپرازد- به همین دلیل این نرم افزار ویژه برنامه نویسان طراحی شده است. این نرم افزار می تواند دو نوع DLL از نوع 64 بیتی و 32 بیتی تولید کند تا با کامپایلرهای 32 بیتی و 64 بیتی رابطه برقرار کند. همچنین به سادگی قابل استفاده است، چون تنها دارای دو فانکشن(Function) اصلی است، که بدون هیچ پارامتری مورد استفاده قرار می گیرد و مقدار برگشتی توابع نیز بسیار ساده(True/False) است.
این نرم افزار ضمن تولید کدفعالسازی برای مشتریان در رایانه برنامه نویس، قابلیت ذخیره و نگهداری کدفعالسازی صحیح را در رایانه مشتری(در بخش رجیستری Registry ویندوز) فراهم می کند. بنابراین تمامی کارهای لازم، در این DLL، مدیریت خواهد شد.
این نمایش(Powerpoint) را ببینید
این نمایش(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 تولید شده، با نامی که خود برنامه نویس برای آن انتخاب خواهد کرد.
- درون نرم افزاری که برنامه نویس آن را نوشته است با فراخوانی کدهای مخفی درون آن مورد استفاده واقع خواهد شد.
- نحوه استفاده از کدها به دو شکل کاملا ساده است:
- دستوری که به این سئوال پاسخ می دهد : آیا قبلا فعالسازی انجام شده است؟
- دستوری که عملیات فعالسازی را انجام می دهد.
- به این ترتیب برنامه نویس تنها بر روی نرم افزار خود تمرکز می کند، و عملیات فعالسازی را به dll مربوطه واگذار خواهد کرد.
- در مواقعی که لازم باشد بداند آیا مشتری از نرم افزار فعالسازی شده استفاده می کند یا نه، دستور یا تابع (آیا قبلا فعالسازی انجام شده است؟) را از فایل dll فراخوانی می کند.
- نحوه استفاده از کدها به دو شکل کاملا ساده است:
- پس از اتمام کار برنامه نویسی فایل dll تولید شده همراه نرم افزار تولید شده به رایانه Cust منتقل و نصب خواهد شد.
- معمولا فایل های dll درون فولدر سیستمی معروف به System32 در رایانه های با سیستم عامل ویندوز 32 بیتی(و معروف به SYSWOW64 در رایانه های با سیستم عامل ویندوز 64 بیتی) قرار داده می شوند، اما می توان این فایلها را در هر فولدری از رایانه مثلا کنار خود نرم افزار (در فولدری که نرم افزار در آن نصب شده است) نیز قرار داد.
استفاده کننده از نرم افزار (مشتری):
- همانطور که گفته شده هنگام نصب نرم افزاری که برنامه نویس آنرا تهیه کرده است، فایل dll کامپایل(تولید) شده، در رایانه مشتری واقع خواهد شد.
- فایل dll هنگام فراخوانی شماره سریال سخت افزاری رایانه Cust را مورد بررسی قرار خواهد داد.
- به این ترتیب اگر فرآیند فعالسازی هنوز انجام نشده باشد، پاسخ سئوال نرم افزار از dll، خیر(False)، خواهد بود.
- اگر مشتری تصمیم داشته باشد فرآیند فعالسازی را انجام دهد، اینکار توسط dll به صورت کامل انجام خواهد شد.
- به این ترتیب نرم افزار با توجه به نتیجه و پاسخ دستور (آیا قبلا فعالسازی انجام شده است؟) ادامه کار خواهد داد.
- منظور این است که اگر پاسخ خیر(False)، باشد: برخی از امکانات نرم افزار مسدود خواهد شد، و اگر پاسخ (True)، باشد، تمام امکانات نرم افزار در اختیار مشتری قرار داده خواهد شد.
اولین سئوالی که پس مطالعه مطالب بالا برای برنامه نویس پیش می آید، این سئوال است:
آیا می توان به این فرآیند اطمینان کرد؟
چگونه به درستی این فرآیند، اطمینان کنم؟
پاسخ: خودتان امتحان کنید.
توضیح:چگونه به درستی این فرآیند dll، اطمینان کنم؟
برای آزمودن نرم افزار گام های زیر کافی است:
- نرم افزار را از اینجا دانلود کنید.
- نرم افزار را نصب کنید.
- هنگام نصب نرم افزار نام کمپانی، شرکت و موسسه برنامه نویسی، و نام نرم افزار تولیدی خود را وارد کنید.اینکار به جهت نگهداری کدفعالسازی نرم افزار در رایانه مشتری اهمیت دارد. پس از نصب نرم افزار 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 قدرت حفظ و نگهداری کدفعالسازی را نیز در رایانه دارد.
- قبل از استفاده از توابع باید آنها را در نرم افزار بدرستی تعریف کنید، هنگام تعریف dll توجه به موارد زیر ضروریست.
- در ادامه تصمیم داریم یک کدفعالسازی برای نرم افزار در رایانه Cust تولید کنید به نحوی که پس از ورود کد فعالسازی درست مقدار برگشتی هنگام فراخوانی تابع TSN_ACT ، مقدار 1 یا True باشد.
- شما می توانید از نرم افزار TSN برای رایانه ای که به صورت Master تولید dll می کند کد فعالسازی تولید کنید. به این ترتیب برای آزمودن نرم افزار TSN در تولید dll و استفاده از dll در رایانه خود هیچ محدودیتی نخواهید داشت.اما برای تهیه کدفعالسازی برای رایانه ای بجز رایانه Master که به عنوان Cust حقیق مطرح است باید برای نرم افزار TSN کدفعالسازی تهیه کنید.
- وارد نرم افزار TSN شوید و کدی را که در پنجه dll هنگام اجرای نرم افزار به شما اعلام شده بود را در نرم افزار TSN به نرم افزار معرفی کنید.
- برای اینکار می توانید از دکمه Paste استفاده کنید.
- اکنون برای تولید کد فعالسازی برای مشتری فرضی خود روی دکمه کلیک کنید.
- به این ترتیب از آنجا که dll تولید شده شما در همین رایانه مورد استفاده قرار گرفته است، و کد سخت افزاری دقیقا این مفهوم را به TSN القا می کند. کد فعالسازی برای استفاده از این dll به نمایش گذاشته خواهد شد. که می توانید این کد را توسط دکمه Copy به حافظه منتقل کنید و هنگام فراخوانی تابع فعالسازی به پنجره درخواست کدفعالسازی تحویل دهید.
- نکاتی که در اینجا وجود دارد و برای جلب اطمینان شما کارشناس محترم به نرم افزار TSN به آنها اشاره می کنیم:
- همانطور که ملاحظه می کنید، تولید کد فعالسازی برای dllی که در همین رایانه تولید کد سخت افزاری نموده است، در نرم افزار TSN حتی بدون فعالسازی میسر گردیده، این موضوع نشان می دهد که از کد سخت افزاری موقت نرم افزار TSN این موضوع را تحلیل و درک نموده است. شما می توانید از همین dll در یک رایانه دیگر استفاده کنید. و کد سخت افزاری آنرا به نرم افزار TSN درحالیکه هنوز TSN فعالسازی نشده است بدهید تا ملاحظه کنید که برای کد سخت افزاری رایانه دیگر، کد فعالسازی تولید نخواهد کرد، چونکه نرم افزار تشخیص می دهد که شما در حال استفاده کاربردی از آن هستید و دربرابر استفاده کاربردی بدون فعالسازی مقاومت می کند،
- پس از فعالسازی نرم افزار TSN م یتوانید برای کدهای سخت افزاری تولید شده توسط dll خودتان در رایانه های دیگر به تعداد نامحدود کد فعالسازی تولید کنید.
- کدفعالسازی برای dll مفاهیم زیر را در برخواهد داشت:
- کدسخت افزاری Master
- کدسخت افزاری Cust
- بنابراین از آنجا که کد سخت افزاری Master داخل dll هنگام کامپایل قرار گرفته است، در تحلیل کدهای سخت افزاری مجموعه دستورات موجود در dll هنگام فعالسازی موارد منطقی زیر را لحاظ خواهد نمود:
- کد فعالسازیی که توسط رایانه ی دیگری بجز (رایانه Mastrی که فایل dll را تولید کرده است)، تولید شده باشد پذیرفته نخواهد شد.
- و شروط دیگر
- برای بررسی کارشناسانه خودتان پس از آزمودن نرم افزار در یک رایانه مسلما شما نیاز به آزمودن نرم افزارتان در دو یا چند رایانه خواهید داشت.
- در صورت کافی نبودن توضیحات بالا تماس بگیرید: 09105363463 و 09351449983 : پاسخگو طوافی و مهندس اسماعیلی
- نکاتی که در اینجا وجود دارد و برای جلب اطمینان شما کارشناس محترم به نرم افزار TSN به آنها اشاره می کنیم:
- . پس از دریافت کد فعالسازی و ورود آن به کادر
- روی دکمه 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:
Now that the dll is registered you can do the following to start accessing the dll:
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:
$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:
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