【Vegas原创】sendkeys实例

需求:将excel档更新提醒关闭,并另存为a*.xls.

dim wsh
set wsh=wscript.createobject("wscript.shell")
wsh.run 
"每日生產狀況表.xls"
wscript.sleep 
1000
wsh.sendkeys 
"{RIGHT}"
wscript.sleep 
100
wsh.sendkeys 
"{enter}"
wscript.sleep 
100
wsh.sendkeys 
"%EK"
wscript.sleep 
100
wsh.sendkeys 
"%S"
wscript.sleep 
100
wsh.sendkeys 
"{UP}"
wscript.sleep 
100
wsh.sendkeys 
"{enter}"
wscript.sleep 
100
wsh.sendkeys 
"%L"
wscript.sleep 
100
wsh.sendkeys 
"%FA"
wscript.sleep 
100
wsh.sendkeys 
"{Left}"
wscript.sleep 
100
wsh.sendkeys 
"a"
wscript.sleep 
100
wsh.sendkeys 
"{enter}"
wscript.sleep 
100
wsh.sendkeys 
"^Y"
wscript.sleep 
100
wsh.sendkeys 
"%FX"


详解:

Private Sub CmdBack_Click()             '发送多个相同字符以及多个功能键 
TxtStr.SetFocus 
SendKeys 
"{余 10}"True '向文本框中发送10个余字,并等待其执行完毕 
MsgBox "已添加了10个""余""字,要删除咯!"64 '提示信息 
TxtStr.SetFocus '这一句不是一定要,但为了除止意外,比如msgbox时你把焦点移到了TxtStr之外,在程序中,我们要防止任何可能的错误 
SendKeys "{BackSpace 10}" '发送10次Back键 
End Sub 

Private Sub CmdNote_Click()             '发送组合键 
Shell "notepad", vbMaximizedFocus    '调用激活记事本程序 
SendKeys "小丽,天天开心才乖哦!~{F5}"True '发送字符串,其中还有个换行符(在这里可以回车可以当成换行符),注意"~"这个符号代表了回车(Enter),{F5},发送F5到notepad,它将自动插入一个时间 
SendKeys "%{F4}"True '发其发送一个关闭的消息 Alt + F4 
SendKeys "y"True '发送Y表示保存 
Randomize   '初始化随机数生成器 
SendKeys "小丽无敌" & Str(Int(Rnd * 10000)), True '文件名 
SendKeys "~"True '发送回车键 (效果相当于点了确定) 
End Sub 

Private Sub CmdTaskmgr_Click()          '发送功能键 
On Error Resume Next '此处用此语句是为了防止第五行发生错误,比如弹出对话框时,你关闭了任务管理器,就会发生错误.你可以把这一行打上注释之后看效果 
    Shell "taskmgr.exe", vbNormalFocus        '调用任务管理器 
    MsgBox "看好了!要关闭咯!"64     '提示信息,此处注意,老公每个程序里的msgbox 都带了图标哦!这是个必须养成的习惯 
    AppActivate "Windows 任务管理器"  '激活作务管理器窗口,以备发送按键 
    SendKeys "{Esc}"True            '发送 ESC 键,任务管理器收到后将关闭 
    AppActivate Me.Caption '激活程序窗口 
End Sub 

Private Sub CmdText_Click()             '发送普通文本 
TxtStr.SetFocus '使文本框得到焦点 
SendKeys "小丽要天天开心哦{~} {(} 哈哈 {)}" '发送以下字符到文本框,发送字符串不需要特殊的格式,只要在此处输入文本即可 
'
 + ^ % ~ { } ( ) 这些字符是不是允许直接发送的,如确实需要发送,可以将它们用{}括起来 
'
注意,"[]"如果当成字符来发送时,可以不放在{}中,但如果当成按键来发送,就必须放在{}中,一般都放在{}中 
End Sub 


'还有几点小常识,以前老公没给你说过#17 例如我想在msgbox 中显示以下的内容 
'
 小丽,嘿嘿,"这"是一个例子. 
'
注意其中的双引号,如果确实需要英文件双引号,则应该用两个双引号来代替,代码如下 
'
msgbox "小丽,嘿嘿,""这""是一个例子.",64 

'另外在很多程序中,有可以用 Alt + 某键 来激活的菜单及按钮 
'
具体的实现方法是用 "&" 这个符号来实现此功能,即给那些菜单和按钮中的字符加上下划线,例如以下代码 
'
窗体上有一个Command1,当按下 Alt + X 时,可以触发它的单击事件,为何是X?因为它在以下程序中是 "&" 符后的第一个字母 
'
不管放在字符串的中间还是开头结尾,其效果都是一样滴. 
'
如果确实需要在程序中加入"&"这个符号,而不让其它字符带下划线,可以用两个"&"来代替 
'
private sub form_load() 
'
command1.caption = "&XCommandButton" 
'
end sub 
'
private sub command1_click() 
'
msgbox "小丽触发了此按钮的单击事件~  ^_^ ",64 
'
end sub 

 

将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

语法

SendKeys 
string[, wait]

SendKeys 语句的语法具有以下几个命名参数:

string 必需的。字符串表达式,指定要发送的按键消息。 

Wait 可选的。指定等待方式的 BooleandefBooleanDataType@veendf98.chm 值。如果为 
False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。 

说明

每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 
"A" 作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 "ABC" 作为 string

对 SendKeys 来说,加号 (
+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。方括号 ([ ]) 对 SendKeys 来说并不具有特殊意义,但必须将它们放在大括号中。在其它应用程序中,方括号有特殊意义,在出现动态数据交换 (DDE) 的时候,它可能具有重要意义。为了指定大括号字符,请使用 {{} 及 {}}。

为了在按下按键时指定那些不显示的字符,例如 ENTER 或 TAB 以及那些表示动作而非字符的按键


为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 
"+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"

为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。例如,{
LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。

注意 不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTS

C} 发送到任何应用程序.


posted @ 2006-11-06 19:20  李济宏(Amadeus)  阅读(308)  评论(0编辑  收藏  举报