واضح آرشیو وب فارسی:سایت ریسک: در مورد AutoIt Corovarice 21 اسفند 1389, 12:08سلام دوستان. ببخشید من انجمن AutoIt رو نتونستم پیدا کنم مجبور شدم اینجا مطرح کنم. ما توی MMB وقتی رو منوی Project کلیک می کنیم یه قسمت هست به نام Embedded files که می تونیم فایلی رو به راحتی embed کنیم که همتون هم این رو می دونین و بلدین. ما فایل های embed شده رو هم با <Embedded > فرا خوانی می کنیم. حالا سوالم اینه که میشه توی نرم افزار AutoIt یه فایلی رو embed کرد ؟ اگه میشه باید با چه اسکریپتی فایل رو فراخوانی کنیم ؟ nevercom 21 اسفند 1389, 13:26بله، با استفاده از کد زیر میتونید فایل ها رو به برنامه اضافه کنید: #AutoIt3Wrapper_Res_File_Add= بعنوان مثال: #AutoIt3Wrapper_Res_File_Add = C:WINDOWSMedia ada.wav, SOUND, MYWAV که فرمت پارامتر ورودی به این شکل هست: Filename[,Section [,ResName[,LanguageCode]]] to be added. برای توضیحات تکمیلی، در راهنما به مسیر زیر مراجعه کنید: AutoIt3 HelpFile -> Extra Utilities > AutoIt3Wrapper > Adding icons to the program resource همچنین اگه هنگام کامپایل گزینه ی Compile with Options رو انتخاب کنبد، در پنجره ی باز شده، در تب ResAdd Files میتونید فایلها رو به برنامه اضافه کنید Corovarice 21 اسفند 1389, 13:32#AutoIt3Wrapper_Res_File_Add = C:WINDOWSMedia ada.wav, SOUND, MYWAV خیلی ببخشید. من زیاد وارد نیستم. از Sound,Mywav سر در نیاوردم. من می خوام یه فایل exe رو embed کنم. اون وقت به جای SOUND,MYWAV چی بنویسم ؟ nevercom 21 اسفند 1389, 19:30به فایل پیوستی دقت کنید (Resource.rar) فایل resources.au3 یک UDF هست که برای کار با ریسورس ها نوشته شده، خود UDF بهمراه نمونه ها هم پیوست شده، این هم لینک تاپیک مربوط به این UDF هست: اینجا () برای تست این مثال، یک فایل بنام File1.exe تو همون فولدر قرار بدید و مثال رو کامپایل کنید. #AutoIt3Wrapper_Res_File_Add = File1.exe, rt_rcdata, MyEXE_1 این دایرکتیو برای اضافه کردن فایل بکار برده میشه قبل از هرچیز باید عرض کنم که برای اجرای این مثال حتماً باید AutoIt3, Scite4 و AutoIt3Wrapper ورژن 2.0.1.22 به بالا داشته باشید که همه از سایت AutoIt قابل دانلود هستن. خب قسمت اول این دایرکتیو که مسیر و نام فایل هست، پارامتر دوم نوع فایل هست که برای فایلهای اجرایی از rt_rcdata استفاده کنید، و قسمت سوم هم نام منحصربفردی هست که به فایل اختصاص میدید که از طریق این نام، فایل در دسترس خواهد بود. Corovarice 21 اسفند 1389, 21:43یه دونه فایل embed کردن تو autoit چقدر پیچیدست !! می دونم دارم مزاحم میشم خیلی عذر می خوام... کارایی رو که گفتیم کردم ولی وقتی رو دکمه ی Run EXE کلیک می کنم فایل باز نمیشه!! من فقط می خوام اینطوری بشه که یه فایل EXE ای که در همون فولدر هست و اسمش هم مثلا File1.exe هست embed بشه و همین که فایل compile شده ی autoit رو باز کردیم هیچ صفحه ای ظاهر نشه و فقط فایل باز بشه. من دیروز AutoIt رو نصب کردم. وقتی مثالتون رو دیدم سرم گیج رفت.:shock: مثال ساده ای می تونین پیوست کنین؟ :-?خیلی ببخشید nevercom 21 اسفند 1389, 22:22این کدی هست که نوشتم: #AutoIt3Wrapper_Res_File_Add = File1.exe, rt_rcdata, MyEXE_1 ; Add files to compiled app #include "resources.au3" #include <ButtonConstants.au3> #include <GUIConstant***.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 267, 185, 192, 124) $Button1 = GUICtrlCreateButton("Run EXE", 72, 32, 75, 25, $WS_GROUP) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $EXE1 = @ScriptDir & "ExtractedFile.exe" While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit case $Button1 _Extract() Run($EXE1) EndSwitch WEnd Func _Extract() _ResourceSaveToFile($EXE1, "MyEXE_1", $RT_RCDATA, 0, 1) ; save file to disk EndFunc خط اول همونطور که توضیح دادم فایل رو به برنامه اضافه میکنه (تا اینجاش که هیچ چیز عجیب و غریبی نداشته :دی ) خط بعد یک فایل (سرآمد) رو به برنامه اضافه میکنه که حاوی یک سری توابع هست که کار با Resource ها رو برای ما آسون میکنه (اینم یه بخش ثابته، تا اینجا کد خاصی ننوشتیم، فقط دوتا دستور مشخص !) خطوطی که مشخص کردم هم جهت ساخت ظاهر گرافیکی یا همون GUI بکار میرن که اینم من ننوشتم، یک برنامه ی فرم ساز خودش تولید کرده: #include <ButtonConstants.au3> #include <GUIConstant***.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 267, 185, 192, 124) $Button1 = GUICtrlCreateButton("Run EXE", 72, 32, 75, 25, $WS_GROUP) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### بعد از این، تو خط بعدیش یه متغیر تعریف شده که محل ذخیره و درواقع استخراج شدن فایل embed شده رو مشخص میکنه (ScriptDir@ معادل <SrcDir> در MMB هست) خط بعد هم یک حلقه ی While هست که کنترل رویدادها رو بعهده داره، اینجا دو رویداد تعریف شده، یکی فشردن دکمه ی Close و دیگری کلیک روی دکمه ی موجود در برنامه در رویداد مربوط به دکمه، اول یک تابع بنام ()Extract_ صدا زده میشه و بعد دستور اجرای فایل (فایل استخراج شده) صادر میشه بعد از حلقه هم تعریف تابع صورت گرفته، که درونش از یکی از توابع موجود در فایل سرآمد resources (که همون بالا با کد "include "resources.au3 مشخص کردیم که کیخایم به توابعش دسترسی داشته باشیم) صدا زده میشه که فایل Embed شده رو روی دیسک ذخیره میکنه، پارامتر اول محل ذخیره ی فایل هست، و پارامتر دوم هم اسم فایل Resource که هنگام Embed کردنش بهش اختصاص دادیم. (بقیه ی پارامترها هم نیاز به تغییر نداره) تمام ! حالا با توجه به توضیحاتتون، خلاصه شدش کد زیر هست: #AutoIt3Wrapper_Res_File_Add = File1.exe, rt_rcdata, MyEXE_1 ; Add files to compiled app #include "resources.au3" Global $EXE1 = @ScriptDir & "ExtractedFile.exe" _ResourceSaveToFile($EXE1, "MyEXE_1", $RT_RCDATA, 0, 1) ; save file to disk Run($EXE1) در مورد اجرا نشدنش هم باید عرض کنم که خودم چندین دفعه تستش کردم و مشکلی نداشت، توجه کنید که سه فایل FileAsResource.au3, resources.au3 و File1.exe باید کنار هم باشن تا برنامه بتونه کامپایل بشه، علاوه بر این اون ملزوماتی که گفتم هم باید نصب باشه (AutoIt3, Scite4 و AutoIt3Wrapper ورژن 2.0.1.22 به بالا) سوالی بود در خدمتم سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 590]