Ошибка отклонения разрешения SendKeys () в Visual Basic - PullRequest
10 голосов
/ 22 февраля 2010

Я пытаюсь использовать команду SendKeys() в другом окне с моим приложением VB6.

Мне нужно было нажать кнопку, а затем 10 секунд, чтобы перейти к другому окну, прежде чем приложение отправит некоторые ключи в это окно. Я все отсортировал, но по какой-то причине, когда я звоню что-то вроде этого:

SendKeys ("A")

Я получаю эту ошибку:

Run-time error '70':

Permission denied

Кто-нибудь знает способ обойти это? Благодаря.

Ответы [ 9 ]

8 голосов
/ 22 февраля 2010

Посмотрите, что Карл Петерсон разработал для решения этой проблемы в Vista:

SendInput

8 голосов
/ 23 апреля 2016

Для 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.

4 голосов
/ 12 ноября 2014

Замена для VB6 SendKeys - это WScript.Shell SendKeys, например:

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

См. MSDN для справки.

3 голосов
/ 10 июля 2010

В Windows 7:

  • Открыть панель управления
  • Изменить настройку контроля учетной записи пользователя
  • Изменить на НИКОГДА НЕ УВЕДОМИТЬ
  • Перезагрузите компьютер
2 голосов
/ 11 октября 2015

В общедоступном модуле добавить:

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 голосов
/ 12 мая 2014

Удалить файл "msvbvm60.dll" из приложения

Выполните следующий шаг

  1. Щелкните правой кнопкой мыши приложение. Exe файл и выберите свойство
  2. Нажмите на вкладку «Совместимость»
  3. Нажмите «Запустить эту программу в режиме совместимости и выбрать из нее Windows XP SP2».
  4. Нажмите «Запустить эту программу от имени администратора»
  5. Нажмите наApply Than Ok.
  6. Удалите «msvbvm60.dll» из папки приложения.

Все готово, теперь ваше приложение запускается без ошибок, например, отказ в доступе

1 голос
/ 12 мая 2015

Вы можете использовать этот код в Модуле

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 голосов
/ 17 августа 2015

Используйте этот 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 для ключа, 8 для vbKeyBack и т. Д.

0 голосов
/ 28 июня 2014

Проблема в 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

...