سلام
با توجه به علاقه و استقبال شدید دوستان در مبجث اجرایی نمودن قالب بانک اطلاعاتی اکسس لازم دونستم مطلب رو در این تاپیک بصورت مجزا ادامه بدم. از دوستان خواهشمندم از سوالات متفرقه در این تاپیک خودداری کنند تا بتونیم مطلب رو به صورت کامل و دقیق با نظرخواهی دوستان ادامه بدیم.
در تاپیک جناب آقای فلاح (نحوه بدست آوردن کد ماشین را بیان نمائید) تکنیک های استفاده شده در برنامه بصورت زیر بیان شد.
ساخت فایل exe با برنامه AutoIt v3 که شما می توانید اون رو از مسیر زیر دانلود کنید :
http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe

پس از دانلود؛ برنامه را نصب کنید.
روش ایجاد یک فایل Script با برنامه بصورت زیر است :
همانند ایجاد یک Folder در قسمت خالی محیط کارتان کلیک راست کنید و گزینه New را انتخاب کنید. پس از باز شدن زیر منوی New گزینه AutoIt v3 Script را انتخاب کنید. سپس با ایجاد فایل New AutoIt v3 Script.au3 بر روی آن کلیک راست نموده و گزینه Edit را انتخاب کنید.
با انتخاب گزینه فوق یک محیط مشابه NotePad باز می شود. اکنون کدهای زیر را در محیط فوق تایپ کیند:

$var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win dows\CurrentVersion", "ProgramFilesDir")

$Txt = '"' & $var & "\Microsoft Office\Office11\Msaccess.exe" & '"' & " " & '"' & @ScriptDir & "\Register.pip" & '"'

$Lev = @ScriptDir & "\LevelS.exe"

Run($Lev,"",@SW_HIDE)

Run($Txt,"",@SW_HIDE)


جناب آقای M.Javad نیز کد زیر رو پیشنهاد نمودند که جای تشکر دارد.

Func OpenFile($extention, $file)
$CodeName = RegRead("HKEY_CLASSES_ROOT\"&$extention, "")
$thingtorun = RegRead("HKEY_CLASSES_ROOT\"&$CodeName&"\shell\Ope n\command", "")
$thingtorun = StringReplace($thingtorun, "%1", $file)
If Not @extended Then $thingtorun = $thingtorun & " " & $file
Run($thingtorun)
EndFunc


;Open File
OpenFile(".mdb", @ScriptDir &"\MehrCO ( V.3.1.1).mdb")


دقت کنید که Register.pip نام بانک اطلاعاتی است که شما باید نام برنامه خود را قرار دهید همانطور که مشاهده می کنید من انشعابش رو تغییر دادم شما نیز به دلخواه می تونید غیر از فرمت mdb یا mde از سایر پسوندها استفاده کنید.

LevelS.exe که در مسیر برنامه قرار دارد در حقیقت با اجرای اون سکیوریتی اکسس قبل از ورود به Low تغییر پیدا می کنه و اکسس پیامی را جهت تایید نمایش نمی دهد.

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

فایل مورد نظر را با نام دلخواه ذخیره کنید.

جهت تبدیل به فرمت exe از فایل Compile Script to .exe در مسیر برنامه استفاده کنید.

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

مشکلاتی که دوستان در مطرح نمودند بجا و قابل حل شدن هست برخی از این مشکلات عبارت بود از :

1- پس از اجرای فایل اکسس آیکون فایل اکسس با پسوند ldb که همیشه همراه فایلهای باز شده اکسس هست، خود نمایی میکنه.
راه حل : نکته اینجا هست وقتی برنامه در قالب Open Exclusive از طریق File>Open باز می شه دیگه خبری از فایل ldb نیست. ولی وقتی برنامه بصورت پیش فرض در این حالت باز می شه دوباره فایل ldb ساخته می شه
(برای اینکه برنامه بصورت Open Exclusive پیش فرض بشه کافی هست از منوی Tools گزینه Option را انتخاب کرده سپس از سربرگ Advanced گزینه Exclusive را انتخاب کنید.)

2- فایل exe در حقیقت رابط بین برنامه شما و برنامه اکسس هست که بصورت مخفیانه برنامه رو در اکسس فراخوانی می کنه حالا اگر اکسس نصب نباشه پیام خطا صادر می شه. من دو راه رو پیشنهاد میدم :
الف) فایل exe بیاد چک کنه که اکسس نصب هست یا نه؟ اگر نبود پیام مبنی بر نصب اکسس صادر بشه.
ب) فایل Microsoft Access 2003 (Office version 11) run-time در کنار برنامه باشه تا اگر اکسس نصب نباشه بصورت خودکار نصب بشه.
برای دانلود فایل run-time از سایت زیر استفاده کنید.
http://download.capix.net/


3- وجود فایل exe در کنار برنامه یک حسن اجرایی بزرگ هست. دوستان برای انتشار و اجرای اون می تونند از نرم افزارهای Installer مثل Install Creator Pro و سایر نرم افزارها استفاده کنند.

4- دقت کنید که برای تغییر سکیوریتی اکسس باید فایل Levels در کنار برنامه باشه و توسط فایل exe فراخوانی بشه. دوستان اگر مهارتی در برنامه نویسی Autoit دارند کد اجرایی تغییر Level رو اسکریپت نویسی کنند.

دوستان می تونند نظرات و راه حل های خود رو با پیشنهاد مطرح کنند.
انشاء ا... تاپیک به هدف نهایی خود برسه.
موفق باشید.