מדריך לאוטואיט - פרק 1
שלום, פה אני יסביר קצת על שפת התיכנות אוטואיט, או באנגלית AutoIt.
מה זה AutoIt? זה שפת תכנות אשר מדמה לחיצות עכבר ולחיצות על המקלדת.
בעיקרון אתם יכולים בסביבות ה15 דקות לבנות תוכנה אוטומטית לחלוטין אשר יכול לעשות המון דברים.
דוגמאות: בתקופה של ה ג'ימייל משין, בניתי בוט (ככה קוראים לתוכנות שעושות דברים שהמשתמש אמור לעשות.)
שיקליק על הכפתור של ההגרלה עד שאני יזכה בהזמנה. לא זכיתי בכלום בגלל שיום אחרי זה סגרו את ההגרלה בגלל רמאות מהסוג הזה (;
יש לאוטואיט המון אפשרויות שימושיות כמו קריאה מקובץ INI. זה לדעתי שפה הכי קלה שיש, אני למדתי אותה רק (כן רק) מהקובץ help
שבא איתה.
אוקיי בוא נתחיל בדברים הרגילים:
משיגים את הבסיס פה
http://www.autoitscript.com/autoit3
פשוט כותבים את הקוד בקובץ טקסט, משנים את הסיומת לau3 וזהו. כמובן שצריך את ההתקנה של האוטואיט כדי להריץ קבצי au3,
ויש גם קומפיילר שמקמפל את הקוד לקובץ EXE כך שגם מי שאין לו אוטואיט יוכל להריץ את התוכנות שלכם.
אוטואיט בא גם עם משהו שנקרא AutoItSpy, זה תוכנה שמראה לך את הקוארדינטות (המיקום על המסך בפיקסלים) של הסמן שלך כדי
שאם תרצה שהתוכנה שלך תלחץ על כפתור כלשהו, אתה תדע איזה קוארדינטות לרשום בקוד.
הנה דוגמא של קוד שבניתי באוטואיט שמטרתו הייתה לשלוח אל הכתובת שבחרת הרבה מאוד דיסקים של SP2. וויתרתי באמצע,
כי אני יצטרך לפחות עוד 800-900 שורות קוד, וזה רק בשביל לבחור את הstate/province הנכון. זה לא חל על ישראל, אז תצפו
לתוכנה שעושה את זה רק לישראל בקרוב .
;Version 0.1b of my Microsoft CD SP2 Spammer! ;Made by NinjaTaiken! Do not steal motherfuckers! www.blizzhackers.com if you wanna meet the almighty NinjaTaiken! ;or spam me at [email protected] ;works only with IE!! Opt("MouseClickDelay", 3000) AutoItSetOption("MouseCoordMode", 0) AutoItSetOption("PixelCoordMode", 0) AutoItSetOption("RunErrorsFatal", 0) Dim $country,$Lang , $EmailNum, $FirstName, $LastName, $Address1, $Address2, $PostalCode, $City, $Phone IniRead ( $country, "settings.ini", "general", "Country" ) IniRead ( $Lang, "settings.ini", "general", "Language" ) IniRead ( $EmailNum, "settings.ini", "general", "EmailNum" ) IniRead ( $FirstName, "settings.ini", "address", "FirstName" ) IniRead ( $LastName, "settings.ini", "address", "LastName" ) IniRead ( $Address1, "settings.ini", "address", "Address1" ) IniRead ( $Address2, "settings.ini", "address", "Address2" ) IniRead ( $PostalCode, "settings.ini", "address", "PostalCode" ) IniRead ( $City, "settings.ini", "address", "City" ) IniRead ( $Phone, "settings.ini", "address", "Phone" ) $Site="http://www.microsoft.com/windowsxp/downloads/updates/sp2/cdorder/en_us/default.mspx" ;Start of actions Run("C:\Program Files\Internet Explorer\IEXPLORE.EXE", "", @SW_MAXIMIZE) sleep(5000) ClipPut( $Site ) sleep(1000) MouseClick("left", 140, 106, 1, 0) sleep(1000) Send( "^V" ) sleep(1000) Send( "{ENTER}" ) sleep(5000) MouseClickDrag( "left", 1016, 262, 1016, 313) sleep(1000) MouseClick("left", 685, 595, 1, 0) Select Case $country=0 MouseClickDrag( "left", 685, 150, 685, 295) MouseClick("left", 353, 525, 1, 0) Case $country=1 MouseClickDrag( "left", 685, 150, 685, 546) MouseClick("left", 407, 402, 1, 0) Case $country=2 MouseClickDrag( "left", 685, 150, 685, 169) MouseClick("left", 421, 526, 1, 0) EndSelect sleep(500) MouseClick("left", 645, 635, 1, 0) Select Case $lang=0 MouseClick("left", 535, 580, 1, 0) Case $lang=1 MouseClick("left", 520, 670, 1, 0) Case $lang=2 MouseClick("left", 500, 690, 1, 0) Case $lang=3 MouseClick("left", 435, 325, 1, 0) Case $lang=4 MouseClick("left", 500, 670, 1, 0) EndSelect
|
בוא נסביר חלק אחרי חלק
Opt("MouseClickDelay", 3000) AutoItSetOption("MouseCoordMode", 0) AutoItSetOption("PixelCoordMode", 0) AutoItSetOption("RunErrorsFatal", 0) Dim $country,$Lang , $EmailNum, $FirstName, $LastName, $Address1, $Address2, $PostalCode, $City, $Phone
|
שורה ראשונה קובעת בעצם את הרווח של הזמן בין קליק לקליק (במשחקים מסוימים, כמו דיאבלו 2, אם אתה מקליק יותר מדי מהר, זורקים אותך מהמשחק. בכל מקרה כדאי לעשות רווח בין ההקלקות)
שורה שניה, שלישית ורביעית הם אפשרויות שלא צריך לדאוג לגביהם בינתיים.
שורה 5 היא בעצם הכרזה של הרבה משתנים שבהם אני ישתמש במהלך הקוד.
תזכרו את המשתנים country וlang. בקובץ INI בעצם קובעים במספר בין אחד ל4 ואחד 3 את המדינה ואת השפה, ודרך זה מקליקים במקום הנכון
IniRead ( $country, "settings.ini", "general", "Country" ) IniRead ( $Lang, "settings.ini", "general", "Language" ) IniRead ( $EmailNum, "settings.ini", "general", "EmailNum" ) IniRead ( $FirstName, "settings.ini", "address", "FirstName" ) IniRead ( $LastName, "settings.ini", "address", "LastName" ) IniRead ( $Address1, "settings.ini", "address", "Address1" ) IniRead ( $Address2, "settings.ini", "address", "Address2" ) IniRead ( $PostalCode, "settings.ini", "address", "PostalCode" ) IniRead ( $City, "settings.ini", "address", "City" ) IniRead ( $Phone, "settings.ini", "address", "Phone" ) $Site="http://www.microsoft.com/windowsxp/downloads/updates/sp2/cdorder/en_us/default.mspx"
|
מה שעשיתי פה בעצם זה לשים בכל המשתנים שהגדרתי בחלק קוד הקודם כל מיני פרטים שהמשתמש מגדיר בקובץ INI מחוץ לתוכנה.
בשורה האחרונה הכנסתי בעצם את הכתובת של האתר לתוך משתנה. טיפ - תמיד כדאי לשים כל פרט במשתנים. חוסך הרבה מאוד זמן ומאמץ
;Start of actions Run("C:\Program Files\Internet Explorer\IEXPLORE.EXE", "", @SW_MAXIMIZE) sleep(5000) ClipPut( $Site ) sleep(1000) MouseClick("left", 140, 106, 1, 0) sleep(1000) Send( "^V" ) sleep(1000) Send( "{ENTER}" ) sleep(5000) MouseClickDrag( "left", 1016, 262, 1016, 313) sleep(1000)
|
שורה ראשונה אני מריץ את התוכנה אקספלורר במצב של maximize, כלומר, בגודל הכי גדול של החלון. חשוב מאוד לעשות את זה ככה!
שורה שנייה זה בעצם השהייה של חמש שניות (היחידות הם של אלפיות השניה, כלומר 1000=שנייה אחת)
ואז אני מעתיק לתוך הקליפבוארד את המשתנה site. זה בעצם אפקט של בחירה של התוכן של המשתנה ואז כמו ללחוץ ctrl+c, להעתיק אותו.
אחרי זה יש השהייה של 1000 שניות ואז לחיצה על הקוארדינטות 140 על 106 פעם אחת. הקוד של הלחיצה של העכבר
הוא MouseClick("button - left or right on the mouse",x coordinate, y coordinate, number of clicks, speed of mouse movement - 0 is instant) |
חשוב!
באוטואיט ספיי, אתם תראו שני סטים של קוארדינטים, אחד desktop, אחד window, תמיד תקחו את הקוארדינטות של window.
שורה אחרי זה יש שוב פעם השהייה של שנייה ואז התוכנה שולחת את הלחיצה ctrl+v, בעצם מדביקה את מה שהעתקנו לקליפבוארד
קודם.^ זה קונטרול.
אחרי זה שוב פעם השהייה קטנה, ואז שליחה של אנטר. למי שכבר הצליח לנחש, מה שקורה פה זה בעצם הרצה של האקספלורר,
לחיצה על הaddress bar ואז הדבקה של האתר שאנחנו רוצים להגיע אליו ואז שליחה של אנטר, מה שבעצם יביא אותנו אל האתר.
לאחר מכן אני בעצם גולל קצת למטה בעזרת אפשרות הדראג, אני פשוט תופס את הגולל, ומושך אותו למטה.
ואז שוב פעם תנומה קצרה.
MouseClick("left", 685, 595, 1, 0) Select Case $country=0 MouseClickDrag( "left", 685, 150, 685, 295) MouseClick("left", 353, 525, 1, 0) Case $country=1 MouseClickDrag( "left", 685, 150, 685, 546) MouseClick("left", 407, 402, 1, 0) Case $country=2 MouseClickDrag( "left", 685, 150, 685, 169) MouseClick("left", 421, 526, 1, 0) EndSelect sleep(500) MouseClick("left", 645, 635, 1, 0) Select Case $lang=0 MouseClick("left", 535, 580, 1, 0) Case $lang=1 MouseClick("left", 520, 670, 1, 0) Case $lang=2 MouseClick("left", 500, 690, 1, 0) Case $lang=3 MouseClick("left", 435, 325, 1, 0) Case $lang=4 MouseClick("left", 500, 670, 1, 0) EndSelect
|
החלק האחרון של הקוד.
שורה ראשונה אני לוחץ על מיקום כלשהו, הפעם זה חץ של תפריט דרופדאון(התפריטים שאתה לוחץ עליהם והוא פותח מן חלון כזה אם אפשרויות.
ואז מגיעה הפונקציה סלקט. מי שיודע קצת C++ מכיר את הפונקציה הזו טוב.
מה שבעצם קורה פה זה שהתוכנה בודקת במשתנה country שאותו לקחנו מהקובץ INI קודם, איזה מספר יש בתוכו.
במקרה הזה, אם אני זוכר טוב (אין לי את הקובץ INI פה.) אם בקובץ INI הגדירו 0, אז הוא בוחר את ישראל, אם הגדירו 1, הוא בוחר את ארצות הברית, אם הגדירו 2, הוא בוחר את קנדה.
אז במקרה שהמשתנה country שווה לאפס, הוא יגלול מקוארדינטה ככה וככה, עד לקוארדינטה ככה וככה ואז יקליק על הקוארדינטה בא נמצאת האפשרות של הארץ הנכונה.
שימו לב שאי אפשר לקרוא את הכיתוב על המסך אבל יש אפשרות לאיתור פיקסלים, כלומר אם אתה רוצה שהוא יקליק על כפתור
עד הופעתו של פיקסל בצבע X במיקום Y יש אפשרות כזו, ואני יסביר עליה פעם הבאה.
וככה אפשר לבחור את הארץ הנכונה.
אותוו הדבר קורה בפונקציית הסלקט השנייה, רק שפה הוא בודק את השפה שהוגדרה.
זהו לפרק הזה, בפרק הבא אני יסביר כמה פונקציות חשובות לעומק, בינתיים תדפדפו לכם בקובץ עזרה של האוטואיט, יש שם פירוט מצוין על השפה.
נ.ב. : עכשיו יש גירסאת בטא של אוטואיט חדש אשר מאפשר לכם ליצור GUI כמו בויזואל בייסיק, רק בלי תוכנה, הכל כותבים בקוד.