我想用我的VB6应用程序使用SendKeys()
命令到另一个窗口。VB6 SendKeys()权限被拒绝错误
我想要的是点击一个按钮,然后在应用程序向该窗口发送一些按键之前有10秒钟时间去其他窗口。我把一切都整理,但由于某种原因,当我打电话是这样的:
SendKeys ("A")
我得到这个错误:
Run-time error '70':
Permission denied
有谁知道解决的办法?谢谢。
我想用我的VB6应用程序使用SendKeys()
命令到另一个窗口。VB6 SendKeys()权限被拒绝错误
我想要的是点击一个按钮,然后在应用程序向该窗口发送一些按键之前有10秒钟时间去其他窗口。我把一切都整理,但由于某种原因,当我打电话是这样的:
SendKeys ("A")
我得到这个错误:
Run-time error '70':
Permission denied
有谁知道解决的办法?谢谢。
在Windows 7:
删除“MSVBVM60.DLL”文件从应用
遵循以下步骤
- Right Click On The Application .Exe File And Click On Property
- Click On Compatibility Tab
- Click On Run This Program in Compatibility Mode And Chose Windows Xp SP2 From It.
- Click On Run This Program As Administrator
- Click On Apply Than Ok.
- Delete The "msvbvm60.dll" From The Application Folder.
全部完成,现在你的应用程序开始运行,没有任何错误,如拒绝访问
你的答案拯救了我的一天。 – 2015-11-26 04:34:08
这个问题是关于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
置换VB6的SendKeys是WScript.Shell的SendKeys,像这样:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "1{+}"
见MSDN寻求帮助。
可以在模块
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
使用此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为键,vbKeyBack为8时
欢迎来到SO!尝试提供更多的解释和更好的格式。请参阅[如何回答页面](http://stackoverflow.com/help/how-to-answer)以获取帮助改进答案。 – Madness 2015-08-17 18:28:49
SendKeys语句:的SendKeys “{键名}”
检查:https://msdn.microsoft.com/en-us/library/aa266279(v=vs.60).aspx
http://www.vbforums.com/showthread.php?747425-SendKeys-and-Windows-8 – 2015-08-17 18:03:21
在公共模块添加:
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函数
对于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
如果你在Vista上,这可能引起通过用户帐户控制(UAC)。您可以通过关闭UAC来解决这个问题。 – bernie 2010-02-21 22:57:59