2010-02-21 840 views
7

我想用我的VB6应用程序使用SendKeys()命令到另一个窗口。VB6 SendKeys()权限被拒绝错误

我想要的是点击一个按钮,然后在应用程序向该窗口发送一些按键之前有10秒钟时间去其他窗口。我把一切都整理,但由于某种原因,当我打电话是这样的:

SendKeys ("A") 

我得到这个错误:

Run-time error '70': 

Permission denied 

有谁知道解决的办法?谢谢。

+0

如果你在Vista上,这可能引起通过用户帐户控制(UAC)。您可以通过关闭UAC来解决这个问题。 – bernie 2010-02-21 22:57:59

回答

8

看看什么卡尔·彼得森动情作为Vista下此修复程序:

SendInput

+0

+1击败了我。我认为这应该可以解决问题 – MarkJ 2010-02-22 10:30:07

+0

+1,这就是我正在建议的。 – 2010-02-22 19:03:03

2

在Windows 7:

  • 打开控制面板
  • 更改用户帐户控制设置
  • 更改为从不通知
  • 重新启动计算机
2

删除“MSVBVM60.DLL”文件从应用

遵循以下步骤

  1. Right Click On The Application .Exe File And Click On Property
  2. Click On Compatibility Tab
  3. Click On Run This Program in Compatibility Mode And Chose Windows Xp SP2 From It.
  4. Click On Run This Program As Administrator
  5. Click On Apply Than Ok.
  6. Delete The "msvbvm60.dll" From The Application Folder.

全部完成,现在你的应用程序开始运行,没有任何错误,如拒绝访问

+0

你的答案拯救了我的一天。 – 2015-11-26 04:34:08

3

置换VB6的SendKeys是WScript.Shell的SendKeys,像这样:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.SendKeys "1{+}" 

MSDN寻求帮助。

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 
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为键,vbKeyBack为8时

+0

欢迎来到SO!尝试提供更多的解释和更好的格式。请参阅[如何回答页面](http://stackoverflow.com/help/how-to-answer)以获取帮助改进答案。 – Madness 2015-08-17 18:28:49

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函数

2

对于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