فرض کنید که میخواهیم توسط AutoIT اعداد 3 و 8 را بهم ضرب کنیم ، چگونه AutoIT اینکار را انجام میدهد؟
چشم بندی که نیست.
در داخل برنامه AutoIT یک سری بسته های از پیش ساخته شده وجود دارند.هرکدام از این بسته ها فقط بلدند
یک سری کار ها را انجام دهند. فرضا" یکی فقط کار های محاسباتی ریاضی را انجام میدهد و دیگری فقط پنجره
های پیغام را نشان میدهد و الی آخر.
در این مثال پس از درخواست ما ، AutoIT اعداد داده شده توسط ما را به بسته ایکه اعمال ریاضی را انجام
میدهد تحویل داده و آن بسته است که درخواست ما را انجام میدهد.
بیشتر کار هاییکه با AutoIT یا هر زبان برنامه نویسی دیگر انجام میدهیم توسط این بسته ها انجام میگیرند
که در اصطلاح برنامه نویسی آنها را تابع ( Function) مینامند.
قبلا" در قسمتی از بحث های قبلی با تابع MsgBox آشنا شده ایم و دیدیم چگونه کار میکند.بازهم به همان
مثال در سطر زیر توجه کنید تا ببینیم یک تابع چه ساختاری دارد:
شکل کلی یک تابع به این صورت است که اول نام تابع نوشته شده (در این مثالMsgBox ) و پشت سر آن پارامترکد:MsgBox(0,"shirin zaban","Hello My Friend")
های تابع داخل پرانتز های باز و بسته قرار میگیرند.
بعضی تابع ها پارامتری ندارند پس بصورت مثلا" ( )xxx نوشته میشوند. و بعضی دیگر ممکن است 1 یا 2 و یا
بیشتر پارامتر داشته باشند که در مثال بالا ، تابع ما دارای تعداد 3 پارامتر است.
پارامتر ها بایستی با علامت (,) از هم جدا شوند.هروقت میخواهیم در مورد یک تابع حرف صحبت کنیم باید در جلوی
آن علامت پرانتز باز و بسته را قرار دهیم مثلا" ()MsgBox
پارامتر هایی که میتوانیم در برنامه AutoIT بکار ببریم نیز مشخصات مخصوصی دارند که باید رعایت شود و گرنه
برنامه حاصل اجرا نخواهد شد.که در اینجا فقط به یک نکته مهم اشاره میکنم و در حین بحث هایمان اگر به مواردی
بربخوریم باز هم توضیح خواهم داد. و آن اینکه موقعیک میخواهیم یک عبارت را بعنوان پارامتر بکار ببریم باید عبارتمان
را بین علایم " " و یا ' ' قرار دهیم که نمونه اش را در مثال بالا (مثال صفحه پیغام ) دیدیم.
حال دوباره بحثمان را ادامه دهیم .قبلا" با دستور زیر برنامه ماشین حساب را اجرا کردیم:
ما با بکار بردن دستور فوق برای اجرای ماشین حساب ، در حقیقت از تابع ()Run استفاده نمودیم.کد:Run("calc.exe")
این تابع برای به کار انداختن برنامه ها کاملا" خوب عمل میکند ولی یک اشکالی دارد.فرض کنید که میخواهید با
اجرای یک اسکریپت AutoIT دو تا برنامه را اجرا نمایید، مثلا" میخواهیم با اجرای یک دستور autoit اول برنامه
ماشین حساب و بعد برنامه notepad اجرا شوند. برای اینکار دستور زیر را میدهیم:
اگر دستور بالا را اجرا کنید خواهید دید که هردو برنامه تقریبا" همزمان و با هم اجرا میشوند.کد:Run("calc.exe") Run("notepad.exe")
اشکال تابع ()Run همینجاست که دستورات اسکریپت را پشت سرهم اجرا میکند یعنی در این مثال بمحض اینکه
اولین برنامه (ماشین حساب ) اجرا شد فوری دومی (یعنی Notepad ) را هم اجرا مینماید.
و این در این مثال ما اشکال هست. چون ما میخواهیم اجرای برنامه طوری باشد که اول برنامه ماشین حساب اجرا
شود و بعد به محض بسته شدن ماشین حساب ، پشت سرش برنامه Notepad اجرا شود.
بنابر این تابع ()Run کار ما را در این مثال نمیتواند انجام بدهد و ما باید از روش دیگری استفاده کنیم.
تابع دیگری بنام ()RunWait داریم که میتواند خواسته ما را انجام دهد.این تابع برنامه اول را اجرا کرده و صبر میکند تا
برنامه اول بسته شود سپس برنامه بعدی را اجرا مینماید.(دستور زیر را اجرا کنید تا بهتر متوجه شوید.):
با اجرای مثال بالا اول ماشین حساب اجرا میشود ،بعد از اینکه ماشین حساب را بستید برنامه notepad اجرا شدهکد:RunWait('Calc') RunWait('Notepad') MsgBox(64, 'Functions', 'I started Calculator and 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در انجمن های دیگر رسیدیم
و همانطور که در شروع بحث عرض کردم ، ادامه مطلب را به دوستان دیگر می سپارم
موفق باشید
علاقه مندی ها (بوک مارک ها)