2010-02-21 44 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