请高手看下后台鼠标移动点击
本帖最后由 windw2 于 2009-11-1 07:19 编辑为了实现鼠标在后台能够移动并点击,并不影响当前自己键盘和鼠标的问题,我在论坛上看了很久,始终理不清头绪,如下程序,请高手帮忙。
#include <PostMessage_UDF.au3>
Run("mspaint.exe") 启动画图板程序
$hwnd=wingethandle("classname=mspaintapp") 获得画图板窗口的句柄
_MouseClick($CtrlHandle, "left", 30,30) 在后台画图板窗口坐标30,30处左键点击
sleep(2000)
_MouseClick($CtrlHandle, "left", 50,30) 在后台画图板窗口坐标50,30处左键点击
sleep(2000)
_MouseClick($CtrlHandle, "left", 60,30) 在后台画图板窗口坐标60,30处左键点击
sleep(2000)
_MouseClick($CtrlHandle, "left", 300,300) 在后台画图板窗口坐标300,300处左键点击
sleep(2000)
_MouseClick($CtrlHandle, "left", 500,300) 在后台画图板窗口坐标500,300处左键点击
sleep(2000)
_MouseClick($CtrlHandle, "left", 600,300) 在后台画图板窗口坐标600,300处左键点击
sleep(2000)
为什么在画图版上一点反应也没有,我用autoit最主要就是为了这个功能,再系统学autoit也觉得太麻烦了,请高手帮下忙,谢谢了! wingethandle("") 谢谢楼上帮忙纠正错误,不过试了下还是不行,可能程序中还有错误,麻烦再看看,谢谢! 抱歉 我是台灣的,兩地口語 不是相同
您是想玩背景滑鼠? 在小畫家嗎?
倘若是我可以引我完整範例給你... 楼上的台湾朋友,能给我范例吗?不甚感谢!可发我邮箱:zrxswfbm@hotmail.com 5# windw2
喔...馬上去寫,30分鐘內交件,內容為
於小畫家中...直線、橫點的畫線(是採集點擊式完成,拖曳式理論上,有可能請自行學習) 麻烦了,不过关键是能实现鼠标的后台移动,点击,而不影响前台的键盘和鼠标的操作,小画家只是为了实验这个功能。 拍謝 跟外掛論壇的人聊開了,一下子忘記...這是抽論壇內的文章,改寫出來的...請您這樣做
一、開啟小畫家
二、執行以下的程式碼
三、點後台執行...
※ 倘若有不OK的地方,關鍵僅有一行
$WinHandle=ControlGetHandle("","","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("","","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 嗯 要把消息发送给 绘图控件 而不是发给窗口 谢谢了,我这就研究调试。 谢谢了,我这就研究调试。
加油..我相信小畫家部份,你有這次範例,可以輕易成功的!
至於sxd的這句「嗯 要把消息发送给 绘图控件 而不是发给窗口」
也或許是我這陣子困境的主因,Autoit3 在沒有完整控件支援下,相容度、實用度,有一定可以降至最低...這也產生
在XP任何標準程式下,玩轉鍵盤、滑鼠,都完美演出...
在遊戲模式下,簡直是殘花敗柳... $WinHandle=ControlGetHandle("","","Afx:1000000:81")
这句的确很难理解,其实我不需要有一个启动界面,我自己可以做个快捷键启动后台鼠标运行,比如pgup启动,pgdn暂停,这功能我可以实现。
只是我不知道$WinHandle怎样定义如果我只是这样:
$WinHandle=wingethandle("")
For $i=1 to 100
_MouseClick (String($WinHandle),"left",$i*10,$i*5)
_MouseClick (String($WinHandle),"left",$i*5,$i*10)
Sleep (10)
Next
但还是没成功,望指教! 前面不好意思,
$WinHandle=ControlGetHandle("","","Afx:1000000:81")
For $i=1 to 100
_MouseClick (String($WinHandle),"left",$i*10,$i*5)
_MouseClick (String($WinHandle),"left",$i*5,$i*10)
Sleep (10)
Next
已经能实现我所要的功能,谢谢各位了! 加油QQ 去結帖吧, 恭喜您畢業了... 準備陷入其他的地獄 这个我也想学.感觉挺有用的
页:
[1]
2