用vb做一个程序 程序运行后 只做alt+o 这一个动作 求代码 谢谢!

如题所述

采用SendKeys语句:SendKeys "%(o)"追问

请帮我附上详细的代码,谢谢!

追答

不知道具体要求,将这个语句放在合适的事件中就行了,或者放在Main子程序中,不过只有这句应该不会有什么效果,因为alt+o会被提交到自身这程序,通常在这句之前应该要有激活别的窗口或程序的一些语句。

追问

我加了一句 SendKeys "%({TAB})" 行使alt+tab切换窗口的操作 但没有抬起alt+tab键 所以就死在那里了 如何再加一句让alt+tab真的进行窗口切换操作的功能 。另外,如何设置一秒钟的延时 谢谢!

追答

用SendKeys "%({TAB})"不是很好吧,如果是VB程序打开的程序,可以用下面的代码
appH=shell(path&appName) '执行应用程序,返回该应用的任务识别号
AppActivate appH ’激活应用
SendKeys "%(o)" ‘发送按键
如果是其它打开的程序,appH采用窗口标题就好了。也可以采用API函数来激活窗口或向指定窗口发送按键(不需要激活窗口)

追问

是这样子的 需要用vb打开一个已有的exe 在打开的exe软件界面 执行 alt+o 这个操作 谢谢!

追答

按上面说的就好了

追问

Private Sub Form_Load()
Shell "D:\备份录像\备份录像.exe"
SendKeys "%(o)"
End Sub
这个代码的结果是exe打开了 却在vb窗体上执行alt+o

appH=shell(path&appName) 这句提示语法错误 缺少列表分隔符或)

appH=shell(path&appName)
AppActivate appH
这两句加在什么位置 希望能给个完整的程序 谢谢!
我再说一下需求:打开D:\备份录像\备份录像.exe 并在此exe上执行alt+o的操作

谢谢!

追答

将path&appName用你要打开的程序路径及名称替换,如下:
Private Sub Form_Load()
dim appH
appH=Shell("D:\备份录像\备份录像.exe")
if appH0 then
AppActivate appH
SendKeys "%(o)"
else
msgbox "不能打开程序!"
end if
End Sub

追问

再问您一个问题 执行完操作后 如何使form1关闭 谢谢!

追答

在处理完后,加一个END就可以结束本程序运行,以上:
在End Sub 插入一行END
Private Sub Form_Load()
dim appH
appH=Shell("D:\备份录像\备份录像.exe")
if appH0 then
AppActivate appH
SendKeys "%(o)"
else
msgbox "不能打开程序!"
end if
End
End Sub

追问

加了一个End后貌似不执行alt+o这个操作了 是不是时间太快了

另外我要不做if判断 代码如下会有何影响 多谢!!!

Private Sub Form_Load()
dim appH
appH=Shell("D:\备份录像\备份录像.exe")
AppActivate appH
SendKeys "%(o)"
End Sub

追答

不加if也无所谓,主要防止不能打开"备份录像.exe"时防止程序出错。
不执行alt+o:你可以将代码改为SendKeys "%(o)",1 或者在End前加几个doevents试试。

追问

SendKeys "%(o)",1 逗号后边这个1是延时1秒钟的意思吗?

我最终的程序如下 您看还有啥问题没? 哪里容易出错 谢谢!

Private Sub Form_Load()
Dim appH
appH = Shell("D:\备份录像\备份录像.exe")
AppActivate appH
SendKeys "%(o)", 1
End
End Sub

追答

其实不是1,而是true,表示发送后等待按键处理完毕后再返回,默认是false。你可以看一看MSDN,如果没有安装MSDN,可以打开word内嵌的VBA的帮助也可以的。

温馨提示:内容为网友见解,仅供参考
相似回答
大家正在搜