توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مختصری در مورد اسکریپت نویسی با Autoit
Magsoud
04-21-2013, 07:07 PM
درود
در چند روز گذشته تعدادی از عزیزان انجمن در چند مورد درخواست فرمودند که بحث اسکریپت نویسی با Autoit را
که مختصری در بعضی از انجمن های دیگر توضیح داده بودم را مجددا" در این انجمن هم شروع کرده و ادامه دهم.
دوستان ارجمند من ، تنها علت حضور ناقابلم در انجمنمان ،پیام ها ، تلفن ها و صحبت های شیرین و لذتبخش شما
عزیزان هست. برای فراموش کردن هزار و یک درد بی درمان که دارم ، به انجمن مراجعه میکنم و از دیدن عبارات شیرین
و با محبت شما ، درد هایم حداقل تا زمانی که در اینجا هستم ، فراموشم میشود و با خواست شما ها انرژی میگیرم
و شوق نوشتن برای شما ها پیدا میکنم.
مسئله ای که در این جا قابل توجه است این است که کامپیوتر هم مثل خیلی از محصولات دیگر ، در زمانی وارد کشورمان
شد . و متاسفانه هیچوقت آنگونه که باید ، مسئولان سعی در آوردن علوم مربوط به اجناس وارداتی نکردند.
و در نتیجه ما بیشتر مصرف کننده ماندیم تا سازنده.
نمیخواهم در این موارد و علل مربوطه صحبت کنم چون همه میدانیم. اما مسئله دیگری هم هست که دوباره قابل
توجه هست و عجیب و حیرت انگیز.
بگذارید این مسئله را اینگونه بگویم: تا به امروز هیچ احدی از هموطنانم ، در رابطه با علم کامپیوتر چیزی به من یاد
نداده است. هرچه را که میدانم مدیون زحمات خود و مدیون افراد بیگانه ای هستم که در سرتاسر اینترنت تجربیات
خود را به اشتراک گذاشته اند.
عجیب است که غیر مسلمان ها دانسته هایشان را رایگان در اختیار خواهانش در اینترنت قرار داده اند و ما که ادعای
مسلمانی داریم ، بیشتر یاد گرفته ایم که دانسته هایمان را مخفی و فقط برای خودمان نگهداریم.
برای نمونه شما بغیر از بنده چند نفر را می شناسید که در همین انجمن خودمان و تمام انجمن های دیگر ،به سوالات
پاسخ داده و یا مطالبی را آموزش میدهند؟
آیا واقعا" کسی جواب سوال ها را نمیداند؟ چرا خیلی ها میدانند ولی دانسته هایشان را نون دونی خودشان دانسته
و بروز نمیدهند. چرا؟ و چرا؟ و هزاران چرای دیگر.
اما جمله آخر، من عاشق وطنم و مردم هستم . من حتی دشمنانم را هم دوست دارم و اگر نیازی داشته باشند و
بتوانم کمکشان میکنم. ولی فراموش نکنید:
من 57 سالمه ، با سکته سنگین قلبی در سال ها قبل ، با هزار درد بی درمان ، خسته و رنجور از یاران و نزدیکان و
نامردی روزگار ، ولی عاشق انسان های صادق ووو
با توجه این موارد، با وجودیکه دلم میخواهد ، ولی امکان ارایه آموزش های سنگین و زمانبر برایم نمانده
لذا در این مبحث فقط مطالب نیمه تمامی را که قبلا" در جا های دیگر توضیح داده بودم را مجددا" تکرار کرده و امیدوارم
دیگر دوستانیکه دستی در کار دارند . مبحث را ادامه دهند.
سعی میکنم یکی دو روزه مطالب مربوطه را در اختیارتان بگذارم
========================
Magsoud
04-21-2013, 07:08 PM
اسکریپت نویسی با Autoit خیلی ساده و شیرین است و این امکان را به کاربر میدهد که خیلی از کار ها را بصورت
اتوماتیک انجام دهد.مطمئنا" دوستانی که رفیق راه باشند حتی پس از یکی دو جلسه آموزش از نتیجه کار راضی و
خرسند خواهند بود.
قیل از شروع بحث اصلی لازم میدانم که نکاتی را گوشزد کنم:
امروزه زبان های برنامه ریزی متنوعی با توانایی های مختلف وجود دارند ولی یک چیز هایی در تمام این زبان ها تقریبا"
مشابه است.با تعدادی از این ساختار های تقریبا" مشابه ، در زبان اسکریپت نویسی Autoit آشنا خواهیم شد و لذا
اگر بعدا" کسی خواست یک زبان برنامه نویسی مثل ++C و غیره یاد بگیرد خواهد دید با یاد گرفتن Autoit خودی خود
خیلی از اصطلاحات و مفاهیم را از قبل میداند در نتیجه سریعتر به قسمت های سنگین برنامه خواهد رسید.
========================
آخرین ورژن برنامه رایگان Autoit را که ورژن 3.3.8.1 است از لینک زیر دانلود و نصب نمایید
AutoIt Downloads - AutoItScript (http://www.autoitscript.com/site/autoit/downloads/)
آموزش اول:
-----------------
تمام دستورات این برنامه را میشود در notepad نوشت فقط موقع ذخیره کردن بایستی آن را با پسوند au3 ذخیره کرد.
بعد از نصب برنامه اگر روی فایلی با پسوند au3 کلیک راست کنید سه گزینه خواهید دید:
Edit Script اگر روی این گزینه کلیک کنید فایل اسکریپت را باز خواهد کرد که بتوانید نوشته های داخلش را خوانده و
یا تغییر دهید.
Run Script اگر روی این گزینه کلیک کنید فایل اسکریپت دستوراتی را که داخلش نوشته شده اجرا خواهد کرد.
Compile Script اگر روی این گزینه کلیک کنید ، برنامه فایل اسکریپت را به یک فایل EXE تبدیل خواهد کرد که قابل اجرا
در کامپیوتر شما و یا در هر کامپیوتر دیگری است که ویندوز دارد .
حال بیاییم اولین دستور را یاد گرفته و اجرا کنیم:
1. برنامه notepad را باز کرده و سطر زیر را در آن تایپ کرده و سپس آن را با نام مثلا" Message.au3 ذخیره کنید:
MsgBox(0, "shirin zaban", "Hello My Friend")
2. روی این فایل کلیک راست کرده و روی گزینه Run Script کلیک کنید. پنجره ای مثل شکل زیر پدیدار خواهد شد.
http://www.picofa.org/images/xcgnmcuy2hikbup7e6na.png (http://www.picofa.org/)
می بینید که راحت میشود پیغام های خود را به صورت گرافیکی به کاربر بدهیم و بعدا" خواهیم دید که میتوانیم بسته به
جواب کاربر اقدامات متفاوتی هم انجام دهیم.
3. حال دوباره روی فایل اسکریپت فوق کلیک راست کرده و روی گزینه Compile Script کلیک کنید. در چند لحظه فایل
اجرایی (exe) اسکریپت شما ساخته خواهد شد و شما در هر کامپیوتری این فایل exe را اجرا کنید پیغام فوق را خواهد داد.
حال بیایید مختصری بیشتر در مورد دستوری که برای دادن پیغام استفاده کردیم (MsgBox ) صحبت کنیم. همانطوریکه دیدید
این دستور دارای سه پارامتر است که داخل پرانتز قرار گرفته اند:
__ این سه پارامتر توسط علامت ویرگول (،) از هم جدا میشوند.
__ اولین پارامتر یک عدد و دو پارامتر بعدی نوشته هستند. همانطور که می بینید نوشته ها بین علایم " " محصور میشوند.
__ پارامتر سوم متن پیغامی است که ما میخواهیم به کاربر نشان دهیم.
__ پارامتر دوم نامی یا عبارتی است که اصطلاحا" عنوان پنجره پیام (Title ) بوده و در بالای پنجره سمت چپ در قسمت آبی
پنجره دیده شده یعنی عنوان پنجره میباشد.
__ پارامتر اول یک عدد است.این عدد میتواند تغییرات زیادی در پنجره ساخته شده برای پیام ایجاد نماید.ما در این مثال از
عدد 0 استفاده کردیم. عدد 0 یعنی پنجره ای درست شود که ساده باشد و یک کلید OK داشته باشد.
حال اگر بجای عدد 0 در مثال بالا از عدد 32 استفاده کنیم پنجره ساخته شده دارای یک آیکن علامت سوال هم خواهد بود.
( به شکل زیر قسمت C نگاه کنید)
http://www.picofa.org/images/1z8h5g7d7j5g87s1g6t7.jpg (http://www.picofa.org/)
اگر در این مثال از عدد 18 استفاده کنیم پنجره حاصل دارای آیکن ایست و نیز دارای سه کلید به نام های Abort, Retry و
Ignore خواهد بود (به شکل بالا قسمت b نگاه کنید) .
با پنجره پیغام خیلی کار ها میشود انجام داد و اعداد مختلفی را هم در اینجا میشود استفاده کرد (نه هر عددی ) که چون
اول کارمان هست فعلا" به این بحث در اینجا خاتمه می دهیم.
Magsoud
04-21-2013, 07:08 PM
توضیح: موقعیکه این آموزش را در انجمن دیگری دنبال میکردم ، در این قسمت یکی از کاربران سوالی پرسید که
که در اینجا سوال و پاسخ را با مختصر تغییرات بصورت یک مطلب جدید عرض میکنم.
سوال : من دوست دارم یک فایل اجرائی داشته باشم که وقتی اجرایش کنم سایت pc4you.ir را باز کند.
جواب : با فرض اینکه ویندوز شما در درایو C بوده و مرورگر فایرفاکس هم در سیستم شما نصب شده ،بصورت زیر
عمل کنید.
برنامه Notepad را باز کرده و سطور زیر را در آن تایپ کرده و سپس آن را با نام مثلا" pc4you.au3 ذخیره کنید:
$my_url = "pc4you.ir"
ShellExecute ("C:\Program Files\Mozilla Firefox\firefox.exe", $my_url)
حال روی فایل pc4you.au3 کلیک راست کرده و روی گزینه Compile Script کلیک کنید. اگر مشکلی در نوشتن
کد نداشته باشید ، چند لحظه بعد فایلی با نام pc4you.exe درست خواهد شد که اگر اجرایش کنید ، مرور گر
فایرفاکس اجرا و صفحه سایت pc4you را باز خواهد کرد.
با کمی دقت در کد های بالا میتوانید آن را مطابق دلخواه خود تغییر بدهید تا سایت های دیگر را باز کند و یا اینکه
بجای فایرفاکس مرورگر دیگری صفحه را باز نماید.
==============================
حال ببینیم چگونه میتوانیم کاری کنیم که برنامه های مورد نظرمان اتوماتیک اجرا شوند.
برای اینکار از دستور Run به صورت زیر استفاده میشود.
فرضا" میخواهیم با اجرای یک فایل ، برنامه ماشین حساب ویندوز اجرا شود . برای اینکار باید اول نام دقیق فایل
اجرایی برنامه ماشین حساب را بدانیم.که برای مثال فایل calc.exe (داخل پوشه system32 ) همان ماشین
حساب ویندوز ایکس پی است.
حال که نام دقیق فایل اجرایی را میدانیم اسکریپت زیر را مینویسم و آن را با نام calculator.au3 ذخیره میکنیم
(توضیح اینکه دستوراتی را که برای انجام کار هایمان می نویسیم اسکریپت نامیده می شوند):
Run("calc.exe")
اکنون اگر روی فایل calculator.au3 کلیک راست کرده و گزینه Compile Script را انتخاب کنیم فایلی بنام
calculator.exe درست خواهد شد که اگر اجرایش کنیم برنامه ماشین حساب ویندوز اجرا خواهد شد.
می بینید کار خیلی ساده است.
حال بیائید یک مقدار بیشتر جلو برویم. فرضا" بیائیم اسکریپتی بنویسیم که هم برنامه notepad را باز کند و هم
اتو ماتیک وار عبارتی را داخل آن بنویسد.
توضیحات این قسمت را بدقت توجه کنید چون روش اتوماتیک کردن اجرای کار ها را با autoit یاد میگیرید که میتوانید
با خیلی از برنامه های مورد علاقه خود انجام دهید.
برای اینکه برنامه notepad اجرا شود اسکریپت زیر را مینویسیم:
Run("notepad.exe")
با این دستور برنامه notepad اجرا خواهد شد.حال ما میخواهیم پس از اجرا مطالبی هم بطور اتوماتیک در آن نوشته
شود.برای اینکار ما از دستوری بنام Send استفاده میکنیم.ولی در اینجا لازم است با چند مطلب قبلا" آشنا باشیم
که ممکن است مقداری گیج کننده باشد.
ببینید وقتی بطور معمولی notepad (یا هر برنامه دیگر ) را اجرا میکنیم از زمان دابل کلیک ما تا زمانیکه notepad
اجرا شده و قابل استفاده شود ، یک زمان کوتاهی طول میکشد و بعد از آن ما میتوانیم داخل برنامه تایپ کنیم.
حال که میخواهیم یک نوشته را توسط autoit بطور اتوماتیک در notepad بنویسیم ،باید نکته بالا را در نظر بگیریم.
یعنی باید بطریقی به autoit بگوییم که اول این مدت زمانی که طول میکشد را منتظر بماند و بعد نوشته مورد نظر
ما را بنویسد.
autoit دستوری برای منتظر شدن دارد ولی این دستور نیاز دارد که بداند باید منتظر چه چیزی باشد.
برنامه مورد نظر ما در این مثال notepad است .اگر وقتیکه notepad اجرا شد به عنوان آن نگاه کنید خواهید دید
که عنوان آن مطابق شکل زیر عبارت است از: Untitled - Notepad
http://www.picofa.org/images/uqa221r4jsalxt28lx8.png (http://www.picofa.org/)
این مشخصه ای هست که برنامه autoit لازم دارد بداند تا بتواند دستور انتظار را اجرا نماید.
لذا به اسکریپتمان سطر زیر را اضافه مینماییم تا منتظر آماده شدن notepad شود:
WinWaitActive("Untitled – Notepad")
با نوشتن عین عبارت موجود که در شکل بالا دیدیم ، در داخل پرانتز دستور فوق ، در حقیقت به برنامه autoit
میگوئیم که باید منتظر باز شدن پنجره ای باشد که عنوان پنجره Untitled – Notepad است. پس با این دستور ،
برنامه در انتظار خواهد نشست تا پنجره ای باز شود که عنوانش Untitled – Notepad باشد و پس از باز شدن
این پنجره دستور سطر بعدی را اجرا خواهد کرد.
تذکر مهم: این دستور به کوچکی یا بزرگی حروف عنوان حساس است یعنی که ما باید عبارتی را که در عنوان
می بینیم دقیقا" مثل خودش بنویسیم و گرنه عمل نخواهد کرد. منظور این است که در عنوان باید حروف بزرگ
و کوچک را کاملا" رعایت کنیم
البته برای اینکه کاربر اشتباه تایپی مرتکب نشود خود برنامه autoit برنامه ای دارد که میتواند این عنوان را اتوماتیک
برایمان مشخص کند.که من دراینجا برای اینکه حجم مطلب زیاد نشود در موردش صحبت نکرده و سعی میکنم بعدا"
عرض کنم.
خوب تا اینجا به autoit گفتیم برنامه notepad را اجرا و تا آماده شدن آن صبر کند . حالا باید به برنامه بگوییم که پس
از دیدن صفحه ای با عنوان گفته شده مدت زمان مثلا" 1000 میلی ثانیه صبر کرده وبعد، عبارتی را ( مثلا" عبارت
Hi Dear Friend . How are you ) را تایپ کند.
برای اینکار به دستورات بالا دستور های زیر را هم اضافه میکنیم:
Sleep(1000)
Send("Hi Dear Friend . How are you?")
پس در کل برای کاریکه میخواستیم باید دستورات زیر را بنویسیم:
Run("notepad.exe")
WinWaitActive("Untitled – Notepad")
Sleep(1000)
Send("Hi Dear Friend . How are you?")
حالا اگر اسکریپت خود را اجرا کنید اتوماتیک وار هم برنامه notepad اجرا شده و هم نوشته مورد نظر شما تایپ
خواهد شد.
من در اینجا برای اینکه مطلب زیاد گیج کننده نشود ،این قسمت آموزش را تمام میکنم.فقط عرض میکنم که
میتوانیم به همین اسکریپت دستورات دیگری هم اضافه کنیم تا بعد از نوشتن سطر یا سطور مورد نظر ما
آن را با نام دلخواه ما ذخیره کرده و برنامه notepad را ببندد. و و و.......
یک توضیح دیگر را هم در اینجا ضروری میدانم که عرض کنم و آن اینکه بنده این قسمت از آموزش را از خودم نگفته
بلکه این قسمت را از فایل راهنمای خود برنامه autoit ترجمه و با مختصر تغییراتی شرح دادم.
تا ادامه بحث
Magsoud
04-21-2013, 07:09 PM
فرض کنید که میخواهیم توسط AutoIT اعداد 3 و 8 را بهم ضرب کنیم ، چگونه AutoIT اینکار را انجام میدهد؟
چشم بندی که نیست.
در داخل برنامه AutoIT یک سری بسته های از پیش ساخته شده وجود دارند.هرکدام از این بسته ها فقط بلدند
یک سری کار ها را انجام دهند. فرضا" یکی فقط کار های محاسباتی ریاضی را انجام میدهد و دیگری فقط پنجره
های پیغام را نشان میدهد و الی آخر.
در این مثال پس از درخواست ما ، AutoIT اعداد داده شده توسط ما را به بسته ایکه اعمال ریاضی را انجام
میدهد تحویل داده و آن بسته است که درخواست ما را انجام میدهد.
بیشتر کار هاییکه با AutoIT یا هر زبان برنامه نویسی دیگر انجام میدهیم توسط این بسته ها انجام میگیرند
که در اصطلاح برنامه نویسی آنها را تابع ( Function) مینامند.
قبلا" در قسمتی از بحث های قبلی با تابع MsgBox آشنا شده ایم و دیدیم چگونه کار میکند.بازهم به همان
مثال در سطر زیر توجه کنید تا ببینیم یک تابع چه ساختاری دارد:
MsgBox(0,"shirin zaban","Hello My Friend")
شکل کلی یک تابع به این صورت است که اول نام تابع نوشته شده (در این مثالMsgBox ) و پشت سر آن پارامتر
های تابع داخل پرانتز های باز و بسته قرار میگیرند.
بعضی تابع ها پارامتری ندارند پس بصورت مثلا" ( )xxx نوشته میشوند. و بعضی دیگر ممکن است 1 یا 2 و یا
بیشتر پارامتر داشته باشند که در مثال بالا ، تابع ما دارای تعداد 3 پارامتر است.
پارامتر ها بایستی با علامت (,) از هم جدا شوند.هروقت میخواهیم در مورد یک تابع حرف صحبت کنیم باید در جلوی
آن علامت پرانتز باز و بسته را قرار دهیم مثلا" ()MsgBox
پارامتر هایی که میتوانیم در برنامه AutoIT بکار ببریم نیز مشخصات مخصوصی دارند که باید رعایت شود و گرنه
برنامه حاصل اجرا نخواهد شد.که در اینجا فقط به یک نکته مهم اشاره میکنم و در حین بحث هایمان اگر به مواردی
بربخوریم باز هم توضیح خواهم داد. و آن اینکه موقعیک میخواهیم یک عبارت را بعنوان پارامتر بکار ببریم باید عبارتمان
را بین علایم " " و یا ' ' قرار دهیم که نمونه اش را در مثال بالا (مثال صفحه پیغام ) دیدیم.
حال دوباره بحثمان را ادامه دهیم .قبلا" با دستور زیر برنامه ماشین حساب را اجرا کردیم:
Run("calc.exe")
ما با بکار بردن دستور فوق برای اجرای ماشین حساب ، در حقیقت از تابع ()Run استفاده نمودیم.
این تابع برای به کار انداختن برنامه ها کاملا" خوب عمل میکند ولی یک اشکالی دارد.فرض کنید که میخواهید با
اجرای یک اسکریپت AutoIT دو تا برنامه را اجرا نمایید، مثلا" میخواهیم با اجرای یک دستور autoit اول برنامه
ماشین حساب و بعد برنامه notepad اجرا شوند. برای اینکار دستور زیر را میدهیم:
Run("calc.exe")
Run("notepad.exe")
اگر دستور بالا را اجرا کنید خواهید دید که هردو برنامه تقریبا" همزمان و با هم اجرا میشوند.
اشکال تابع ()Run همینجاست که دستورات اسکریپت را پشت سرهم اجرا میکند یعنی در این مثال بمحض اینکه
اولین برنامه (ماشین حساب ) اجرا شد فوری دومی (یعنی Notepad ) را هم اجرا مینماید.
و این در این مثال ما اشکال هست. چون ما میخواهیم اجرای برنامه طوری باشد که اول برنامه ماشین حساب اجرا
شود و بعد به محض بسته شدن ماشین حساب ، پشت سرش برنامه Notepad اجرا شود.
بنابر این تابع ()Run کار ما را در این مثال نمیتواند انجام بدهد و ما باید از روش دیگری استفاده کنیم.
تابع دیگری بنام ()RunWait داریم که میتواند خواسته ما را انجام دهد.این تابع برنامه اول را اجرا کرده و صبر میکند تا
برنامه اول بسته شود سپس برنامه بعدی را اجرا مینماید.(دستور زیر را اجرا کنید تا بهتر متوجه شوید.):
RunWait('Calc')
RunWait('Notepad')
MsgBox(64, 'Functions', 'I started Calculator and Notepad')
با اجرای مثال بالا اول ماشین حساب اجرا میشود ،بعد از اینکه ماشین حساب را بستید برنامه notepad اجرا شده
و پس از بستن notepad صفحه پیغام ظاهر خواهد شد. یعنی برنامه سه تا کار مختلف را بترتیب اجرا کرد.
دو تا تابع دیگر هم قبلا" در بحث هایمان با آن ها آشنا شدیم ()WinWait و ()Send که الان بیشتر دلیل استفاده از
آن ها را متوجه میشویم
تابع ()WinWait تا وضعیت مشخصی دستور اسکریپت را منتظر نگهمیدارد. و پس از پیش آمدن آن وضعیت مشخص
دستور بعدی را اجرا میکند.
تابع ()Send کار مورد نظر ما را در جاییکه میخواهیم انجام میدهد.برای مثال با دستورات زیر ، اول Notepad اجرا شده
و بعد دستور ()WinWait صبر میکند تا برنامه Notepad کاملا" آماده تایپ کردن بشود و سپس کار را به سطر بعدی
دستور محول میکند.
در سطر بعد اولین تابع ()Send عباراتی را در Notepad تایپ کرده و بعد بقیه کار را به سطر بعدی محول میکند
در سطر بعد دومین تابع ()Send عباراتی دیگر را در Notepad تایپ میکند
و بعد دیگر دستوری نداده ایم مثلا" میتوانیم دستور بدهیم برنامه Notepad بسته شود و و و ............
Run('Notepad')
WinWait('Untitled - Notepad')
Send('AutoIt is typing text{ENTER}into this window.')
Send('{ENTER} {ENTER}aaaaaaaaaa {ENTER}xxxxxxxxxxxx{ENTER}ddddddddd')
===================
خوب ، عزیزان من ، در اینجا به پایان بحث های بنده در مورد autoitدر انجمن های دیگر رسیدیم
و همانطور که در شروع بحث عرض کردم ، ادامه مطلب را به دوستان دیگر می سپارم
موفق باشید
Magsoud
04-21-2013, 07:09 PM
در لینک زیر چگونگی نصب اتوماتیک و مخفی برنامه WinRar 4.20 توسط autoit توضیح داده شد
نصب و کرک کردن اتوماتیک و مخفی WinRAR 4.20 (http://www.pc4you.ir/thread40996.html#post86324)
vBulletin v4.2.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd.