RUN-TIME ERROR 70 PERMISSION DENIED

SIRIOUS 01/08/2013 20:58:17
#426914
Amigos,
derrepente fui checar uma rotina antiga em um de meus projects (tabulação entre
campos teclando <Enter>) e deu o erro acima.
A rotina abaixo sempre funcionou (a propriedade KeyPreview do form é= True).

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys ([Ô]{TAB}[Ô])
KeyAscii = 0
End If
End Sub

Como migrei tempos atrás do XP para o Seven (e tive de fazer uma série de adaptações entre
controles OCX e bibliotecas), tudo vem funcionando a contento. Só quando tentei mudar de
campo via <Enter>, é que percebí o erro (não tinha ainda visto, pois normalmente tabulo pela
tecla <Tab>... (Outra coisa: esse erro só aparece em run-time. Rodando pelo executável, a
instrução funciona normalmente ?!?!)...

O que estaria faltando no meu VB6 para executar essa instrução?
FILMAN 01/08/2013 22:16:34
#426915
Resposta escolhida
Cara seguinte se você executar em modo de desenvolvimento não vai conseguir mesmo! Já sistema compilado em si funciona normalmente!

Porém para contornar esse caso criei um modulo e coloque essa função dentro dele:

Option Explicit

Private Const KEYEVENTF_KEYUP = &H2
Private Const INPUT_KEYBOARD = 1

Private Type KEYBDINPUT
wVk As Integer
wScan As Integer
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type

Private Type GENERALINPUT
dwType As Long
xi(0 To 23) As Byte
End Type

Private Declare Function SendInput Lib [Ô]user32.dll[Ô] (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private Declare Sub CopyMemory Lib [Ô]kernel32[Ô] Alias [Ô]RtlMoveMemory[Ô] (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Function SendKeysA(ByVal vKey As Integer, Optional booDown As Boolean = False)
Dim GInput(0) As GENERALINPUT
Dim KInput As KEYBDINPUT
KInput.wVk = vKey
If Not booDown Then
KInput.dwFlags = KEYEVENTF_KEYUP
End If
GInput(0).dwType = INPUT_KEYBOARD
CopyMemory GInput(0).xi(0), KInput, Len(KInput)
Call SendInput(1, GInput(0), Len(GInput(0)))
End Function


para usar a função faça o seguinte

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeysA vbKeyTab, True
KeyAscii = 0
End If
End Sub


espero ter ajudado
Tópico encerrado , respostas não são mais permitidas