ÏÂÃæÎÒÃÇÀ´½éÉÜÈçºÎʹÓÃAutoITÍê³Éµ¥»ú³ÌÐòµÄ×Ô¶¯»¯²âÊÔ¡£Ê¹ÓÃAutoITÍê³É×ÀÃæÓ¦ÓóÌÐòµÄ×Ô¶¯»¯²âÊÔ£¬×îÖØÒªµÄÊÇÕÒµ½Ê¶±ðGUI¶ÔÏóµÄ·½·¨£¬È»ºóµ÷ÓÃAutoITº¯ÊýÀ´²Ù×ÝËü»ò¶ÁÈ¡ËüµÄÊôÐÔÖµ£¬²¢ÓëÕýÈ·µÄ½á¹û½øÐбȽϡ£AutoITÄÚÖÃÁË´óÁ¿²Ù×÷Windows±ê×¼¿Ø¼þµÄ·½·¨£¬¿ÉÒÔÂú×ãÒ»°ãÓ¦ÓóÌÐòµÄ²âÊÔÐèÇó¡£ÎÒÃÇ»¹¿ÉÒÔͨ¹ýµ÷Óö¯Ì¬¿â»òCOMÀ©Õ¹µÄ·½Ê½À´À©Õ¹AutoITµÄ¹¦ÄÜ¡£

