sendkeys为什么无效?

无·法 2010-12-15 01:55:58
有个截图软件的系统热键是Ctrl+Shift+F,我想直接用sendkeys控制,用下面代码无效:
Private Sub Command1_Click()
SendKeys "^+F"
End Sub


然后拿任务管理器试了下也是无效:
Private Sub Command1_Click()
' SendKeys "^%{ESC}"
SendKeys "^%{DEL}"
End Sub
...全文
1846 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lyserver 的回复:]

问题不出要SendKeys,而是窗口没有处于活动状态,代码修改如下:
VB code

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As……
[/Quote]直接测试不通过,不过在sendkeys前加个延时就好了。我的是xp+sp3
很奇怪,这个软件不需要窗口呈活动状态就可以按热键的。看样子sendkeys和直接按键盘差异还是很大很大的。
lyserver 2010-12-16
  • 打赏
  • 举报
回复
以上代码在我这儿是通过了的。
lyserver 2010-12-16
  • 打赏
  • 举报
回复
问题不出要SendKeys,而是窗口没有处于活动状态,代码修改如下:

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetFocusAPI Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long

Sub main()
Dim hwndHyperSnap As Long

hwndHyperSnap = FindWindowEx(0, 0, "HyperSnap 6 Window Class", vbNullString)
If hwndHyperSnap <> 0 Then
BringWindowToTop hwndHyperSnap
SetFocusAPI hwndHyperSnap
SendKeys "^+F"
End If
End Sub
king06 2010-12-15
  • 打赏
  • 举报
回复
用QQ就可以试了... sendkeys可能作用不到系统
无·法 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lyserver 的回复:]

把截图软件名称告诉我,我下班后下载一个试试。另外,如果SendKeys做不到,你可以尝试keybd_event函数。
[/Quote]hypersnap6
3q
lyserver 2010-12-15
  • 打赏
  • 举报
回复
把截图软件名称告诉我,我下班后下载一个试试。另外,如果SendKeys做不到,你可以尝试keybd_event函数。
  • 打赏
  • 举报
回复
哦,明白了
无·法 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 patrickkong 的回复:]

msdn

Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) ' Run Calculator.
AppActivate ReturnValue ' Activate the Calculator.
For I = 1 To 100 ' Set up counting loop.
SendKeys I &a……
[/Quote]这个很久以前就看过&跑过了。这个无需激活目标程序,因为它注册的是系统全局热键。

[Quote=引用 2 楼 king06 的回复:]

SendKeys "^+(F)"
[/Quote]
昨天就试过了,无效。

[Quote=引用 3 楼 lyserver 的回复:]

VB6的SendKeys有时有些问题,比如打开任务管理器,以下代码可以:
Sub main()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^+{ESC}"
End Sub
以下代码却不可以:
Sub main()
Se……
[/Quote]vbs的也试过了,无效。郁闷的了。
lyserver 2010-12-15
  • 打赏
  • 举报
回复
VB6的SendKeys有时有些问题,比如打开任务管理器,以下代码可以:
Sub main()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^+{ESC}"
End Sub
以下代码却不可以:
Sub main()
SendKeys "^+{ESC}"
End Sub
所以你最好使用WScript.Shell中的SendKeys。
king06 2010-12-15
  • 打赏
  • 举报
回复
SendKeys "^+(F)"
  • 打赏
  • 举报
回复
msdn

Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) ' Run Calculator.
AppActivate
ReturnValue ' Activate the Calculator.
For I = 1 To 100 ' Set up counting loop.
SendKeys I & "{+}", True ' Send keystrokes to Calculator
Next I ' to add each value of I.
SendKeys "=", True ' Get grand total.
SendKeys "%{F4}", True ' Send ALT+F4 to close Calculator
适合人群:【学习前提】 1. 具备python3语言基础 【学习人群】 1. 手工测试人员学习UI自动化测试技能 2. 开发人员转岗测试开发岗位 3. 如具有丰富的自动化测经验,本课程可能并不满足你学习计划:1.下载课程中配套的软件资料 2.结合课件中Demo可完成学习任务课程目标:掌握UI自动化测试框架的设计与实现课程简介:UI自动化框架的设计需储备基础知识,方能完成自动化测试框架的实现,如数据驱动、日志、配置文件等AutoUiTestFrame自动化框架的目录结构初步进行规划,目录结构如下:Config 配置文件的目录v  config.ini 配置文件;v  globalconfig.py 获得日志路径、测试用例路径、测试报告路径、测试数据路径;v  Data 测试数据;v  TestData.xlsx 测试数据。Public 公共文件库v  Common 封装的公共的方法n  Commonconfig.py 公共的参数配置:调试过程中的测试数据等;n  DoExcel.py 操作excel(数据驱动);n  Send_mail.py 发送邮件(html);n  ReadConfigIni.py 读取ini格式的配置文件;n  TestCaseInfo.py  测试用例信息;n  Log.py 日志类。设置日志类,其他模块或文件需要日志类时,调用该文件。v  Pages 使用po模式设计的测试页面n  BasePage.py  基类,对一些测试页面公共方法、属性的封装及webdrive一些方法的二次封装;n  Bing.py 测试页面。Report 测试报告v  Log 日志目录n  *****log日志。v  TestReport 测试报告目录n  ***html测试报告。TestCase 测试用例v  TC_bing.py。Run.py  控制测试用例的运行。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