RUN-TIME ERROR 70 PERMISSION DENIED
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?
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?
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:
para usar a função faça o seguinte
espero ter ajudado
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