1. ʶ±ð´°¿ÚµÄ·½·¨
±àд×Ô¶¯»¯½Å±¾µÄʱºò£¬Ê×ÏÈÒª½â¾öµÄÒ»¸öÎÊÌâ¾ÍÊÇÈçºÎ£¨ÔÚÖÚ¶à´°¿ÚÖУ©×¼È·Ê¶±ð³öÄ¿±ê´°¿Ú¡£Ò»°ãÀ´Ëµ£¬ÎÒÃdz£°Ñ´°¿ÚµÄ±êÌ⣨Title£©×÷ΪËüµÄʶ±ð·½·¨¡£µ«ÓÐʱºòÖ»¸ø³ö´°¿Ú±êÌ⻹²»¹»£¬»¹ÒªÍ¬Ê±¸ø³ö±êÌâ¼°Îļþ£¨text£©¡£Òª»ñµÃij¸ö´°¿ÚµÄ±êÌâÊǼþºÜ¼òµ¥µÄÊÂÇ飨´ó¶àÊý´°¿ÚÖ±½Ó¾Í¿ÉÒÔ¿´µ½£©£¬¿ÉÒÔʹÓÃAutoItÌṩµÄ´°¿ÚÐÅÏ¢¹¤¾ß£¨AutoIt
Window Info£©×¥È¡¡£´ó¶àÊý´°¿ÚµÄ±êÌâ¶¼ÊÇÏÔ¶øÒ×¼ûµÄ£¬ÀýÈçϵͳ×Ô´øµÄ¼Çʱ¾³ÌÐò£¨notedad.exe£©£¬ËüµÄĬÈϱêÌâÊÇ¡°ÎÞ±êÌ⣼Çʱ¾¡±£¬ÈçͼËùʾ¡£´°¿Ú±êÌâ¼°ÆäÎı¾ÊÇ´óСдÃô¸ÐµÄ£¬°üÀ¨±êµã·ûºÅÔÚÄÚ£¬ÎÒÃDZØÐëÈ·±£ËüÃÇÊÇÍêȫƥÅäµÄ¡£
AutoItµÄ´ó²¿·Ö´°¿Úº¯Êý¶¼Óд°¿Ú±êÌâºÍÎı¾²ÎÊý£¬±ÈÈç˵ÏÂÃæµÄWinWaitActiveº¯Êý¡£Õâ¸öº¯ÊýµÄ¹¦ÄÜÊÇʹ½Å±¾ÔÝÍ£Ö´Ðв¢Ò»Ö±µÈµ½Ö¸¶¨´°¿Ú³öÏÖÇÒ¼¤»îΪֹ¡£
WinWaitActive(¡°´°¿Ú±êÌâ",["´°¿ÚÎı¾"],[³¬Ê±Ê±¼ä]) |
ÆäÖУ¬¡°´°¿Ú±êÌ⡱ÊDZØÐëÖ¸¶¨µÄ²ÎÊý£¬¶ø"´°¿ÚÎı¾"ºÍ"³¬Ê±Ê±¼ä"ÊÇ¿ÉÑ¡²ÎÊý¡£²»¹ý£¬Ò²ÓÐЩº¯ÊýµÄ´°¿ÚÎı¾²ÎÊýÊDZØÐëÖ¸¶¨µÄ£¬Èç¹ûÏëÊ¡ÂÔÕâ¸ö²ÎÊý£¬Ö»ÐëÖ¸¶¨¿Õ×Ö·û´®£¨""£©×÷Ϊ²ÎÊý¼´¿É¡£ÔÚ²ÎÊý´°¿ÚÎı¾ÖÐÖ¸¶¨Ò»¸ö¿Õ×Ö·û´®ÉõÖÁûÓÐÖµ£¨NULL£©£¬Ï൱ÓÚ¸æËßAutoItÈκÎÎı¾¶¼ÊÇÓÐЧµÄ¡£
ÏÂÃæÒÔ¼Çʱ¾´°¿ÚΪÀý˵Ã÷ÉÏÃæÌáµ½µÄº¯ÊýµÄÁ½ÖÖÓ÷¨£º
WinWaitActive(¡°ÎÞ±êÌâ-¼Çʱ¾")
»ò
WinWaitActive(¡°ÎÞ±êÌâ-¼Çʱ¾","") |
2. ´°¿Ú¾ä±ú
AutoItÖеıäÁ¿¿ÉÓÃÀ´´æ´¢´°¿Ú¾ä±ú£¨Windows Handles£©¡£Ëùν´°¿Ú¾ä±úÊÇÖ¸Windows×Ô¶¯·ÖÅä¸øÃ¿¸öд´½¨µÄ´°¿ÚµÄÌØÊâÖµ¡£´°¿Ú¾ä±ú¿ÉÓÃÀ´´úÌæ´°¿Ú±êÌâ²ÎÊý¡£Ê¹Óô°¿Ú¾ä±úÀ´´úÌæ´°¿Ú±êÌâµÄºÃ´¦ÊÇÄܹ»¸ü¼Ó¾«È·µØÊ¶±ð´°¿Ú£¬ÀýÈ磬ÓÐʱºòÎÒÃÇ»áͬʱ´ò¿ªÍ¬Ò»Ó¦ÓóÌÐòµÄ¶à¸ö¸±±¾£¬ÕâЩ´°¿Ú¾ßÓÐÍêÈ«ÏàͬµÄ´°¿Ú±êÌâºÍ´°¿ÚÎı¾£¬Õâʱ¾Í¿ÉÒÔÀûÓô°¿Ú¾ä±úµÄΨһÐÔÀ´×¼È·µØÊ¶±ðËùÖ¸¶¨µÄ´°¿Ú¡£
ºÜ¶àº¯ÊýÈçWinGetHandle¡¢WinListºÍGUICreate¶¼»á·µ»Ø´°¿Ú¾ä±ú£¬Ê¾Àý£º
$handle=WinGetHandle(¡°ÎÞ±êÌâ-¼Çʱ¾¡±)
WinClose($handle)
|
×¢Ò⣺²»¹Üµ±Ç°µÄWinTitleMatchMode±»ÉèÖÃΪºÎÖÖģʽ£¬´°¿Ú¾ä±úʼÖÕ¿ÉÓá£
3. ʶ±ð¿Ø¼þµÄ·½·¨
AutoItÌṩÁËÖ±½Ó²Ù×÷¿Ø¼þµÄ¹¦ÄÜ¡£´°¿ÚÉÏÄÜ¿´µ½µÄ¶«Î÷´ó¶àÊý¶¼ÊÇÒÔÏ¿ؼþÖеÄÒ»ÖÖ£º°´Å¥¡¢Áбí¿ò¡¢Îı¾±à¼¿ò¡¢¾²Ì¬Îı¾µÈ¡£ÀýÈ磬ϵͳ×Ô´øµÄ¼Çʱ¾³ÌÐòµÄÖ÷´°¿ÚÒ²Ö»ÊÇÒ»¸öÏà¶Ô¶øÑԱȽϴóµÄ¡°±à¼¿ò£¨Edit£©¡±¿Ø¼þ°ÕÁË¡£ÕýÒòΪAutoItÌṩÁËÖ±½Ó¶Ô¿Ø¼þ²Ù×÷µÄ¹¦ÄÜ£¬ÎÒÃÇÔÙÒ²²»ÐëҪʹÓÃÄ£Äâ¼ü»÷µÈµÍ¼¶µÄ·½·¨À´²Ù×÷´°¿ÚÁË£¬ÕâʹµÃʵÏÖ¶Ô´°¿Ú²Ù×÷µÄ½Å±¾¸ü¼Ó¿É¿¿¡£
AutoItÖ÷ÒªÖ§³Ö±ê×¼µÄMicroosft¿Ø¼þ¡£ÓÐЩӦÓóÌÐòʹÓÃÁË´óÁ¿µÄ×Ô¶¨Òå¿Ø¼þ£¬ºÜÏñÊDZê×¼µÄMS¿Ø¼þ£¬µ«È´ÎÞ·¨±»½Å±¾³ÌÐòʶ±ð£¬¾ÍÐèÒªÌØ±ðµÄ°ì·¨À´½â¾ö¡£
ÔÚʹÓÃControl¡£¨£©º¯Êýʱ£¬Ò»Ð©¿Ø¼þÃèÊö±ØÐëÌṩControlID¡£Í¨¹ýÕâЩÃèÊö²ÅÄÜÕýȷʶ±ð¿Ø¼þ¡£ÕâЩÃèÊö°üÀ¨£º
ID£¬ÄÚ²¿¿Ø¼þµÄID£»
TEXT£¬¿Ø¼þÎı¾£¬Èç"ÏÂÒ»²½"°´Å¥£»
CLASS£¬ÄÚ²¿¿Ø¼þµÄÀàµÄÃû³Æ£¬Èç"Edit"»ò"Button"£»
INSTANCE£¬Ã¶¾Ù£»
CLASSNN£¬Àà±ðÃû£¬Èç"Edit1"£»
ÒÔÉϵÄÊôÐÔ¿ÉÒÔµ¥¶ÀʹÓã¬Ò²¿ÉÒÔ×éºÏÆðÀ´Ê¹Ó᣾ßÌåʹÓÃÄÄÒ»ÖÖÊôÐÔ£¬Ö÷ÒªÒÀ¾Ý¸öÈËϲ»¶¼°´ÓAutoIt´°¿ÚÐÅÏ¢¹¤¾ßËù»ñµÃµÄÐÅÏ¢ÀàÐÍ¡£Ò»°ã¶øÑÔ£¬×îºÃµÄ·½·¨¾ÍÊÇʹÓÿؼþID£¬µ«Èç¹û¿Ø¼þIDÎÞ·¨»ñµÃ»ò¿¿¿Ø¼þID»¹²»×ãÒÔ±£Ö¤ÄÜʶ±ðÄ¿±ê¿Ø¼þ£¬ÄÇô¾ÍÐëҪʹÓÃÆäËûµÄÊôÐÔ£¬»òÕßÊôÐÔµÄ×éºÏ¡£
ÀýÈ磬·¢ËÍÎı¾µ½¼Çʱ¾µÄµÚ1¸öEdit¿Ø¼þ£º
ControlSend(¡°ÎÞ±êÌâ-¼Çʱ¾¡±,"","[CLASS:Edit;INSTANCE:1]¡±,"ÕâÊÇһЩÎı¾") |
»ò
ControlSend(¡°ÎÞ±êÌâ-¼Çʱ¾","","[CLASSNN:Edit1]¡±,"ÕâÊÇһЩÎı¾") |
»ò
ControlSend(¡°ÎÞ±êÌâ-¼Çʱ¾","","Edit1¡±,"ÕâÊÇһЩÎı¾") |
µ¥»÷¡°ÎҵĴ°¿Ú¡±ÀïÃæµÄ¿Ø¼þ£¬µÃµ½¿Ø¼þID 254£¬¾Í¿ÉÒÔÖ±½ÓʹÓÃID:
ControlClick(¡°ÎҵĴ°¿Ú","","[ID:254]") |
»ò
ControlClick(¡°ÎҵĴ°¿Ú","",254) |
ÀýÈçµ¥»÷µÚ2¸ö°üº¬¡°Íê³É¡±Îı¾µÄ°´Å¥£¬¾ÍʹÓÃ×éºÏ·½·¨£º
ControlClick(¡°ÎҵĴ°¿Ú","","[CLASS:Button;TEXT:¡±Íê³É";INSTANCE:2]") |
Èç¹ûÒª»ñµÃij¸ö¿Ø¼þµÄ¾ä±ú¿ÉʹÓÃControlGetHandleº¯Êý¡£¿Ø¼þ¾ä±úÊÇWindows¸³Óè¿Ø¼þµÄ¶ÀÒ»ÎÞ¶þµÄ±êʶ·û£¬¼´Ã¿¸ö±»´´½¨µÄ¿Ø¼þ¶¼¾ßÓв»Í¬µÄ¾ä±ú¡£Ê¾ÀýÈçÏ£º
$handle=ControlGetHandle(¡°Untitled- Notepad¡±,"","Edit1") |
4. ²Ù×÷´°¿ÚºÍ¿Ø¼þ
È·¶¨ÁË´°¿ÚºÍ¿Ø¼þµÄʶ±ð·½·¨Ö®ºó£¬ÎÒÃǾͿÉÒÔʹÓÃAutoItÌṩµÄº¯ÊýÀ´Íê³É¶Ô´°¿ÚºÍ¿Ø¼þµÄ²Ù×÷¡£³£Óõĺ¯ÊýÈçÏ¡£
¼¤»îÖ¸¶¨µÄ´°¿Ú£¨ÉèÖý¹µãµ½¸Ã´°¿Ú£¬Ê¹Æä³ÉΪ»î¶¯´°¿Ú£©
WinActive("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
¹Ø±ÕÖ¸¶¨´°¿Ú
WinClose("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
ÒÆ¶¯Ö¸¶¨µÄ´°¿Ú»òµ÷Õû´°¿ÚµÄ´óС
WinMove("´°¿Ú±êÌâ","´°¿ÚÎı¾"],X×ø±ê,Y×ø±ê[,¿í¶È,[,¸ß¶È[,ËÙ¶È]]])
ÏÔʾ¡¢Òþ²Ø¡¢×îС»¯¡¢×î´ó»¯»ò»¹Ôij¸ö´°¿Ú
WinSetState("´°¿Ú±êÌâ","´°¿ÚÎı¾",±êÖ¾)
ÏòÖ¸¶¨¿Ø¼þ·¢ËÍÊó±êµã»÷ÃüÁ
ControlClick("´°¿Ú±êÌâ","´°¿ÚÎı¾¡±,¿Ø¼þID[,°´¼ü[,µã»÷´ÎÊý[,X×ø±ê[,Y×ø±ê]]]])
ÏòÖ¸¶¨¿Ø¼þ·¢ËÍÃüÁ
ControlCommand("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID,"ÃüÁî"[,"Ñ¡Ïî"])
ÉèÖÃÊäÈë½¹µãµ½Ö¸¶¨´°¿ÚµÄij¸ö¿Ø¼þÉÏ£º
ControlFocus("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID)
ÏòÖ¸¶¨µÄ¿Ø¼þ·¢ËÍ×Ö·û´®£º
ControlSend("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID,"×Ö·û´®"[,±êÖ¾])
ÐÞ¸ÄÖ¸¶¨¿Ø¼þµÄÎı¾£º
ControlSetText("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID,"ÐÂÎı¾",±êÖ¾)
Ïò¼¤»î´°¿Ú·¢ËÍÄ£Äâ¼ü»÷²Ù×÷£º
Send("°´¼ü"[,±êÖ¾])
Ö´ÐÐÊó±êµã»÷²Ù×÷£º
MouseClick("°´Å¥"[,X×ø±ê,Y×ø±ê[,µã»÷´ÎÊý[,ËÙ¶È]]]¡¡)
Ö´ÐÐÊó±êÍÏ×§²Ù×÷£º
MouseClickDrag("°´Å¥",X1×ø±ê,Y1×ø±ê,X2×ø±ê,Y2×ø±ê[,ËÙ¶È]) |
5.ÑéÖ¤
ÔÚÍê³É²âÊÔÓÃÀýµÄ²Ù×÷²½ÖèÖ®ºó£¬ºÚºÐ²âÊÔ·½·¨Ö÷ÒªÊÇͨ¹ý¼ì²éºÍ±È½ÏÈí¼þµÄÊä³ö½á¹û£¨°üÀ¨½çÃæ¡¢Îļþ¡¢Êý¾ÝµÈ£©À´ÑéÖ¤²âÊԵĽá¹û£¬ÅжÏÈí¼þÊÇ·ñ´æÔÚȱÏÝ¡£Èí¼þ½çÃæµÄ¼ì²éÖ÷ÒªÊǼì²éÈí¼þ´°¿ÚºÍ¿Ø¼þµÄ¸÷ÖÖ״̬¡¢±êÌâ¡¢Îı¾ºÍͼƬµÈÐÅÏ¢£¬²¢½«¼ì²é½á¹ûдÈë×îÖյIJâÊÔ±¨¸æÖУ¬ÒÔ¹©·ÖÎö¡£
5.1 ÑéÖ¤´°¿Ú¡¢¿Ø¼þ״̬³£Óõķ½·¨
»ñÈ¡´°¿Ú¿Ø¼þµÄ×ø±êλÖúʹóСµÈ£º
WinGetPos("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
;ÓÃÓÚ´°¿Ú
ControlGetPos("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID)
;ÓÃÓڿؼþ
»ñÈ¡´°¿Ú¿Ø¼þµÄ״̬£¨°üÀ¨ÊÇ·ñ¿É¼û¡¢ÊÇ·ñ¼¤»î¡¢×î´ó»¯¡¢×îС»¯µÈ£©£º
WinGetSate("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
;ÓÃÓÚ´°¿Ú
ControlCommand("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID,Ñ¡Ïî)
;ÓÃÓڿؼþ
¼ì²é´°¿ÚÊÇ·ñ´æÔÚ
WinExists("´°¿Ú±êÌâ"[,¡±´°¿ÚÎı¾¡±]) |
5.2 ÑéÖ¤´°¿Ú¡¢¿Ø¼þÎı¾³£Óõķ½·¨
»ñÈ¡´°¿ÚµÄÍêÕû±êÌâÃû£º
WinGetTitle("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
»ñÈ¡´°¿ÚÖеÄÎı¾£º
WinGetText("´°¿Ú±êÌâ"[,"´°¿ÚÎı¾"])
»ñÈ¡¿Ø¼þÉϵÄÎı¾£º
ControlGetText("´°¿Ú±êÌâ","´°¿ÚÎı¾",¿Ø¼þID) |
5.3 Ñé֤ͼƬ»òÏÔʾЧ¹ûµÄ³£Óõķ½·¨
AutoItûÓÐÌṩͼÏñ±È½Ïº¯Êý£¬ÐëÒª×Ô¼º¿ª·¢ÏàÓ¦µÄº¯Êý¡£Èç¹û²»×¼±¸¿ª·¢Õâ·½ÃæµÄ¹¦ÄÜ£¬¾ÍÖ»Óн«Òª¼ì²éµÄͼÏñ»òЧ¹ûÓÃ½ØÆÁµÄ·½·¨±£´æÏÂÀ´£¬²¢¸½ÔÚ²âÊÔ±¨¸æÖУ¬ÈòâÊÔÈËԱʺóÈ˹¤·ÖÎö¡£
½ØÈ¡Õû¸öÆÁÄ»»òÖ¸¶¨ÇøÓò£º
_ScreenCapture_Capture("C:\Image1.jpg")
»ò
_ScreenCapture_Capture("C:\Image1.jpg",0,0,796,596)
»ò
_ScreenCapture_CaptureWnd("C:\Image1.jpg",´°¿Ú¾ä±ú) |
ÊÂÀý£º
#include <ScreenCapture.au3>
;ÓÃÀ´±£´æÍ¼ÏñµÄ·¾¶ºÍÎļþÃû
$file="c:\ScreenCapture"&@MON &
@MDAY & @HOUR & @MIN & @SEC&"
.jpg"
_ScreenCapture_Capture($file);²¢±£´æµ½ÎļþÖÐ |
5.4 ÑéÖ¤Îļþ³£Óõķ½·¨
¼ì²éÎļþÊÇ·ñ´æÔÚ£º
FileExists("·¾¶")
»ñÈ¡Îļþ´óС£º
FileGetSize("·¾¶")
»ñÈ¡Îļþ»ù±¾ÊôÐÔ£¨°üÀ¨Ö»¶Á£¬Òþ²ØµÈ£©£º
FileGetAttrib("·¾¶") |
5.5 ÆäËûÑéÖ¤
·µ»Øµ±Ç°Êó±êÖ¸ÕëÐÎ×´µÄID£º
MouseGetCursor()
»ñÈ¡µ±Ç°Êó±êµÄ×ø±êλÖãº
MouseGetPos([dimension]) |
6. ʵÀý
ÏÂÃæÕâ¸ö½Å±¾ÊµÀýÑÝʾÁËÈçºÎ´ò¿ª¼ÆËãÆ÷¡¢ÕÒµ½¼ÆËãÆ÷´°¿Ú¡¢²Ù×÷¼ÆËãÆ÷Íê³É¡°1+2¡±µÄ¼ÆËãºÍÑéÖ¤£¬²¢½«¼ì²éµÄ½á¹ûдÈë²âÊÔ±¨¸æÖС£
½Å±¾ÈçÏ£º
Run("calc.exe")
WinWaitActive("¼ÆËãÆ÷")
ControlClick("¼ÆËãÆ÷","","1")
ControlClick("¼ÆËãÆ÷","","+")
ControlClick("¼ÆËãÆ÷","","2")
ControlClick("¼ÆËãÆ÷","","=")
$Result=ControlGetText("¼ÆËãÆ÷","",403)
if $Result=="3. " Then
FileWriteLine("C:\result.txt","ÕýÈ·£ººÍÆÚÍû½á¹û£³Ò»ÖÂ")
Else
FileWriteLine("C:\result.txt","´íÎó£ººÍÆÚÍû½á¹û£³²»Ò»ÖÂ,ʵ¼Ê½á¹û½á¹ûΪ"&$Result)
EndIf
WinClose("¼ÆËãÆ÷") |
|