SENDKEYS - PROBLEMA NO WINDOWS 8
Amigos, instalei o VB6 no windows 8 e com toda a dificuldade funcionou beleza.
O único problema é que o SendKeys retorna o erro
Run-time error '7' :
Permission Denied
Mudei a chave EnableLUA no registro para 0 mas infelizmente, nada do que eu fiz resolveu.
Alguem tem alguma ideia ?
A versao do Windows 8 é Single Language. Será que se eu mudar a versao do windows, isso se acerta ? Só falta esse detalhe para eu poder trabalhar com esse notebook que ja esta parado ha 1 ano por causa desse problema.
O único problema é que o SendKeys retorna o erro
Run-time error '7' :
Permission Denied
Mudei a chave EnableLUA no registro para 0 mas infelizmente, nada do que eu fiz resolveu.
Alguem tem alguma ideia ?
A versao do Windows 8 é Single Language. Será que se eu mudar a versao do windows, isso se acerta ? Só falta esse detalhe para eu poder trabalhar com esse notebook que ja esta parado ha 1 ano por causa desse problema.
Crie um modulo com o seguinte código
Para chamar a função faça o seguinte
Call SendKeysA(vbKeyTab, True)
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
Public Declare Function SendInput Lib [Ô]user32.dll[Ô] (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Public 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 chamar a função faça o seguinte
Call SendKeysA(vbKeyTab, True)
Já tentou executar seu aplicativo com permissões de Administrador?
PEPE LEGAL,
O [Ô]KNILSSON[Ô] está com um post aberto exatamente com o mesmo problema apesar do caso dele ser VB6 + Win7, veja:
======================================================
COMO CORRIGIR O RUN-TIME ERROR 70 DO VB NO WIN7?
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=440529&pagina=1
Sugeri a ele substituir o SendKey por uma API chamada [Ô]PostMessage[Ô]:
======================================================
Tem outras sugestões lá ... veja se algum serve para você.
Bom ... a Microsoft tem um exemplo para:
- .NET Framework: Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0
- .NET Framework Client Profile: Com suporte em: 4, 3.5 SP1
Veja em:
http://msdn.microsoft.com/pt-br/library/system.windows.forms.sendkeys.send(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
[][ô]s,
Tunusat.
O [Ô]KNILSSON[Ô] está com um post aberto exatamente com o mesmo problema apesar do caso dele ser VB6 + Win7, veja:
======================================================
COMO CORRIGIR O RUN-TIME ERROR 70 DO VB NO WIN7?
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=440529&pagina=1
Sugeri a ele substituir o SendKey por uma API chamada [Ô]PostMessage[Ô]:
======================================================
Public Declare Function PostMessage Lib [Ô]user32[Ô] Alias [Ô]PostMessageA[Ô] (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys [Ô]{tab}[Ô] [ô]13 = Enter Key
PostMessage hwnd, &H100, &HD&, &H1C0001
End If
End Sub
Tem outras sugestões lá ... veja se algum serve para você.
Bom ... a Microsoft tem um exemplo para:
- .NET Framework: Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0
- .NET Framework Client Profile: Com suporte em: 4, 3.5 SP1
Veja em:
http://msdn.microsoft.com/pt-br/library/system.windows.forms.sendkeys.send(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
[ô] Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show([Ô]Click here![Ô])
End Sub
[ô] Use the SendKeys.Send method to raise the Button1 click event
[ô] and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.DoubleClick
[ô] Send the enter key; since the tab stop of Button1 is 0, this
[ô] will trigger the click event.
SendKeys.Send([Ô]{ENTER}[Ô])
End Sub
[][ô]s,
Tunusat.
Obrigado,
sim, eu fiz toda a instalacao como administrador.
O problema nao ocorre no programa compilado , somente no IDE.
Esse problema já aconteceu comigo quando instalei no windows 7 , faz tempo. Na época eu me debati mas acabei resolvendo. O problema é que não lembro o que fiz....
Ocorre que dessa vez não estou tendo a mesma sorte.
Se nada der certo, vou seguir a orientacao de voces e criar a funcao.
Se alguem tiver mais alguma sugestao , fico no aguardo.
Obrigado!
sim, eu fiz toda a instalacao como administrador.
O problema nao ocorre no programa compilado , somente no IDE.
Esse problema já aconteceu comigo quando instalei no windows 7 , faz tempo. Na época eu me debati mas acabei resolvendo. O problema é que não lembro o que fiz....
Ocorre que dessa vez não estou tendo a mesma sorte.
Se nada der certo, vou seguir a orientacao de voces e criar a funcao.
Se alguem tiver mais alguma sugestao , fico no aguardo.
Obrigado!
Cara utiliza a função que passei vai funcionar!
Coloque tudo dentro de um modulo e chame a mesma que vai dar certo!
Coloque tudo dentro de um modulo e chame a mesma que vai dar certo!
Obrigado FILMAN
Acho que a melhor solucao foi essa mesma. Muito obrigado !!
Acho que a melhor solucao foi essa mesma. Muito obrigado !!
Bom se o problema foi resolvido encerre o tópico
Fico grato por ter ajudado!
Fico grato por ter ajudado!
Tópico encerrado , respostas não são mais permitidas