我想用我的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