gzkay
发表于 2009-4-19 13:03:40
想不到还有人讨论..其实我在2月份已经研究出来了..的确是很好用..很多占用鼠标的代码都改写了..
ultra95
发表于 2009-5-14 22:06:21
这个UDF是官方的吗
sxd
发表于 2009-5-14 23:18:21
au3里集成的只是简单封装了下postmessage
而这个postmessage_UDF封装的更完善 用于发送消息 最新版本是这里
http://www.shynd.com/scripts/PostMessage_UDF.au3
scott2000
发表于 2009-5-23 11:28:05
postmessage_udf是完全可以的,你把操作对象的Handle搞错了。不用计算器程序,也可以用计事本或WORD试试,我都用成功了,网络游戏中也用成功了。
king0000
发表于 2009-5-23 12:19:18
postmessage_udf是完全可以的,你把操作对象的Handle搞错了。不用计算器程序,也可以用计事本或WORD试试,我都用成功了,网络游戏中也用成功了。
scott2000 发表于 2009-5-23 11:28 http://www.autoitx.com/images/common/back.gif
能详细说下吗??
谢谢~!
scott2000
发表于 2009-5-23 17:25:04
能详细说下吗??
谢谢~!
刚刚现编了个小的演示程序,以NOTEPAD为例,讲述以后台向NOTEPAD空白区域插入文字。
程序代码部分如下:;Author Scott2000
;Date 2009-5-22
;Demonstrate background keypress imitation, send a key value to background control
#include <PostMessage_UDF.au3>
#include <GUIConstants.au3>
#include <guiconstantsex.au3>
#include <WindowsConstants.au3>
#include <GuiButton.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中
$CtrlHandle=ControlGetHandle("","","Edit1")
If $ctrlHandle<1 Then
MsgBox(0,"Error","句柄错误")
GUIDelete()
Exit
EndIf
;后台开始发送按键信息,如果你想观察得更仔细点,可以把循环值设置大一些,SLEEP的值也设置大一些
;这样可以更清楚的体会后台发送的效果,当本程序在发送时,你可以在别的窗口处理别的事务,丝毫不影响
For $i=1 to 10
_SendText(String($CtrlHandle),"9")
Sleep (500)
Next
EndFunc
;关闭GUI的函数
Func Close_Click()
Exit
EndFunc
While 1
Sleep (1000)
WEnd
sanmoking
发表于 2009-6-12 11:42:21
楼上怎么发送功能键?,我用send那样的发送字符发送“{enter}”不行啊,记事本里面直接是
1{enter}2{enter}3{enter}4{enter}5{enter}6{enter}7{enter}8{enter}9{enter}10{enter}
sanmoking
发表于 2009-6-12 11:43:15
局部代码如下:
For $i=1 to 10
_SendText(String($CtrlHandle),$i)
_SendText(String($CtrlHandle),"{enter}")
Sleep (500)
Next
sanmoking
发表于 2009-6-12 12:00:37
知道了,用_SendKeys
king0000
发表于 2009-8-14 17:01:44
刚刚现编了个小的演示程序,以NOTEPAD为例,讲述以后台向NOTEPAD空白区域插入文字。
程序代码部分如下:;Author Scott2000
;Date 2009-5-22
;Demonstrate background keypress imitation, send a key value to...
scott2000 发表于 2009-5-23 17:25 http://www.autoitx.com/images/common/back.gif
感谢赐教,测试成功!
51ak
发表于 2009-11-19 23:18:51
好带星,要收藏。
ebhb
发表于 2010-5-25 20:10:45
能后台取色就好了。