|
发表于 2009-10-31 20:51:15
|
显示全部楼层
拍謝 跟外掛論壇的人聊開了,一下子忘記...這是抽論壇內的文章,改寫出來的...請您這樣做
一、開啟小畫家
二、執行以下的程式碼
三、點後台執行...
※ 倘若有不OK的地方,關鍵僅有一行
$WinHandle=ControlGetHandle("[CLASS:MSPaintApp;INSTANCE:1]","","Afx:1000000:81")
#include <PostMessage_UDF.au3>
#include <GUIConstants.au3>
opt("guiOneventMode",1) ;事件模式
$outWindow=GUICreate("Background key test",300,300,50,50) ;創建一個演示窗口
GUISetOnEvent($gui_event_close,"Close_Click",$OutWindow) ;窗口關閉事件
$BtnNotepad=GUICtrlCreateButton("新建一個記事本",50,50,150,25) ;
GUICtrlSetOnEvent($BtnNotepad,"CreateNotepad") ;創建一個記事本
$BtnInsert=GUICtrlCreateButton("後台鍵盤輸入",50,100,180,25)
GUICtrlSetOnEvent($BtnInsert,"InsertKeyValue") ;在上面創建的記事本中輸入字符
GUISetState(@sw_show)
;創建記事本的函數
Func CreateNotepad()
Run("Notepad.exe")
EndFunc
;向創建的記事本中插入字符的函數
Func InsertKeyValue()
;下面這個取得句柄的方法是關鍵,如果自己不知道Class的名字,可以借助 Autoit Window Info
;詳細的信息在第二個選項卡control中
$WinHandle=ControlGetHandle("[CLASS:MSPaintApp;INSTANCE:1]","","Afx:1000000:81")
If $WinHandle<1 Then
MsgBox(0,"Error","句柄錯誤")
GUIDelete()
Exit
EndIf
;後台開始發送按鍵信息,如果你想觀察得更仔細點,可以把循環值設置大一些,SLEEP的值也設置大一些
;這樣可以更清楚的體會後台發送的效果,當本程序在發送時,你可以在別的窗口處理別的事務,絲毫不影響
For $i=1 to 100
_MouseClick (String($WinHandle),"left",$i*10,$i*5)
_MouseClick (String($WinHandle),"left",$i*5,$i*10)
;~ _SendText(String($WinHandle),"9")
Sleep (10)
Next
EndFunc
;關閉GUI的函數
Func Close_Click()
Exit
EndFunc
While 1
Sleep (500)
WEnd |
|