刚刚现编了个小的演示程序,以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
|