找回密码
 加入
搜索
楼主: gzkay

PostMessage_UDF.au3的问题

[复制链接]
 楼主| 发表于 2009-4-19 13:03:40 | 显示全部楼层
想不到还有人讨论..其实我在2月份已经研究出来了..的确是很好用..很多占用鼠标的代码都改写了..
发表于 2009-5-14 22:06:21 | 显示全部楼层
这个UDF是官方的吗
发表于 2009-5-14 23:18:21 | 显示全部楼层
au3里集成的只是简单封装了下postmessage
而这个postmessage_UDF封装的更完善 用于发送消息 最新版本是这里
http://www.shynd.com/scripts/PostMessage_UDF.au3

评分

参与人数 1贡献 +5 收起 理由
lynfr8 + 5

查看全部评分

发表于 2009-5-23 11:28:05 | 显示全部楼层
postmessage_udf是完全可以的,你把操作对象的Handle搞错了。不用计算器程序,也可以用计事本或WORD试试,我都用成功了,网络游戏中也用成功了。
发表于 2009-5-23 12:19:18 | 显示全部楼层
postmessage_udf是完全可以的,你把操作对象的Handle搞错了。不用计算器程序,也可以用计事本或WORD试试,我都用成功了,网络游戏中也用成功了。
scott2000 发表于 2009-5-23 11:28



能详细说下吗??

谢谢~!
发表于 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("[CLASS:Notepad; INSTANCE:1]","","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

评分

参与人数 2金钱 +10 贡献 +4 收起 理由
lleheaven + 10 谢谢,刚刚学习这个
lynfr8 + 4

查看全部评分

发表于 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}
发表于 2009-6-12 11:43:15 | 显示全部楼层
局部代码如下:

For $i=1 to 10
_SendText(String($CtrlHandle),$i)
_SendText(String($CtrlHandle),"{enter}")
Sleep (500)
Next
发表于 2009-6-12 12:00:37 | 显示全部楼层
知道了,用_SendKeys
发表于 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


感谢赐教,测试成功!
发表于 2009-11-19 23:18:51 | 显示全部楼层
好带星,要收藏。
发表于 2010-5-25 20:10:45 | 显示全部楼层
能后台取色就好了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 16:51 , Processed in 0.095385 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表