我正在尝试使用我的VB6应用程序将SendKeys()
命令用于另一个窗口。
我想要的是单击一个按钮,然后在应用程序将某些键发送到该窗口之前有10秒钟转到另一个窗口。我把所有东西都排序了,但出于某种原因我打电话的时候是这样的:
SendKeys ("A")
我收到此错误:
Run-time error '70':
Permission denied
有没有人知道解决这个问题的方法?感谢。
答案 0 :(得分:8)
看看Karl Peterson在Vista下解决这个问题的方法:
答案 1 :(得分:8)
对于Windows 7: 将UAC设置更改为永不通知。
对于Windows 8和10:
将此方法添加到任何模块:
Public Sub Sendkeys(text as variant, Optional wait As Boolean = False)
Dim WshShell As Object
Set WshShell = CreateObject("wscript.shell")
WshShell.Sendkeys cstr(text), wait
Set WshShell = Nothing
End Sub
在Windows 10中它对我很好。
答案 2 :(得分:4)
VB6 SendKeys的替换是WScript.Shell SendKeys,如下所示:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "1{+}"
请参阅MSDN寻求帮助。
答案 3 :(得分:3)
在Windows 7上:
答案 4 :(得分:2)
删除" msvbvm60.dll"来自应用程序的文件
按照以下步骤
- 右键单击应用程序.Exe文件并单击属性
- 单击“兼容性选项卡”
- 单击“在兼容模式下运行此程序并选择Windows” Xp SP2 From It。
- 单击“以管理员身份运行此程序”
- 单击“应用而不是”。
- 删除" msvbvm60.dll"来自应用程序文件夹。
醇>
全部完成,现在您的应用程序开始运行,没有任何错误,如访问被拒绝
答案 5 :(得分:2)
在公共模块中添加:
Public Sub Sendkeys(text$, Optional wait As Boolean = False)
Dim WshShell As Object
Set WshShell = CreateObject("wscript.shell")
WshShell.Sendkeys text, wait
Set WshShell = Nothing
End Sub
这将“覆盖”SendKeys功能
答案 6 :(得分:1)
您可以在模块
中使用此代码Public Sub SendKeyTab(CForm As Form)
On Error Resume Next
Dim G As Single
For G = 0 To CForm .Controls.Count - 1
If CForm .Controls(G).TabIndex = CForm .ActiveControl.TabIndex + 1 Then CForm .Controls(G).SetFocus
Next
End Sub
在每个表单级别
If KeyCode
答案 7 :(得分:0)
问题是关于vb6 IDE和Windows桌面上下文菜单,您将按照此处的描述进行操作:
http://www.vbforums.com/showthread.php?747425-SendKeys-and-Windows-8
主要参考资料如下:
http://www.vbforums.com/showthread.php?745925-RESOLVED-How-to-trigger-the-desktop-context-menu
答案 8 :(得分:0)
使用此API:
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
和
keybd_event keycode, 0, 0, 0 'KEY DOWN
keybd_event keycode, 0, KEYEVENTF_KEYUP, 0 'KEY UP
当密钥代码为32表示空格时,35表示keyend,8表示vbKeyBack等。